Docker容器化部署Apollo配置中心
docker容器化部署apollo配置中心
·
常见配置中心对比
- Spring Cloud Config
- Apollo
- Nacos
如果希望利用Nacos提供的服务注册中心功能,可以考虑Nacos
核心概念
- application (应用) :当前使用apollo的集中配置管理的应用程序
- environment (环境):生产、测试、开发环境,dev,pro等。或者操作系统的环境:windows、linux等。
- cluster (集群):通常指部署到同一网络机房内的物理主机集群。集群配置信息存在的意义在于:项目部署在不同的集群,使用不同的配置,如:windows和linux服务器集群存在路径差异。如果项目部署在不同的集群,仍然可以使用相同的配置,则没有必要创建集群
- namespace (命名空间):多个应用之间存在公共应用组件,为公共应用组件配置设置namespace(标签)。方便其他应用引用其配置。
Apollo架构设计
在企业中常用的部署方案为:Apollo-adminservice和Apollo-configservice两个服务分别在线上环境(pro),仿真环境(uat)和开发环境(dev)各部署一套,Apollo-portal做为管理端只部署一套,统一管理上述三套环境。
Apollo的基础模型:
- 用户在配置中心对配置进行修改并发布
- 配置中心通知Apollo客户端有配置更新
- Apollo客户端从配置中心拉取最新的配置、更新本地配置并通知到应用
详细架构模型:
四个核心模块及其主要功能:
ConfigService:
提供配置的读取,推送等功能,服务的对象是Apollo客户端
- 提供配置获取接口
- 提供配置推送接口
- 服务于Apollo客户端
AdminService:
提供配置的修改,发布等功能,服务的对象是Apollo Portal管理界面
- 提供配置管理接口
- 提供配置修改发布接口
- 服务于管理界面Portal
Client:
- 为应用获取配置,支持实时更新
- 通过MetaServer获取ConfigService的服务列表
- 使用客户端软负载SLB方式调用ConfigService
Portal:
- 配置管理界面
-
通过MetaServer获取AdminService的服务列表
-
使用客户端软负载SLB方式调用AdminService
开始部署Apollo
架构分配
- 192.168.100.221 portal
- 192.168.100.252 dev环境
- 192.168.100.172 pro环境
mysql
创建对应数据库
sql语句下载地址:
https://github.com/apolloconfig/apollo/blob/master/scripts/sql/apolloconfigdb.sql
https://github.com/apolloconfig/apollo/blob/master/scripts/sql/apolloportaldb.sql
!!!修改apolloconfigdb.sql中的databases名称为ApolloConfigDB_PRO,创建给pro环境使用
mysql -uroot -pGzgz2203.. < ./apolloconfigdb.sql
mysql -uroot -pGzgz2203.. < ./apolloportaldb.sql
启动
192.168.100.252 dev环境
version: '3'
services:
apollo-configservice_dev:
image: apolloconfig/apollo-configservice:2.1.0
container_name: apollo-configservice_dev
network_mode: host
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://192.168.100.252:3306/ApolloConfigDB?characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=Gzgz2203..
- SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[0]=docker0 #防止注册成容器内部Ip
- SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[1]=veth.*
#- EUREKA_INSTANCE_IP_ADDRESS=192.168.100.252
#- EUREKA_INSTANCE_HOME_PAGE_URL=http://192.168.100.252:8080
#- EUREKA_INSTANCE_PREFER_IP_ADDRESS=false
volumes:
- /tmp/logs/configservice:/opt/logs
apollo-adminservice_dev:
image: apolloconfig/apollo-adminservice:2.1.0
container_name: apollo-adminservice_dev
network_mode: host
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://192.168.100.252:3306/ApolloConfigDB?characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=Gzgz2203..
- SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[0]=docker0 #防止注册成容器内部Ip
- SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[1]=veth.*
#- EUREKA_INSTANCE_IP_ADDRESS=192.168.100.252
#- EUREKA_INSTANCE_HOME_PAGE_URL=http://192.168.100.252:8080
#- EUREKA_INSTANCE_PREFER_IP_ADDRESS=false
volumes:
- /tmp/logs/adminservice:/opt/logs
192.168.100.172 pro环境
version: '3'
services:
apollo-configservice_pro:
image: apolloconfig/apollo-configservice:2.1.0
container_name: apollo-configservice_pro
restart: always
network_mode: host
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://192.168.100.252:3306/ApolloConfigDB_PRO?characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=Gzgz2203..
- SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[0]=docker0 #防止注册成容器内部Ip
- SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[1]=veth.*
#- EUREKA_INSTANCE_IP_ADDRESS=192.168.100.172
#- EUREKA_INSTANCE_HOME_PAGE_URL=http://192.168.100.172:8080
#- EUREKA_INSTANCE_PREFER_IP_ADDRESS=false
volumes:
- /tmp/logs/configservice:/opt/logs
apollo-adminservice_pro:
image: apolloconfig/apollo-adminservice:2.1.0
container_name: apollo-adminservice_pro
network_mode: host
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://192.168.100.252:3306/ApolloConfigDB_PRO?characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=Gzgz2203..
- SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[0]=docker0 #防止注册成容器内部Ip
- SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[1]=veth.*
#- EUREKA_INSTANCE_IP_ADDRESS=192.168.100.172
#- EUREKA_INSTANCE_HOME_PAGE_URL=http://192.168.100.172:8080
#- EUREKA_INSTANCE_PREFER_IP_ADDRESS=false
volumes:
- /tmp/logs/adminservice:/opt/logs
192.168.100.221 portal
version: '3'
services:
apollo-portal:
image: apolloconfig/apollo-portal:2.1.0
container_name: apollo-portal
network_mode: host
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://192.168.100.252:3306/ApolloPortalDB?characterEncoding=utf8
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=Gzgz2203..
- APOLLO_PORTAL_ENVS=dev,pro
- DEV_META=http://192.168.100.252:8080
- PRO_META=http://192.168.100.172:8080
# - SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[0]=docker0
# - SPRING_CLOUD_INETUTILS_IGNORED_INTERFACES[1]=veth.*
volumes:
- /tmp/logs:/opt/logs
- ./config:/apollo-portal/config
- ./scripts:/apollo-portal/scripts
启动顺序:
dev或pro环境的configservice和adminservice先启动后再启动portal
更多推荐
已为社区贡献1条内容
所有评论(0)