使用MSE的Nacos注冊中心
本地開發(fā)的Spring Cloud應(yīng)用或者Dubbo應(yīng)用托管到Serverless 應(yīng)用引擎 SAE(Serverless App Engine)時,您可以使用SAE的注冊中心,也可以使用MSE托管的注冊中心。本文介紹如何搭建MSE的Nacos服務(wù)注冊中心,并將應(yīng)用部署在SAE進行托管。
前提條件
已創(chuàng)建專有網(wǎng)絡(luò),并確保網(wǎng)絡(luò)可用。具體操作,請參見創(chuàng)建和管理專有網(wǎng)絡(luò)。
執(zhí)行應(yīng)用程序前,確保Nacos注冊中心的訪問端口(例如8848)已添加至安全組。具體操作,請參見添加安全組規(guī)則。
SDK 版本號
配置中心
注冊中心
nacos-client-1.0.0.jar
PASS
PASS
nacos-client-1.0.0-RC1.jar
FAIL
FAIL
nacos-client-1.0.0-RC2.jar
FAIL
FAIL
nacos-client-1.0.0-RC3.jar
FAIL
FAIL
nacos-client-1.0.0-RC4.jar
PASS
FAIL
nacos-client-1.0.1.jar
PASS
PASS
nacos-client-1.1.0.jar
PASS
PASS
nacos-client-1.1.1.jar
PASS
PASS
nacos-client-1.1.2.jar
PASS
PASS
nacos-client-1.1.3.jar
PASS
PASS
nacos-client-1.1.4.jar
PASS
PASS
nacos-client-1.2.0.jar
PASS
PASS
nacos-client-1.2.0-beta.0.jar
PASS
PASS
nacos-client-1.2.0-beta.1.jar
PASS
PASS
nacos-client-1.2.1.jar
PASS
PASS
nacos-client-1.3.0.jar
PASS
PASS
nacos-client-1.3.1.jar
PASS
PASS
nacos-client-1.3.1-BETA.1.jar
PASS
PASS
nacos-client-1.3.1-BETA.jar
PASS
PASS
nacos-client-1.3.2.jar
PASS
PASS
nacos-client-1.3.3.jar
PASS
PASS
nacos-client-1.4.0.jar
PASS
PASS
nacos-client-1.4.0-BETA.jar
PASS
PASS
nacos-client-1.4.1.jar
PASS
PASS
nacos-client-1.4.2.jar
PASS
PASS
nacos-client-1.4.3.jar
PASS
PASS
nacos-client-1.4.4.jar
PASS
PASS
nacos-client-1.4.5.jar
PASS
FAIL
nacos-client-1.4.6.jar
PASS
PASS
nacos-client-1.4.7.jar
PASS
PASS
nacos-client-1.4.8.jar
PASS
PASS
nacos-client-2.0.0.jar
FAIL
PASS
nacos-client-2.0.0-ALPHA.1.jar
FAIL
FAIL
nacos-client-2.0.0-ALPHA.2.jar
FAIL
FAIL
nacos-client-2.0.0-BETA.jar
FAIL
PASS
nacos-client-2.0.1.jar
FAIL
PASS
nacos-client-2.0.2.jar
PASS
PASS
nacos-client-2.0.3.jar
PASS
PASS
nacos-client-2.0.4.jar
PASS
PASS
nacos-client-2.1.0.jar
PASS
FAIL
nacos-client-2.1.0-BETA.jar
PASS
FAIL
nacos-client-2.1.1.jar
PASS
FAIL
nacos-client-2.1.2.jar
PASS
PASS
nacos-client-2.2.0.jar
PASS
PASS
nacos-client-2.2.0-BETA.jar
PASS
PASS
nacos-client-2.2.1.jar
PASS
PASS
nacos-client-2.2.1-RC.jar
PASS
PASS
nacos-client-2.2.2.jar
PASS
PASS
nacos-client-2.2.3.jar
PASS
PASS
nacos-client-2.2.4.jar
PASS
PASS
nacos-client-2.3.0.jar
PASS
PASS
nacos-client-2.3.0-BETA.jar
PASS
PASS
nacos-client-2.3.1.jar
PASS
PASS
nacos-client-2.3.2.jar
FAIL
PASS
nacos-client-2.3.3.jar
FAIL
PASS
nacos-client-2.4.0.jar
PASS
PASS
nacos-client-2.4.0-BETA.jar
FAIL
PASS
nacos-client-2.4.1.jar
PASS
PASS
nacos-client-2.4.2.jar
PASS
PASS
MSE中存在Nacos SDK限制使用版本。為了您微服務(wù)系統(tǒng)的穩(wěn)定性,建議您避開Nacos SDK限制使用版本。如果您的業(yè)務(wù)已經(jīng)依賴了這些版本,MSE也針對這些版本可能出現(xiàn)的風(fēng)險提供了對應(yīng)的建議和解決方案。
重要新購買的Nacos引擎實例默認關(guān)閉鑒權(quán)功能,建議在購買并測試完成后,開啟鑒權(quán)并關(guān)閉公網(wǎng)白名單,以保證實例的安全性。具體操作,請參見Nacos Client訪問鑒權(quán)和設(shè)置白名單。
背景信息
某創(chuàng)業(yè)公司現(xiàn)在需要將微服務(wù)應(yīng)用托管至SAE,期望使用MSE Nacos,不使用SAE內(nèi)置注冊中心。
如果是集群部署,請參見集群部署說明。
當您的微服務(wù)應(yīng)用較多時,注冊中心按推薦程度由高到低依次排序如下:
商業(yè)版的服務(wù)注冊中心(MSE Nacos)
自建服務(wù)注冊中心
SAE內(nèi)置服務(wù)注冊中心
使用自建Nacos作為應(yīng)用服務(wù)發(fā)現(xiàn)、配置管理等功能,您需要購買相應(yīng)的資源進行搭建和維護,耗時耗力。使用MSE構(gòu)建的Nacos集群,您僅需關(guān)注Nacos的構(gòu)建位置、版本、網(wǎng)絡(luò)和規(guī)格,不必關(guān)注Nacos的構(gòu)建和維護,更加專注于業(yè)務(wù)本身的實現(xiàn)。
步驟一:購買并構(gòu)建Nacos引擎
關(guān)于如何在MSE上為應(yīng)用創(chuàng)建Nacos引擎的具體操作,請參見創(chuàng)建Nacos引擎。
購買的Nacos注冊中心,盡量與SAE應(yīng)用使用同一個VPC,或者使用其他方式保持網(wǎng)絡(luò)互通。
步驟二:服務(wù)注冊與發(fā)現(xiàn)
Nacos啟動后,服務(wù)注冊與發(fā)現(xiàn)功能需要在應(yīng)用側(cè)指定服務(wù)注冊中心進行操作。應(yīng)用程序執(zhí)行后,系統(tǒng)會依據(jù)所設(shè)服務(wù)注冊中心,自動進行服務(wù)注冊與發(fā)現(xiàn)。
執(zhí)行應(yīng)用程序前,請確保您Nacos注冊中心的訪問端口(例如8848)已添加至您的安全組。
在服務(wù)應(yīng)用側(cè)指定注冊中心,并運行Provider和Consumer應(yīng)用。
分別打開src\main\resources路徑下的application.properties文件,指定Nacos Server的IP地址。
當使用MSE的Nacos注冊中心時,您可以登錄MSE注冊配置中心管理控制臺,在實例列表頁面,單擊目標實例。然后在目標實例的基礎(chǔ)信息頁面,獲取注冊中心的內(nèi)網(wǎng)地址。
Provider
修改前:
spring.application.name=service-provider server.port=18081 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/
修改后:
spring.application.name=service-provider server.port=18081 spring.cloud.nacos.discovery.server-addr=192.168.XX.XX:8848 # 替換為您購買的Nacos注冊中心的地址,例如mse:**********:8848。
Consumer
修改前:
spring.application.name=service-consumer server.port=18082 eureka.client.serviceUrl.defaultZone=http://127.0.0.1:8761/eureka/
修改后:
spring.application.name=service-consumer server.port=18082 spring.cloud.nacos.discovery.server-addr=192.168.XX.XX:8848 # 替換為您購買的Nacos注冊中心的地址,例如mse:**********:8848。
步驟三:應(yīng)用托管至SAE
將本地服務(wù)Provider和Consumer應(yīng)用程序編譯為WAR包、JAR包或者鏡像,部署到SAE并按需選擇以下方式連接Nacos。具體操作,請參見以下文檔:
方式一:配置服務(wù)注冊發(fā)現(xiàn)
SAE提供Java微服務(wù)自動尋址的Nacos Server能力,您可以通過SAE的服務(wù)注冊發(fā)現(xiàn)功能配置。具體操作,請參見使用SAE內(nèi)置Nacos。
方式二:配置啟動參數(shù)
通過配置啟動參數(shù)的方式時,您需要確認以下內(nèi)容。
確保SAE的網(wǎng)絡(luò)與MSE Nacos的網(wǎng)絡(luò)互通。
建議在部署應(yīng)用時,使用鏡像或者JAR包方式,并配置啟動參數(shù)
-Dnacos.use.endpoint.parsing.rule=false
和-Dnacos.use.cloud.namespace.parsing=false
。重要啟動參數(shù)需要放在
-jar
之前,否則可能會導(dǎo)致無法使用非SAE自帶的注冊中心。如果采用鏡像方式,請將
-Dnacos.use.endpoint.parsing.rule=false
和-Dnacos.use.cloud.namespace.parsing=false
配置在鏡像文件的程序啟動命令中。Docker鏡像制作方法,請參見制作Java鏡像。示例代碼如下:
RUN echo 'eval exec java -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar $CATALINA_OPTS /home/admin/app/hello-edas-0.0.1-SNAPSHOT.jar'> /home/admin/start.sh && chmod +x /home/admin/start.sh
如果采用JAR包方式,請在控制臺啟動命令設(shè)置區(qū)域的options設(shè)置文本框輸入
-Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false
。圖示為Open JDK 8運行環(huán)境下的Java應(yīng)用。具體操作,請參見設(shè)置啟動命令。
確保
-D
和-XX
參數(shù)未交替使用,以免命令失效。示例代碼如下:修改前:
java -Dalicloud.deployment.mode=EDAS_MANAGED -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UnlockExperimentalVMOptions -XX:+UseWisp2 -Dio.netty.transport.noNative=true -XX:+UseG1GC -Dspring.profiles.active=yace -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar /home/admin/app/xx-server.jar
修改后:
java -XX:+UseContainerSupport -XX:InitialRAMPercentage=70.0 -XX:MaxRAMPercentage=70.0 -XX:+UnlockExperimentalVMOptions -XX:+UseWisp2 -Dio.netty.transport.noNative=true -XX:+UseG1GC -Dspring.profiles.active=yace -Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false -jar /home/admin/app/xx-server.jar
結(jié)果驗證
以Consumer應(yīng)用為例,在基礎(chǔ)信息頁面單的實例列表頁簽,在實例列表操作列,單擊Webshell,在Webshell窗口執(zhí)行相關(guān)命令,驗證應(yīng)用部署是否成功。更多信息,請參見使用Webshell診斷應(yīng)用。
驗證服務(wù)是否成功注冊。
curl -X GET 'http://192.168.XX.XX:8848/nacos/v1/ns/instance/list?serviceName=service-provider'
service-provider
:服務(wù)名。192.168.XX.XX:8848
:安裝Nacos的主機IP地址和端口號。192.168.XX.XX
需替換成MSE Nacos注冊中心的內(nèi)網(wǎng)地址。關(guān)于如何獲取,請參見步驟二:服務(wù)注冊與發(fā)現(xiàn)。
返回結(jié)果如下,表示服務(wù)已注冊成功。
驗證整個微服務(wù)應(yīng)用的訪問鏈路是否正常。
按需選擇以下命令。
127.0.0.1:18082
為運行Provider和Consumer的主機IP地址和訪問端口。curl http://127.0.0.1:18082/echo-rest/{自定義變量}
curl http://127.0.0.1:18082/echo-feign/{自定義變量}
返回結(jié)果如下,表示Consumer應(yīng)用已成功調(diào)用Provider應(yīng)用,微服務(wù)應(yīng)用的訪問鏈路正常。
更多信息
如果應(yīng)用托管失敗,請參見以下文檔定位問題: