<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          注冊(cè)中心 Consul 遷移到 Nacos

          共 5497字,需瀏覽 11分鐘

           ·

          2020-10-29 18:47


          近日,國(guó)外的商業(yè)軟件公司HashiCorp在官網(wǎng)宣布:不允許中國(guó)境內(nèi)使用、部署和安裝該企業(yè)旗下的【企業(yè)版】產(chǎn)品和軟件。
          PLEASE NOTE THAT THE SOFTWARE MAY NOT BE USED, DEPLOYED OR INSTALLED IN THE PEOPLE’S REPUBLIC OF CHINA.

          HashiCorp旗下的知名的開(kāi)源軟件有 Consul、Vagrant、Terraform等,

          雖然在最后官方立馬對(duì)文章進(jìn)行了修改和解釋,指出只是因?yàn)閲?guó)內(nèi)管制,不允許使用其公司的 VAULT。但是通過(guò)這件事,還是建議已經(jīng)在使用Consul的公司預(yù)防萬(wàn)一,今天這篇文章就是專門來(lái)解決大家可能擔(dān)心的萬(wàn)一出現(xiàn),通過(guò)Nacos-Sync 把 Consul 平滑遷移到 Nacos。


          遷移方案

          方案一(雙注冊(cè)方案)

          服務(wù)框架在過(guò)度期間將服務(wù)同時(shí)注冊(cè)到 Consul 和 Nacos。過(guò)度完去掉對(duì) Consul 的注冊(cè)和消費(fèi)


          方案二(Nacos-Sync同步方案)

          Nacos-Sync是一個(gè)跨注冊(cè)中心服務(wù)同步組件,支持Zookeeper/Eureka/Consul/Nacos等注冊(cè)中心間服務(wù)同步和遷移。

          下圖展示通過(guò)Nacos ?Sync 完成 Consul 到 Nacos 服務(wù)遷移的過(guò)程。只需配置服務(wù)同步任務(wù),過(guò)度期間服務(wù)雙向同步,新版本升級(jí)連到Nacos即可。


          方案選型

          雙注冊(cè)方案相對(duì)更穩(wěn)定,但是需要多次升級(jí)發(fā)布才能過(guò)度完成。相比之下Nacos-Sync侵入性更低,一次性遷移過(guò)度,也是我們推薦的一個(gè)方案。




          Demo演示

          下面我們通過(guò)一個(gè)簡(jiǎn)單的 Demo 介紹一下怎么用 Nacos-Sync 完成 Consul 到 Nacos 服務(wù)遷移。


          環(huán)境準(zhǔn)備


          本例子包含 Spring-Cloud 將服務(wù)分別注冊(cè)到Consul、Nacos 兩個(gè)注冊(cè)中心互相同步演示


          1. Spring-Cloud 注冊(cè)到 Consul 的服務(wù) 同步到 Nacos

          2. Spring-Cloud 注冊(cè)到 Nacos 的服務(wù) 同步到 Consul


          服務(wù)版本
          Consul1.7.3
          Nacos1.2.1
          Mysql5.7
          Nacos-Sync0.3.7


          本文演示上面的中間件服務(wù)均使用的是Docker Image,下面是docker安裝過(guò)程


          1.Consul 啟動(dòng),這里啟動(dòng)4個(gè)Consul Agent,3個(gè)Server(會(huì)選舉出一個(gè)leader),1個(gè)Client.


          #啟動(dòng)第1個(gè)Server節(jié)點(diǎn),集群要求要有3個(gè)Server,將容器8500端口映射到主機(jī)8900端口,同時(shí)開(kāi)啟管理界面docker run -d --name=consul1 -p 8900:8500 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --bootstrap-expect=3 --client=0.0.0.0 -ui
          #查看啟動(dòng)后的第一個(gè)consul 容器IPdocker exec -it consul1 cat /etc/hosts | grep 172
          #啟動(dòng)第2個(gè)Server節(jié)點(diǎn),并加入集群docker run -d --name=consul2 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 第一個(gè)容器ip
          #啟動(dòng)第3個(gè)Server節(jié)點(diǎn),并加入集群docker run -d --name=consul3 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=true --client=0.0.0.0 --join 第一個(gè)容器ip
          #啟動(dòng)第4個(gè)Client節(jié)點(diǎn),并加入集群docker run -d --name=consul4 -e CONSUL_BIND_INTERFACE=eth0 consul agent --server=false --client=0.0.0.0 --join 第一個(gè)容器ip


          2.啟動(dòng)Nacos server


          $ docker run --name nacos-standalone -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:1.2.1


          3.啟動(dòng)Mysql


          $ docker run --name nacos-sync-db -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=nacos_sync -p 3306:3306 -d  mysql:5.7


          4.啟動(dòng)Nacos-Sync

          下載最新Nacos-Sync Release包,并解壓,進(jìn)入解壓后的目錄,并修改conf/application.properties中的mysql配置


          server.port=8081server.servlet.context-path=/
          spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialectspring.jpa.hibernate.ddl-auto=update

          spring.datasource.url=jdbc:mysql://127.0.0.1:3306/nacos_sync?characterEncoding=utf8spring.datasource.username=rootspring.datasource.password=root


          5.執(zhí)行啟動(dòng)腳本


          $ ./bin/startup.sh restart


          Nacos-Sync 添加集群


          打開(kāi)Nacos-Sync: localhost:8081


          添加Consul集群

          1.選擇 集群配置->新增集群


          添加Nacos集群


          2.選擇 集群配置->新增集群


          添加完成效果




          代碼演示

          創(chuàng)建兩個(gè)Spring Cloud 應(yīng)用分別向Consul和Nacos注冊(cè)服務(wù),并且通過(guò)上面的Nacos-Sync完成Consul和Nacos注冊(cè)中心服務(wù)的相互同步.下面貼出一些關(guān)鍵代碼,具體代碼請(qǐng)參考:https://github.com/paderlol/nacos-sync-example


          通過(guò)Consul注冊(cè)Spring Cloud服務(wù)


          創(chuàng)建一個(gè)Controller服務(wù)


          下面的Controller中, /hello是注冊(cè)在Consul的restful服務(wù),/nacos-hello 是引用的在Nacos注冊(cè)的服務(wù)


          @RestControllerpublic class HelloController {    @GetMapping(value = "/hello")    public String hello() {        return "Hello World from Consul!";    }    @Autowired    private HelloService helloService;    // 注冊(cè)在Nacos注冊(cè)中心的服務(wù)    @GetMapping(value = "/nacos-hello")    public String hello2() {        return helloService.hello();    }}

          啟動(dòng)consul-provider-cloud應(yīng)用


          運(yùn)行 consul-provider-cloud工程下面com.paderlol.nacos.consul.ConsulProviderApplication類, 應(yīng)用端口為18089


          @SpringBootApplication@EnableFeignClientspublic class ConsulProviderApplication {    public static void main(String[] args) {        SpringApplication.run(ConsulProviderApplication.class, args);    }    // 引用Nacos同步過(guò)來(lái)的服務(wù)    @FeignClient(name = "nacos-provider-cloud")    public interface HelloService {        @RequestMapping(value = "/hello", method = RequestMethod.GET)        String hello();    }}

          驗(yàn)證注冊(cè)


          1.可以看到我們的服務(wù)已經(jīng)在Consul注冊(cè)成功了



          2.在瀏覽器輸入: http://localhost:18089/hello 可以看到頁(yè)面返回Hello World from Consul!


          通過(guò)Nacos注冊(cè)Spring Cloud服務(wù)


          創(chuàng)建一個(gè)Controller服務(wù)


          下面的Controller中, /hello是Nacos本身的restful服務(wù),/consul-hello 是引用的在Consul注冊(cè)的服務(wù)


          @RestControllerpublic class HelloController {    @Autowired    private HelloService helloService;    @GetMapping(value = "/consul-hello")    public String hello() {        return helloService.hello();    }    @GetMapping(value = "/hello")    public String hello2() {        return "Hello World from Nacos!";    }}


          啟動(dòng)nacos-provider-cloud

          運(yùn)行 nacos-provider-cloud工程下面com.example.NacosCloudConsulConsumerApplication類, 應(yīng)用端口為18088


          @SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic class NacosCloudConsulConsumerApplication {    public static void main(String[] args) {        SpringApplication.run(NacosCloudConsulConsumerApplication.class, args);    }    @FeignClient(name = "consul-provider-cloud")    public interface HelloService {        @RequestMapping(value = "/hello", method = RequestMethod.GET)        String hello();    }}

          驗(yàn)證注冊(cè)


          1.可以看到我們的服務(wù)已經(jīng)在Nacos注冊(cè)成功了



          2.在瀏覽器輸入: http://localhost:18088/hello 可以看到頁(yè)面返回Hello World from Nacos!


          添加同步任務(wù)


          添加同步任務(wù)


          1.打開(kāi)Nacos-Sync 控制臺(tái),添加同步任務(wù)。
          選擇 服務(wù)同步 -> 新增同步, 如圖


          2.添加完成效果



          打開(kāi)Nacos 控制臺(tái) 查看同步結(jié)果


          打開(kāi)Nacos 控制臺(tái): http://localhost:8848/nacos


          選擇 服務(wù)管理-> 服務(wù)列表 ,如圖


          打開(kāi)瀏覽器: http://localhost:18088/consul-hello ?如圖


          打開(kāi)Consul 控制臺(tái) 查看同步結(jié)果


          打開(kāi)Consul 控制臺(tái): http://localhost:8900/ui/dc1/services



          打開(kāi)瀏覽器: http://localhost:18089/nacos-hello ?如圖




          總結(jié)


          從上面的演示中,我們可以看到Nacos-Sync已經(jīng)可以支持Nacos和Consul的Spring Cloud應(yīng)用的雙向同步,可以很好的在Spring Cloud中支持Consul平滑遷移到Nacos應(yīng)用.


          稍微美中不足的暫時(shí)還沒(méi)支持一鍵批量遷移,現(xiàn)在的服務(wù)同步,基本都需要建立一個(gè)服務(wù)維度的服務(wù),后面陸續(xù)也會(huì)支持,也歡迎社區(qū)的小伙伴一起參與共建。


          尼采:那些殺不死你的,終將使你變得更強(qiáng)大!



          關(guān)于作者張龍 Nacos PMC,Github ID:paderlol,長(zhǎng)沙蜜獾信息科技有限公司

          【墻裂推薦】

          專注于「開(kāi)發(fā)者」綜合成長(zhǎng)的深度星球
          限時(shí)優(yōu)惠進(jìn)行中

          最近熱門內(nèi)容回顧? ?#技術(shù)人系列



          下方二維碼關(guān)注我

          互聯(lián)網(wǎng)草根,堅(jiān)持分享技術(shù)創(chuàng)業(yè)產(chǎn)品心得和總結(jié)~



          點(diǎn)擊“閱讀原文”,領(lǐng)取 2020 年最新免費(fèi)技術(shù)資料大全

          ↓↓↓?
          瀏覽 114
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人免费视频夜夜撸 | 国产高清毛片 | 一级黄色A片免费看 | 亚洲一在线 | 亚洲欧美性爱在线视频 |