一、概述
此文用于指導(dǎo)從Eureka切換成Eureka方案推薦
Nacos介紹與作為注冊中心與Eureka對比鏈接:http://www.reibang.com/p/afd7776a64c6
二最爬、Nacos安裝部署
推薦使用集群部署
2.1集群部署架構(gòu)圖
因此開源的時候推薦用戶把所有服務(wù)列表放到一個vip下面,然后掛到一個域名下面
http://ip1:port/openAPI 直連ip模式,機(jī)器掛則需要修改ip才可以使用慌盯。
http://VIP:port/openAPI 掛載VIP模式掌挚,直連vip即可,下面掛server真實ip僚饭,可讀性不好震叮。
http://nacos.com:port/openAPI 域名 + VIP模式,可讀性好鳍鸵,而且換ip方便苇瓣,推薦模式
2.2 安裝Nacos
可以通過源碼和發(fā)行包兩種方式來獲取 Nacos。
從 Github 上下載源碼方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
下載編譯后壓縮包方式
您可以從 最新穩(wěn)定版本 下載 nacos-server-$version.zip
包偿乖。
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
2.3. 配置集群配置文件
在nacos的解壓目錄nacos/的conf目錄下击罪,有配置文件cluster.conf,請每行配置成ip:port贪薪。(請配置3個或3個以上節(jié)點)
# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848
2.4. 配置 MySQL 數(shù)據(jù)庫
生產(chǎn)使用建議至少主備模式媳禁,或者采用高可用數(shù)據(jù)庫。
初始化 MySQL 數(shù)據(jù)庫
application.properties 配置
2.5. 啟動服務(wù)器
Linux/Unix/Mac
啟動命令(在沒有參數(shù)模式画切,是集群模式):
sh startup.sh
三竣稽、改造內(nèi)容
以SpringCloud項目為例
3.1 maven依賴改造
首先去除Eureka相關(guān)依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
<!-- 這里排除springcloudnacos自帶的nacos clinet-->
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.1.RELEASE</version>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 使用最新版本的的nacos clinet-->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>最新版本</version>
</dependency>
先把eureka相關(guān)依賴刪除,再把spring-cloud-starter-alibaba-nacos里面的nacos-clinet相關(guān)的依賴排除霍弹,使用client對應(yīng)版本的nacos毫别。
3.2 配置文件改造
由于配置中心優(yōu)先級問題,配置中心配置參數(shù)需要寫在bootstrap.properties里面
在bootstrap里增加如下:
spring.cloud.nacos.config.server-addr=127.0.0.1:18847
spring.cloud.nacos.config.namespace=9f288251-7c62-4041-b816-63e1a4b54112
spring.cloud.nacos.config.group=XXXXX
其中server-addr為nacos的地址典格,namespace為nacos控制臺配置的相應(yīng)環(huán)境對應(yīng)的編碼(dev/test/gray/produce)岛宦,涉及到springboot啟動初始化組件的順序,配置中心相關(guān)初始化數(shù)據(jù)必須放在bootstrap.properties
更改application-XXX.properties
spring.cloud.nacos.discovery.server-addr=127.0.0.1:18847
spring.cloud.nacos.discovery.namespace=9f288251-7c62-4041-b816-63e1a4b54112
其中server-addr為nacos的地址耍缴,namespace為nacos控制臺配置的相應(yīng)環(huán)境對應(yīng)的編碼(dev/test/gray/produce)
3.3 更改項目主類注解
更改springboot主類的@EnableEurekaClient
注解砾肺,更改為SpringCould原生注解@EnableDiscoveryClient
3.4 日志文件改造
由于目前Nacos心跳日志等日志較多挽霉,建議把nacos包的日志單獨打印或者打印warn級別以上的,info級別的參考配置如下变汪,指定com.alibaba.nacos日志輸出到目錄${LOG_DIR}/${INFO_DIR}/${app_id}-nacos-info.log
侠坎,也可以配置成warn級別
<!--nacos-->
<appender name="RollingFile-INFO-Nacos-Appender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<OnMatch>ACCEPT</OnMatch>
<OnMismatch>DENY</OnMismatch>
</filter>
<file>${LOG_DIR}/${INFO_DIR}/${app_id}-nacos-info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/${INFO_DIR}/${app_id}-nacos-info.%d{yyyy-MM-dd}.gz</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}]\t${ip}\t${app_id}\t%le\t[%t]\t%lo\t%M\t%L\t[%m]%n</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<appender name ="ASYNC-INFO-Nacos" class= "ch.qos.logback.classic.AsyncAppender">
<!-- 不丟失日志.默認(rèn)如果隊列的80%已滿,則會丟棄TRACT、DEBUG疫衩、INFO級別的日志 -->
<discardingThreshold>0</discardingThreshold>
<queueSize>10240</queueSize>
<includeCallerData>true</includeCallerData>
<appender-ref ref ="RollingFile-INFO-Nacos-Appender"/>
</appender>
<logger name="com.alibaba.nacos" level="INFO" additivity="false">
<appender-ref ref="Console-Appender"/>
四硅蹦、Nacos替換Eureka后的上線方案
4.1 階段一:測試階段
操作步驟:在測試階段,首先搭建Nacos集群闷煤,創(chuàng)建若干個測試demo項目童芹,互相調(diào)用,以確定模板鲤拿。對各服務(wù)進(jìn)行改造假褪,在測試環(huán)境機(jī)器部署各服務(wù),進(jìn)行測試近顷。
驗收標(biāo)準(zhǔn):各中心互相使用feign調(diào)用成功生音,各中心在注冊中心上線下線狀態(tài)以及路由正確性。
應(yīng)急和回滾方案:查找問題窒升,繼續(xù)重試缀遍,有無法解決的問題暫時回滾測試環(huán)境
風(fēng)險分析:無風(fēng)險
4.2 階段二:灰度階段
操作步驟:首先把線上環(huán)境的Nginx對應(yīng)解析去除與Nacos服務(wù)器上gw的映射關(guān)系。對線上服務(wù)器: 進(jìn)行服務(wù)下線操作(停線程池等)并備份饱须,在以上機(jī)器的服務(wù)部署灰度環(huán)境用的nacos注冊中心的包域醇。部署完畢后以Nacos注冊的gw為入口,對服務(wù)進(jìn)行簡單測試蓉媳。(停用線程池譬挚,測試不涉及在線業(yè)務(wù)相關(guān))
驗收標(biāo)準(zhǔn):Nacos集群各中心互相使用feign調(diào)用成功,各中心在注冊中心上線下線狀態(tài)以及路由符合正常邏輯酪呻。涉及微服務(wù)間調(diào)用的功能正常
風(fēng)險分析:Eureka集群承受全部流量减宣,可用性降低低,建議這個階段快速測試玩荠。
應(yīng)急和回滾方案:查找問題漆腌,繼續(xù)重試,如果解決不了問題則下線Nacos集群服務(wù)阶冈,啟動操作步驟里備份的Eureka服務(wù)
4.3 階段三:金絲雀測試
操作步驟:在Nginx入口處分出一小部分流量到Nacos集群的GW并開啟線程池屉凯。觀察Nacos集群中各中心的日志是否有異常情況出現(xiàn)。測試過程中可以逐漸增加到naocs-gw的流量眼溶。觀察一個星期。
驗收標(biāo)準(zhǔn):Nacos集群各中心日志正常晓勇,Nacos微服務(wù)間調(diào)用無異常情況出現(xiàn)堂飞,訂購可以成功灌旧,文件服務(wù)功能正常。
風(fēng)險分析:Nacos集群可能出現(xiàn)不明問題绰筛,最嚴(yán)重的情況回影響Nacos集群服務(wù)之間的調(diào)用
應(yīng)急和回滾方案:如果發(fā)現(xiàn)有嚴(yán)重問題枢泰,馬上聯(lián)系運維切斷Nginx到Nacos集群GW的流量,并關(guān)閉線程池铝噩,即如圖二的集群狀態(tài)衡蚂。回到階段二步驟測試骏庸、驗收或者回滾毛甲。
4.4 階段四:流量全切到Nacos集群
操作步驟:在金絲雀測試之后確定服務(wù)完全穩(wěn)定了,把Nginx的流量全量切到nacos的gw具被,這時候全部的流量通過Naocs集群玻募。觀察若干小時后對原Eureka集群服務(wù)進(jìn)行下線操作(包含停線程池等操作),并備份(相當(dāng)于冷備)一姿。
驗收標(biāo)準(zhǔn):Nacos集群各中心日志正常七咧,Nacos微服務(wù)間調(diào)用無異常情況出現(xiàn),訂購可以成功叮叹,文件服務(wù)功能正常艾栋。
風(fēng)險分析:這個階段Nacos集群為單機(jī)模式承受全部流量◎韧纾可能會有之前未發(fā)現(xiàn)的問題蝗砾,如有異常及時按照應(yīng)急回滾方案操作。建議在流量較少的時候施工
應(yīng)急和回滾方案:如果發(fā)現(xiàn)有處理不了的故障蜂林,馬上聯(lián)系運維啟動Eureka集群遥诉,并把nacos-gw的流量切斷改為把流量代理到eureka-gw,恢復(fù)到階段二的狀態(tài)噪叙。查找問題矮锈,解決問題并重新測試,按照階段流程來操作睁蕾。
4.5 階段五:Nacos剩余服務(wù)實例上線
操作步驟:在原Eureka服務(wù)器上部署Nacos服務(wù)如圖五所示苞笨,待服務(wù)全部起來后,nginx的流量在兩臺gw中負(fù)載均衡子眶。
驗收標(biāo)準(zhǔn):Nacos新增集群和原來的集群各中心日志正常瀑凝,Nacos微服務(wù)間調(diào)用無異常情況出現(xiàn),訂購可以成功臭杰,文件服務(wù)功能正常粤咪。
風(fēng)險分析:暫無,待補充
應(yīng)急和回滾方案:如果發(fā)現(xiàn)有較嚴(yán)重問題渴杆,下線新上線的注冊Nacos的服務(wù)寥枝,切斷到nacos-gw的流量宪塔,回退到階段四。