3、分布式部署

经验分享 (240) 2023-09-16 10:57:13

1、分布式部署需要事先确定部署的环境以及部署方式,Apollo目前支持以下环境
(1)自定义环境
          可以理解为自己本地的测试环境

(2)DEV
          可以理解为开发环境

(3)FAT
          可以理解为测试环境,相当于alpha环境(功能测试)

(4)UAT
          可以理解为集成环境,相当于beta环境(回归测试)

(5)PRO
          可以理解为生产环境

2、图解分布式部署
3、分布式部署 (https://mushiming.com/) 经验分享 第1张
3、分布式部署 (https://mushiming.com/) 经验分享 第2张

3、方案
          具体部署方案,需根据自己的实际情况进行调整
(1)Portal部署在生产环境,相当于web端,通过它来直接管理多个环境
          apollo-portal是配置的管理端,可以统一管理多套环境的配置(apollo节点)。也可以每套环境独立部署一个apollo-portal,只管理该环境的配置(apollo节点)。
          apollo-portal需要访问ApolloPortalDB数据库。

(2)Config Service和Admin Service在每个环境都单独部署,使用独立的数据库
          每个节点部署一个apollo-configservice和apollo-adminservice
          每套环境可以部署多个节点,建议生产环境部署两个以上的节点。开发环境的节点个数可自行决定,可以只部署一个节点。
          每套环境需要有一个独立的ApolloConfigDB数据库,同一套环境的apollo-configservice和apollo-configservice访问同一个ApolloConfigDB数据库。

4、服务器准备
3、分布式部署 (https://mushiming.com/) 经验分享 第3张
3、分布式部署 (https://mushiming.com/) 经验分享 第4张

5、apollo依赖安装
(1)根据我们规划的环境去逐一安装jdk环境
# jdk版本:1.8.0_211
# 安装略。若需安装请看jdk安装文档
# 分布式中每台服务器都要有JDK环境

(2)根据我们规划的环境去逐一安装mysql环境
# mysql版本:5.7.30
# 安装略。若需安装请看mysql安装文档
# 注意:生产环境下数据密码弄个复杂点,我这只是在本地测试用

# 部署mysql的服务器(总共5台)
          192.168.35.102
          192.168.35.108
          192.168.35.118
          192.168.35.128
          192.168.35.138

# 每台数据库都新增mysql用户,用于apollo连接使用
          mysql -uroot -p’root用户密码’
          create user ‘apollo’@’%’ identified by ‘apollo123’;
          grant all privileges on . to ‘apollo’@’%’ identified by ‘apollo123’;
          flush privileges;

6、创建数据库并导入数据
(1)创建 “ApolloConfigDB”,用于apollo-configserver服务使用库
# 创建数据库并导入ApolloConfigDB.sql文件,服务器环境都有如下,这些服务器都需要执行如下操作
          192.168.35.108
          192.168.35.118
          192.168.35.128
          192.168.35.138

(2)在每套环境中都创建一个ApolloConfigDB数据库
          mysql -uapollo -p’root123’
          CREATE DATABASE ApolloConfigDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

(3)导入ApolloConfigDB.sql文件
# 上传sql文件到/data/opt/scripts/
# 要进入ApolloConfigDB库执行sql文件
          mysql -uapollo -p’root123’
          use ApolloConfigDB;
          source /data/opt/scripts/apolloconfigdb.sql

(4)调整ApolloConfigDB.ServerConfig表的数据
# configservice和adminservice部署在同一台机器,并当前环境只有一个节点时,则可以跳过此步骤
# configservice和adminservice部署不在同一台机器,并当前环境只有一个节点时,需要修改eureka.service.url值为当前环境的apollo-configservice的地址与端口,注意多个地址之间用英文逗号隔开
# configservice和adminservice部署不在同一台机器,并当前环境有多个节点时,需要修改eureka.service.url值为当前环境的apollo-configservice的地址与端口,注意多个地址之间用英文逗号隔开

# 在DEV环境中ApolloConfigDB.Serverconfig表中设置eureka.service.url为
          http://192.168.35.105:8080/eureka/,http://192.168.35.106:8080/eureka/

# 在FAT环境中ApolloConfigDB.ServerConfig表中设置eureka.service.url为
          http://192.168.35.115:8080/eureka/,http://192.168.35.116:8080/eureka/

# 在UAT环境中ApolloConfigDB.ServerConfig表中设置eureka.service.url为
          http://192.168.35.125:8080/eureka/,http://192.168.35.126:8080/eureka/

# 在PRO环境中ApolloConfigDB.ServerConfig表中设置eureka.service.url为
          http://192.168.35.135:8080/eureka/,http://192.168.35.136:8080/eureka/

(5)创建 “ApolloPortalDB”,用于apollo-portal服务使用库
# MySQL创建数据库并设置字符集
          mysql -uapollo -p’root123’
          CREATE DATABASE ApolloPortalDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

(6)创建 “ApolloPortalDB”,用于apollo-portal服务使用库
# 上传sql文件到/data/opt/scripts/
# 要进入ApolloPortalDB 库执行sql文件
          mysql -uapollo -p’root123’
          use ApolloPortalDB;
          source /data/opt/scripts//apolloportaldb.sql

(7)调整ApolloPortalDB.ServerConfig表的数据
# portal默认支持的环境是DEV,若需要其它环境,需要修改apollo.portal.envs的值,默认值是DEV,修改为以下值,表示支持DEV\FAT\UAT\PRO四个环境,注意每个环境值之间用英文逗号隔开
# 注意:只在数据库添加环境是不起作用的,还需要为apollo-portal添加新增环境对应的meta server地址,具体会在部署apollo-portal中配置
DEV,FAT,UAT,PRO

7、部署apollo
# 每套环境都安装两个apollo节点,每个apollo节点包含一个apollo-configservice和apollo-adminservice
# 实际部署中,可自行决定apollo节点的个数
(1)根据自己的环境解压包
# 下载官方编译好的下载如下三个包,版本看所需的环境
# 下载地址:https://github.com/ctripcorp/apollo/releases
# 上传到/data/opt/apollo/目录下
          apollo-build-scripts-master.zip
          apollo-configservice-1.1.1-github.zip
          apollo-portal-1.1.1-github.zip

(2)解压到指定目录
          mkdir /data/opt/apollo/ -p ; cd /data/opt/apollo/
          mkdir apollo-adminservice ; unzip -d /data/opt/apollo/apollo-adminservice apollo-build-scripts-master.zip
          mkdir apollo-configservice ; unzip -d /data/opt/apollo/apollo-configservice apollo-configservice-1.1.1-github.zip
          mkdir apollo-portal ; unzip -d /data/opt/apollo/apollo-portal apollo-portal-1.1.1-github.zip

(3)创建apollo用户并赋予目录用户权限
# 上传sql文件到/data/opt/scripts/
# 要进入ApolloConfigDB库执行sql文件
          useradd apollo
          chown -R apollo:root /data/opt/apollo/

(4)配置apollo-configservice
# 配置数据库连接,填写当前环境的ApolloConfigDB数据库连接串信息
          # 注意127.0.0.1修改成实际环境数据库IP
          # 注意apolloconfigdb数据库(应该是不区分大小写)
          # 注意用户名和密码后面不要有空格
          vim /data/opt/apollo/apollo-configservice/config/application-github.properties
          spring.datasource.url = jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?characterEncoding=utf8
          spring.datasource.username = apollo
          spring.datasource.password = root123

3、分布式部署 (https://mushiming.com/) 经验分享 第5张

# 启动端口
          默认的启动端口是8080,若要修改,则将scripts/startup.sh中的SERVER_PORT=SERVER_PORT:=8080的8080改成指定的端口即可

(5)配置apollo-adminservice
# 配置数据库连接,填写当前环境的ApolloConfigDB数据库连接串信息
          # 注意127.0.0.1修改成实际环境数据库IP
          # 注意apolloconfigdb数据库(应该是不区分大小写)
          # 注意用户名和密码后面不要有空格
          vim /data/opt/apollo/apollo-adminservice/config/application-github.properties
          spring.datasource.url = jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?characterEncoding=utf8
          spring.datasource.username = apollo
          spring.datasource.password = root123
3、分布式部署 (https://mushiming.com/) 经验分享 第6张
# 启动端口
          也可以部署两套apollo-portal,管理各自环境的apollo-portal

(6)配置apollo-portal
# 本次部署中,只部署一个apollo-portal,用来管理所有环境的apollo节点
          默认的启动端口是8090,若要修改,则将scripts/startup.sh中的SERVER_PORT=SERVER_PORT:=8090的8090改成指定的端口即可

# 配置数据库连接,填写当前环境的ApolloConfigDB数据库连接串信息
          # 注意127.0.0.1修改成实际环境数据库IP
          # 注意apolloconfigdb数据库(应该是不区分大小写)
          # 注意用户名和密码后面不要有空格
          vim /data/opt/apollo/apollo-portal/config/application-github.properties
          spring.datasource.url = jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?characterEncoding=utf8
          spring.datasource.username = apollo
          spring.datasource.password = root123
3、分布式部署 (https://mushiming.com/) 经验分享 第7张
# 启动端口
          默认的启动端口是8070,若要修改,则将scripts/startup.sh中的SERVER_PORT=SERVER_PORT:=8070的8070改成指定的端口即可

# 配置meta service信息
          # 注意meta service的地址和端口,默认就是apollo-configservice的地址和端口
          # 注意:多个地址用英文逗号隔开
          # 注意:下面的配置表示当前的apollo-portal要管理dev、fat、uat、pro四套环境的apollo节点,每个环境的节点数是两个
          # 注意:若只需要dev环境,只需要配置dev.
          vim /data/opt/apollo/apollo-portal/config/apollo-env.properties
          dev.meta=http://192.168.35.105:8080,http://192.168.35.106:8080
          fat.meta=http://192.168.35.115:8080,http://192.168.35.116:8080
          uat.meta=http://192.168.35.125:8080,http://192.168.35.126:8080
          pro.meta=http://192.168.35.135:8080,http://192.168.35.136:8080

(7)新建启动和关闭三个服务的shell脚本
# 注意服务的启动顺序:apollo-configservice -> apollo-adminservice -> apollo-portal

# 编写启动脚本
          vim /data/apollo/startup.sh
          #!/bin/bash
          ./apollo-configservice/scripts/startup.sh
          ./apollo-build-scripts/scripts/startup.sh
          ./apollo-portal/scripts/startup.sh

# 编写关闭脚本
          vim /data/apollo/shutdown.sh
          #!/bin/bash
          ./apollo-configservice/scripts/shutdown.sh
          ./apollo-build-scripts/scripts/shutdown.sh
          ./apollo-portal/scripts/shutdown.sh

# 赋予脚本执行权限
          chmod +x /data/apollo/startup.sh
          chmod +x /data/apollo/shutdown.sh
          mkdir /opt/logs/ -p
          chown -R apollo:apollo /opt/logs/

(8)启动所有环境的apollo服务访问apollo,注意开放安全组端口
# 启动所有环境的apollo服务
          cd /data/opt/apollo
          ./start.sh

# 在游览器上登录当前环境的其中一个apollo-configservice,查看环境下的apollo-configservvice和apollo-adminservice的节点数是否正常

# apollo-portal检查
          游览器登录apollo-portal
          默认的用户名 apollo 密码 :admin
          http://IP:PORT
          点击默认的项目SampleApp
          查看SampleApp的环境列表是否符合ApolloPortalDB.ServerConfig中apollo.portal.envs的配置
3、分布式部署 (https://mushiming.com/) 经验分享 第8张

(9)更更更更更更详细的配置可以参考apollo官方
# https://github.com/ctripcorp/apollo/wiki

(10)到此完成部署

THE END

发表回复