本地開發的Spring Cloud應用或者Dubbo應用托管到SAE時,您可以使用SAE的注冊中心,也可以自建Nacos提供服務注冊與發現功能。本文介紹如何搭建Nacos注冊中心,并將應用部署在SAE進行托管。
前提條件
已安裝yum命令。
執行應用程序前,確保Nacos注冊中心的訪問端口(例如8848)已添加至安全組。具體操作,請參見添加安全組規則。
背景信息
某創業公司現在需要將微服務應用托管至SAE,但期望使用自建Nacos注冊中心,不使用SAE注冊中心。
如果是集群部署,請參見集群部署說明。
當您的微服務應用較多時,注冊中心按推薦程度由高到低依次排序如下:
商業版的服務注冊中心(MSE)
自建服務注冊中心
SAE內置服務注冊中心
步驟一:配置Nacos
Nacos依賴Java環境運行。如果您是從代碼開始構建并運行Nacos,還需要為Nacos配置Maven環境。Nacos安裝啟動后,提供了服務注冊發現功能,需要在應用側指定服務注冊中心。應用程序執行后,系統會依據所設的服務注冊中心,自動進行服務注冊與發現。
具體操作,請參見Nacos快速開始。
步驟二:應用托管至SAE
將本地服務Provider和Consumer應用程序編譯為WAR包、JAR包或者鏡像,部署到SAE并按需選擇以下方式連接Nacos。具體操作,請參見以下文檔:
方式一:配置服務注冊發現
SAE提供Java微服務自動尋址的Nacos Server能力,您可以通過SAE的服務注冊發現功能配置。具體操作,請參見使用SAE內置Nacos。
方式二:配置啟動參數
通過配置啟動參數的方式時,您需要確認以下內容。
確保SAE的網絡與自建Nacos的網絡互通。
確保
-D
和-XX
參數未交替使用,以免命令失效。示例代碼如下:修改前:
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
建議在部署應用時,使用鏡像或者JAR包方式,并配置啟動參數
-Dnacos.use.endpoint.parsing.rule=false
和-Dnacos.use.cloud.namespace.parsing=false
。重要啟動參數需要放在
-jar
之前,否則可能會導致無法使用非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包方式,請在控制臺啟動命令設置區域的options設置文本框輸入
-Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false
。圖示為Open JDK 8運行環境下的Java應用。具體操作,請參見設置啟動命令。