本地开发的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应用。具体操作,请参见设置启动命令。