Apollo分布式部署
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apollo分布式部署相关的知识,希望对你有一定的参考价值。
Apollo基本概念请参考Apollo配置中心介绍环境:
PRO: Server1:172.16.2.16 服务: apollo-configservice | apollo-adminservice | applo-portal
FAT: Server2:172.16.2.17 服务: apollo-configservice | apollo-adminservice
UAT: Server3:172.16.2.18 服务: apollo-configservice | apollo-adminservice
每个环境都要部署独立的mysql数据库,不同的数据库用于存放不同环境的同一个KEY的值。每台服务器上都要configservice和adminservice。configservice用于数据的配置管理,adminservice用于和客户端通讯,将key的值发布到客户端上
准备:
三台服务器分别安装JDK1.8,Maven3.5.0,Mysql5.7 Git1.7.1
安装:configservice和adminservice,三台服务器上都需要安装
cd /opt git clone
修改build.sh脚本
Server1配置
###修改build.sh脚本,修改数据库地址和账号密码。 vim /opt/apollo/scripts/build.sh apollo_config_db_url=jdbc:mysql://127.0.0.1:3306/ApolloConfigDB?characterEncoding=utf8 apollo_config_db_username=root apollo_config_db_password=123456 # apollo portal db info apollo_portal_db_url=jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?characterEncoding=utf8 apollo_portal_db_username=root apollo_portal_db_password=123456 ##修改三个环境的apollo服务器configservice地址 # meta server url, different environments should have different meta server addresses dev_meta=http://localhost:8080 fat_meta=http://172.16.0.17:8080 uat_meta=http://172.16.0.18:8080 pro_meta=http://172.16.0.16:8080
注意:只有部署了apollo-portal服务的服务器上需要将所有环境的地址写上去,其他环境的不用,比如
Server2的配置如下:
apollo_config_db_url=jdbc:mysql://127.0.0.1:3306/ApolloConfigDB?characterEncoding=utf8 apollo_config_db_username=root apollo_config_db_password=123456 # apollo portal db info apollo_portal_db_url=jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?characterEncoding=utf8 apollo_portal_db_username=root apollo_portal_db_password=123456 # meta server url, different environments should have different meta server addresses dev_meta=http://localhost:8080 fat_meta=http://172.16.2.17:8080 uat_meta=http://anotherIp:8080 pro_meta=http://yetAnotherIp:8080
Server3的配置如下:
apollo_config_db_url=jdbc:mysql://127.0.0.1:3306/ApolloConfigDB?characterEncoding=utf8 apollo_config_db_username=root apollo_config_db_password=123456 # apollo portal db info apollo_portal_db_url=jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?characterEncoding=utf8 apollo_portal_db_username=root apollo_portal_db_password=123456 # meta server url, different environments should have different meta server addresses dev_meta=http://localhost:8080 fat_meta=http://someIp:8080 uat_meta=http://172.16.2.18:8080 pro_meta=http://yetAnotherIp:8080
apollo-portal是一个web控制台,用来做配置管理的。 服务是用来管理不同环境下的admin
apollo-configservice和apollo-adminservice:
需要把自己的IP和端口注册到Meta Server(apollo-configservice本身)
1、修改apollo-adminservice或apollo-configservice 的bootstrap.yml文件,加入以下配置
eureka: instance: homePageUrl: http://${指定的IP}:${指定的Port} preferIpAddress: false
Server1的apollo-configservice/src/main/resources/bootstrap.yml文件配置:
eureka: instance: home-page-url: http://172.16.0.16:8080 hostname: ${hostname:localhost} preferIpAddress: true
Server1的apollo-adminservice/src/main/resources/bootstrap.yml文件配置:
eureka: instance: home-page-url: http://172.16.0.16:8090 hostname: ${hostname:localhost} preferIpAddress: true
Server2和Server3只需要将上面两个文件的中home-page-url的地址改成自己的IP即可。
导入apolloconfigdb.sql文件到数据库,并修改Eureka服务Url的值
先登录到数据库,然后执行
source /opt/apollo/scripts/sql/apolloconfigdb.sql;
修改数据库ApolloConfigDB中ServerConfig表Eureka服务Url的值
use ApolloConfigDB; show tables; select * from ServerConfig; update ServerConfig set Value='http://172.16.2.16:8080/eureka/' where Id=1;
以上操作三台服务器上都要做,Eureka服务Url的值的改成各自的IP地址
Server1上导入apolloportaldb.sql 文件到数据库,并修改部门
先登录到数据库,然后执行:
source /opt/apollo/scripts/sql/apolloportaldb.sql;
修改环境为pro,uat,fat
use ApolloPortalDB; mysql> show tables; +--------------------------+ | Tables_in_ApolloPortalDB | +--------------------------+ | App | | AppNamespace | | Authorities | | Consumer | | ConsumerAudit | | ConsumerRole | | ConsumerToken | | Favorite | | Permission | | Role | | RolePermission | | ServerConfig | | UserRole | | Users | +--------------------------+ 14 rows in set (0.00 sec) select * from ServerConfig; update ServerConfig set Value='fat,uat,pro' where Id=1;
构建
分别在三台服务器上执行./build.sh
将构建生成的压缩包拷贝到/data/目录下 解压缩后,启动服务
Server1
cp /opt/apollo/apollo-configservice/target/apollo-configservice-0.9.1-SNAPSHOT-github.zip /data cp /opt/apollo/apollo-adminservice/target/apollo-adminservice-0.9.1-SNAPSHOT-github.zip /data cp /opt/apollo/apollo-portal/target/apollo-portal-0.9.1-SNAPSHOT-github.zip /data cd /data unzip apollo-adminservice-0.9.1-SNAPSHOT-github.zip -d apollo-adminservice unzip apollo-configservice-0.9.1-SNAPSHOT-github.zip -d apollo-configservice unzip apollo-portal-0.9.1-SNAPSHOT-github.zip -d apollo-portal
创建log路径, apollo三个服务日志路径是固定的/opt/logs/下的100003171 100003172 100003173三个目录100003173是portal服务的log目录,所以不安装portal服务的机器上不用创建该目录
mkdir -p /opt/logs/{100003171,100003172,100003173}
修改权限为777
chmod 777 /opt/logs/*
我的机器上由于/data目录挂载的是数据盘,空间大,所以是将/opt/logs下的三个目录软连接到/data/logs/目录下的
ln -s /data/logs/100003171 /opt/logs/100003171 ln -s /data/logs/100003172 /opt/logs/100003172 ln -s /data/logs/100003173 /opt/logs/100003173
修改portal服务启动脚本中的服务端口,默认我8080,修改为8070,否则和configservice服务端口冲突。
然后分别启动portal、configservice、adminservice服务。启动脚本位于zip包加压缩后的目录下的scripts目录下
ll /data/apollo-adminservice/scripts/ total 8 -rwxr-xr-x 1 root root 339 Dec 13 15:57 shutdown.sh -rwxr-xr-x 1 root root 3906 Dec 13 15:57 startup.sh ll /data/apollo-configservice/scripts/ total 8 -rwxr-xr-x 1 root root 340 Dec 13 15:57 shutdown.sh -rwxr-xr-x 1 root root 3907 Dec 13 15:57 startup.sh ll /data/apollo-portal/scripts/ total 8 -rwxr-xr-x 1 root root 333 Dec 13 15:57 shutdown.sh -rwxr-xr-x 1 root root 3900 Dec 13 17:12 startup.sh
以上是关于Apollo分布式部署的主要内容,如果未能解决你的问题,请参考以下文章