apollo分环境部署

下图是Apollo架构模块的概览:
在这里插入图片描述


上图简要描述了Apollo的总体设计,我们可以从下往上看:

  • Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端
  • Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)
  • Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳
  • 在Eureka之上我们架了一层Meta Server用于封装Eureka的服务发现接口
  • Client通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Client侧会做load balance、错误重试
  • Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试
部署

环境说明:
centos7.9
openjdk version “1.8.0_262”
mysql5.7

dev:192.168.146.141
pro:192.168.146.139

1.创建数据库(dev/pro)

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

mkdir /etc/docker/
cat >/etc/docker/daemon.json <<EOF
{
  "graph": "/data/docker", 
  "storage-driver": "overlay2",
  "insecure-registries": ["registry.access.redhat.com","quay.io"],
  "registry-mirrors": ["https://q2gr04ke.mirror.aliyuncs.com"],
  "bip": "172.0.137.1/24",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "live-restore": true
}
EOF

mkdir -p /data/docker
systemctl start docker
systemctl status docker
systemctl enable docker
docker --version

docker run -itd --name mysql --restart=always -e MYSQL_ROOT_PASSWORD=123456  -p 3306:3306 -v /data/mysql/data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

# docker exec -it mysql /bin/bash
# mysql -u root -p123456
mysql> grant all on *.* to 'apollo'@'%' identified by '123456';
mysql> flush privileges;
mysql> exit;
# exit

完成准备工作后,第一步是创建相应的数据库。因为Apollo依赖于MySQL数据库,所以需要事先创建并完成库表的初始化。分布式部署Apollo服务需要将ApolloPortalDB和ApolloConfigDB两个数据库分别在不同的MySQL实例上创建。

当然,如果不需要分开管理的话,也可以在一个MySQL实例中创建。官方把数据库、表的创建和样例数据都分别准备了SQL文件,我们只需要导入数据库即可。SQL文件的地址如下:

  • https://github.com/ctripcorp/apollo/tree/master/scripts/sql

需要注意的是ApolloPortalDB只需要在生产环境部署一个即可,而ApolloConfigDB需要在每个环境部署一套,如fat、uat和pro环境分别部署3套ApolloConfigDB。我这里是在dev和pro分别部署了一个MySQL实例。

导入sql文件

dev

mysql -h 192.168.146.141 -uapollo -p123456 < apolloconfigdb.sql

pro

mysql -h 192.168.146.139 -uapollo -p123456 < apolloconfigdb.sql
mysql -h 192.168.146.139 -uapollo -p123456 < apolloportaldb.sql
注意:这里导完数据后还需要修改ServerConfig里面的数据

在这里插入图片描述

获取安装包

需要的安装包共有3个:

  • apollo-configservice
  • apollo-adminservice
  • apollo-portal
  • https://github.com/ctripcorp/apollo/releases
[root@dev src]# ls
apollo-adminservice-1.8.0-github.zip  apolloconfigdb.sql  apollo-configservice-1.8.0-github.zip

部署Apollo Config Server (dev/pro)
[root@dev /usr/local/src]# mkdir /usr/local/apollo-configservice
[root@dev /usr/local/src]# unzip apollo-configservice-1.8.0-github.zip -d /usr/local/apollo-configservice
[root@dev /usr/local/src]# mkdir /usr/local/apollo-adminservice
[root@dev /usr/local/src]# unzip apollo-adminservice-1.8.0-github.zip -d /usr/local/apollo-adminservice/

配置apollo-configservice的数据库连接信息:

[root@dev /usr/local/src]# cd /usr/local/apollo-configservice/
[root@dev /usr/local/apollo-configservice]# vim config/application-github.properties 
# DataSource
spring.datasource.url = jdbc:mysql://dev:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username = apollo
spring.datasource.password = 123456

配置apollo-adminservice的数据库连接信息:

[root@dev /usr/local/apollo-configservice]# cd ../apollo-adminservice/
[root@dev /usr/local/apollo-adminservice]# vim config/application-github.properties 
# DataSource
spring.datasource.url = jdbc:mysql://dev:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username = apollo
spring.datasource.password = 123456
pro配置的时候注意修改dev为pro

如果需要调整apollo-configservice和apollo-adminservice的JVM启动参数、服务监听端口以及日志文件存放目录等配置,可以在其安装目录下的scripts/startup.sh脚本中进行修改:

如果需要修改JVM参数,可以修改scripts/startup.sh的JAVA_OPTS部分
如要调整服务的日志输出路径,可以修改scripts/startup.sh和apollo-configservice.conf中的LOG_DIR
如要调整服务的监听端口,可以修改scripts/startup.sh中的SERVER_PORT。另外由于apollo-configservice同时承担meta server职责,如果要修改端口,注意要同时修改ApolloConfigDB.ServerConfig表中的eureka.service.url配置项以及apollo-portal和apollo-client中的使用到的meta server信息

启动apollo-configservice:

[root@dev /usr/local/apollo-configservice]# scripts/startup.sh 
netstat -lntp |grep 8080

启动apollo-adminservice:

[root@dev /usr/local/apollo-adminservice]# scripts/startup.sh 
netstat -lntp |grep 8090
部署Apollo Portal Server (pro)
[root@pro /usr/local/src]# mkdir /usr/local/apollo-portal
[root@pro /usr/local/src]# unzip apollo-portal-1.8.0-github.zip -d /usr/local/apollo-portal/

配置apollo-portal的数据库连接信息:

[root@pro /usr/local/src]# cd /usr/local/apollo-portal/
[root@pro /usr/local/apollo-portal]# vim config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username = apollo
spring.datasource.password = 123456

然后就是配置apollo-portal的meta service信息。Apollo Portal需要在不同的环境访问不同的meta service(apollo-configservice)地址,所以我们需要在配置中提供这些信息。

默认情况下,meta service和config service是部署在同一个JVM进程,所以meta service的地址就是config service的地址。配置项的格式为env.meta=http://{config-service-url:port},如下所示:

[root@pro /usr/local/apollo-portal]# vim config/apollo-env.properties
dev.meta=http://dev:8080
pro.meta=http://prod:8080

启动apollo-portal:

[root@pro /usr/local/apollo-portal]# scripts/startup.sh 
netstat -lntp |grep 8070

启动成功后,通过浏览器访问pro的8070端口:
在这里插入图片描述
apollo/admin

点击创建项目
在这里插入图片描述
在这里插入图片描述
注意:appid一定要唯一,不然后面环境会显示不出来

在这里插入图片描述
点击新增配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后点击发布

然后就是使用客户端来连接配置中心,未完持续。。。
https://github.com/multilinguals/apollo-php-client

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值