docker apollo配置中心分布式部署

Apollo 简介mysql

 

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,可以集中化管理应用不一样环境、不一样集群的配置,配置修改后可以实时推送到应用端,而且具有规范的权限、流程治理等特性,适用于微服务配置管理场景。git

服务端基于Spring Boot和Spring Cloud开发,打包后能够直接运行,不须要额外安装Tomcat等应用容器。github

Java客户端不依赖任何框架,可以运行于全部Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。sql

.Net客户端不依赖任何框架,可以运行于全部.Net运行时环境。docker

更多产品介绍参见Apollo配置中心介绍数据库

Apollo配置中心架构剖析安全

https://mp.weixin.qq.com/s/-hUaQPzfsl9Lm3IqQW3VDQ 网络

docker分布式部署(多环境)架构

官方分布式部署参见分布式部署指南https://github.com/ctripcorp/apollo/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97框架

 

准备机器2台

l192.168.101.14

l192.168.101.15

实现效果:经过apollo管理本地环境zglocal和测试环境zgdev配置文件

 

1.建立数据库

建立ApolloConfigDB

经过各类MySQL客户端导入apolloconfigdb.sql便可,每一个环境一个数据库,由于咱们有两个环境zglocal和zgdev,因此须要新建两个数据库zg_apolloconfigdb_dev 和 zg_apolloconfigdb_local。导入的sql是同一份sql数据就行

建立ApolloPortalDB

经过各类MySQL客户端导入apolloportaldb.sql便可,由于Portal是配置管理界面,因此只须要一个就能够管理多个环境

效果以下:

 

 

2.docker安装apollo

// 安装启动zgdev环境ConfigService和AdminService

docker run -p 8080:8080 \

    -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_dev?characterEncoding=utf8" \

    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \

    -e eureka_instance_ip_address=192.168.101.14 \

    -d -v /tmp/logs:/opt/logs --name apollo-configservice-dev apolloconfig/apollo-configservice:1.7.1

 

    docker run -p 8090:8090 \

    -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_dev?characterEncoding=utf8" \

    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \

    -e eureka_instance_ip_address=192.168.101.14 \

    -d -v /tmp/logs:/opt/logs --name apollo-adminservice-dev apolloconfig/apollo-adminservice:1.7.1

 

 

//安装启动zglocal环境ConfigService和AdminService

    docker run -p 8080:8080 \

    -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_local?characterEncoding=utf8" \

    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \

    -e EUREKA_INSTANCE_IP_ADDRESS=192.168.101.15 \

    -d -v /tmp/logs:/opt/logs --name apollo-configservice-local apolloconfig/apollo-configservice:1.7.1

 

    docker run -p 8090:8090 \

    -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.101.20:3306/zg_apolloconfigdb_local?characterEncoding=utf8" \

    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \

     -e EUREKA_INSTANCE_IP_ADDRESS=192.168.101.15  \

    -d -v /tmp/logs:/opt/logs --name apollo-adminservice-local apolloconfig/apollo-adminservice:1.7.1

参数说明:

lSPRING_DATASOURCE_URL: 对应环境ApolloConfigDB的地址

lSPRING_DATASOURCE_USERNAME: 对应环境ApolloConfigDB的用户名

lSPRING_DATASOURCE_PASSWORD: 对应环境ApolloConfigDB的密码

lEUREKA_INSTANCE_IP_ADDRESS: 对应的网络策略,若是实际部署的机器有多块网卡(如docker),或者存在某些网卡的IP是Apollo客户端和Portal没法访问的(如网络安全限制),那么咱们就须要在apollo-configservice和apollo-adminservice中作相关限制以免Eureka将这些网卡的IP注册到Meta Server,因此这里咱们要使用咱们宿主机的ip注册到到Eureka注册中心,而不是默认的容器ip

 

//安装启动Portal

    docker run -p 8070:8070 \

    -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.101.20:3306/zg_apolloportaldb?characterEncoding=utf8" \

    -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root@800 \

    -d -v /tmp/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal:1.7.1 

参数说明:

lSPRING_DATASOURCE_URL: 对应环境ApolloPortalDB的地址

lSPRING_DATASOURCE_USERNAME: 对应环境ApolloPortalDB的用户名

lSPRING_DATASOURCE_PASSWORD: 对应环境ApolloPortalDB的密码

lAPOLLO_PORTAL_ENVS(可选): 对应ApolloPortalDB中的apollo.portal.envs配置项,若是没有在数据库中配置的话,能够经过此环境参数配置

lDEV_META/PRO_META(可选): 配置对应环境的Meta Service地址,以${ENV}_META命名,须要注意的是若是配置了ApolloPortalDB中的apollo.portal.meta.servers配置,则以apollo.portal.meta.servers中的配置为准

 

启动后效果:

 

 

 

 

3.修改配置参数 

3.1修改Portal容器参数

执行命令进入容器

docker exec -it apollo-portal sh

cd /apollo-portal/config

vi apollo-env.properties修改环境参数,如图:

 

 

 

 

3.2修改数据库参数

调整ApolloConfigDB配置

无论是apollo-configservice仍是apollo-adminservice都须要向eureka服务注册,因此须要配置eureka服务地址。 按照目前的实现,apollo-configservice自己就是一个eureka服务,因此只须要填入apollo-configservice的地址便可,若有多个,用逗号分隔(注意不要忘了/eureka/后缀)。

 

 

 

 

 

调整ApolloPortalDB配置(ps:图片由于看不清,因此进行了从新截图,place环境可忽略)

配置项统一存储在ApolloPortalDB.ServerConfig表中,也能够经过管理员工具 - 系统参数页面进行配置,无特殊说明则修改完一分钟实时生效。

 

 

 

进行这些调整后重启这几个docker服务便可,访问Portal界面

 

 

 

经过系统信息查看是否zglocal和zgdev环境的apollo-configservice仍是apollo-adminservice是否运行正常

 

相关文章
相关标签/搜索