1、分布式部署需要事先确定部署的环境以及部署方式,Apollo目前支持以下环境
(1)自定义环境
可以理解为自己本地的测试环境
(2)DEV
可以理解为开发环境
(3)FAT
可以理解为测试环境,相当于alpha环境(功能测试)
(4)UAT
可以理解为集成环境,相当于beta环境(回归测试)
(5)PRO
可以理解为生产环境
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、服务器准备
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
# 启动端口
默认的启动端口是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
# 启动端口
也可以部署两套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
# 启动端口
默认的启动端口是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的配置
(9)更更更更更更详细的配置可以参考apollo官方
# https://github.com/ctripcorp/apollo/wiki
(10)到此完成部署
上一篇
下一篇