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分布式部署的主要内容,如果未能解决你的问题,请参考以下文章

基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)

Apollo分布式配置中心部署以及使用

Apollo分布式配置中心部署以及使用

Apollo 分布式部署指南

Apollo Codegen 没有找到生成代码的操作或片段

docker-compose 一键部署分布式配置中心Apollo