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的基础模型:

  1. 用户在配置中心对配置进行修改并发布
  2. 配置中心通知Apollo客户端有配置更新
  3. 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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。而Apollo是携程开源的一款分布式配置中心,可以用于管理和配置应用程序的各种配置信息。下面是使用Docker Compose部署Apollo的步骤: 1. 创建一个名为`docker-compose.yml`的文件,并在其中定义Apollo服务的配置。以下是一个示例配置: ```yaml version: '3' services: apollo-configservice: image: apolloconfig/apollo-configservice ports: - 8080:8080 environment: - SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 - SPRING_DATASOURCE_USERNAME=your_username - SPRING_DATASOURCE_PASSWORD=your_password - DEV_META=http://localhost:8080 apollo-adminservice: image: apolloconfig/apollo-adminservice ports: - 8090:8090 environment: - SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 - SPRING_DATASOURCE_USERNAME=your_username - SPRING_DATASOURCE_PASSWORD=your_password - DEV_META=http://localhost:8080 apollo-portal: image: apolloconfig/apollo-portal ports: - 8070:8070 environment: - SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 - SPRING_DATASOURCE_USERNAME=your_username - SPRING_DATASOURCE_PASSWORD=your_password - DEV_META=http://localhost:8080 ``` 2. 根据实际情况修改上述配置中的数据库连接信息和端口映射。 3. 在终端中进入包含`docker-compose.yml`文件的目录,并运行以下命令启动Apollo服务: ```bash docker-compose up -d ``` 4. 等待一段时间,直到所有容器都成功启动。可以使用以下命令检查容器的状态: ```bash docker-compose ps ``` 5. 通过浏览器访问Apollo的管理界面,地址为`http://localhost:8070`。在管理界面中可以进行配置管理和发布等操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值