springboot/springCloud微服務(wù)注冊中心使用Nacos替換Eureka方案

一、概述

此文用于指導(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方便苇瓣,推薦模式

deployDnsVipMode.jpg

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ù)庫

sql語句源文件

application.properties 配置

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)險

初始狀態(tài)

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)噪叙。查找問題矮锈,解決問題并重新測試,按照階段流程來操作睁蕾。

階段四:流量全切到Nacos集群

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的流量宪塔,回退到階段四。

階段五:Nacos剩余服務(wù)實例上線

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末囊拜,一起剝皮案震驚了整個濱河市某筐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冠跷,老刑警劉巖南誊,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蜜托,居然都是意外死亡抄囚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門盗冷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怠苔,“玉大人,你說我怎么就攤上這事仪糖「趟荆” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵锅劝,是天一觀的道長攒驰。 經(jīng)常有香客問我,道長故爵,這世上最難降的妖魔是什么玻粪? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮诬垂,結(jié)果婚禮上劲室,老公的妹妹穿的比我還像新娘。我一直安慰自己结窘,他們只是感情好很洋,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著隧枫,像睡著了一般喉磁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上官脓,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天协怒,我揣著相機(jī)與錄音,去河邊找鬼卑笨。 笑死孕暇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播妖滔,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼派草,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了铛楣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤艺普,失蹤者是張志新(化名)和其女友劉穎簸州,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歧譬,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡岸浑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瑰步。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矢洲。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缩焦,靈堂內(nèi)的尸體忽然破棺而出读虏,到底是詐尸還是另有隱情,我是刑警寧澤袁滥,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布盖桥,位于F島的核電站,受9級特大地震影響题翻,放射性物質(zhì)發(fā)生泄漏揩徊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一嵌赠、第九天 我趴在偏房一處隱蔽的房頂上張望塑荒。 院中可真熱鬧,春花似錦姜挺、人聲如沸齿税。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽偎窘。三九已至,卻和暖如春溜在,著一層夾襖步出監(jiān)牢的瞬間陌知,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工掖肋, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留仆葡,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像沿盅,于是被迫代替她去往敵國和親把篓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容