Apollo配置中心是携程开源的知名配置中心项目,类似的有disconf等,它的GitHub地址是:https://github.com/ctripcorp/apollo

由于我们主要使用docker(rancher)来运维管理项目,所以Apollo也要部署到docker里,来做为SpringCloud的配置中心。

Apollo官方提供了docker镜像,部署起来比较方便。https://hub.docker.com/r/idoop/docker-apollo

手动打包:

apollo官方网址:https://github.com/ctripcorp/apollo
先仔细阅读官方的apollo介绍,大致了解apollo的架构及功能。我在部署这个项目之前对docker及rancher基本不了解,所以是边学习边部署,所以这是一个适合新手阅读的文章,如果发现文章中的问题,欢迎留言。本文会先介绍在虚拟机上使用docker部署apollo,然后再介绍部署到rancher。
一、在虚拟机上使用docker部署
1.将apollo项目下载到本地

apollo的架构图主要的三部分:(引用官方文档)
(1)Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端
(2)Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)
(3)Apollo Portal 提供界面

2.查看作者提供好的dockerfile(以apollo-configservice为例)

apollo-configservice\src\main\docke

使用Docker部署Apollo docker apollo_运维

我是docker的初学者,所以在dockerfile中加了些自己的理解。三个dockerfile大同小异,不再赘述其他两个。

3.在在官网上获得作者打包好的压缩包,注意版本,1.1.2的版本在使用时可能会有url解析异常的错误(两个//的问题),所以在部署时要使用1.2.0版本,也可以自己在本地打包的,(自己在本地打包请按照下面一步配置好数据库及meta信息后执行build.sh进行打包,官网也有详细描述)https://github.com/ctripcorp/apollo/releases

使用Docker部署Apollo docker apollo_使用Docker部署Apollo_02

4.创建数据库,作者已经写好的sql语句直接执行即可

使用Docker部署Apollo docker apollo_运维_03

我在docker部署的时候直接将数据库放在了我的windows主机上,这样就要保证mysql的root可以被远程访问(可以百度,很简单),也可以安装在虚拟机上(我觉得安装很麻烦),后期将镜像放在rancher的时候可以使用docker官方的mysql镜像,所以在docker部署的时候没有很注重mysql。

5.对安装包的内容进行修改(主要是数据库地址,meta-service地址)
[1](apollo-configservice压缩包打开)在config->application-github.properties文件中。修改为你的ip,用户名及密码

使用Docker部署Apollo docker apollo_运维_04

apollo支持四个环境的配置,想要多环境部署的,apolloconfigdb在每个环境都要有一套(在每个环境做的配置要分别保存)在rancher上很简单多起几个mysql容器即可。在本地的话可以修改下数据库的名字(表保持不动),一定保证每个环境对应的apolloconfigdb不同
比如上图为dev环境的apollo-configservice的apolloconfigdbdb ,下图为其他环境的db【fat环境】

使用Docker部署Apollo docker apollo_docker_05

[2](apollo-adminservice压缩包打开)在config->application-github.properties文件中,修改为你的ip,用户名及密码

使用Docker部署Apollo docker apollo_运维_04

apollo-adminservice中也是ApolloConfigDB所以在多环境部署时记得更换数据库的连接地址
[3] (apollo-portal压缩包打开)两处需要修改
在config->application-github.properties文件中,修改为自己的ip及用户名密码

在config->apollo-env.properties文件中,meta-service配置

使用Docker部署Apollo docker apollo_数据库_07

apollo-configservice,apollo-adminservice,apollo-portal是三个服务,Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳,Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试。作者将apollo-configservice和Eureka放在一起,所以portal需要知道每个环境的Eureka地址也就是apollo-configservice的地址如上图
。设计好端口后,在容器启动时就要用-p指定(后面会讲)

6.现在安装包和dockerfile都准备好了,开始在虚拟机上打镜像(安装好docker)

使用Docker部署Apollo docker apollo_使用Docker部署Apollo_08


(1)先打apollo-configservice镜像

使用Docker部署Apollo docker apollo_数据库_09

 

使用Docker部署Apollo docker apollo_使用Docker部署Apollo_10

使用Docker部署Apollo docker apollo_docker_11


docker build是创建镜像的语句,-t 相当于给镜像起名字 config/csdn就是这个镜像的名字 .是标识dockerfile就在当前目录

使用Docker部署Apollo docker apollo_使用Docker部署Apollo_12

使用docker image ls 可以查看所有的镜像

使用Docker部署Apollo docker apollo_docker_13

【注意】

使用Docker部署Apollo docker apollo_运维_14

(2)打apollo-adminservice镜像
在apollo目录下创建admin目录,并且把apollo-adminservice的压缩包和dockerfile放在admin目录下

使用Docker部署Apollo docker apollo_容器_15

 

使用Docker部署Apollo docker apollo_容器_16

使用Docker部署Apollo docker apollo_数据库_17

(3)打portal镜像

使用Docker部署Apollo docker apollo_使用Docker部署Apollo_18

使用Docker部署Apollo docker apollo_数据库_19

使用Docker部署Apollo docker apollo_docker_20

1 导入数据库 
Apollo是有后台操作界面的,这个界面对应的是Portal程序,需要导入下面的数据库。我们先创建好数据库,导入sql。

https://github.com/ctripcorp/apollo/blob/master/scripts/sql/apolloportaldb.sql

然后具体的配置中心对应的是config程序,需要导入下面的数据库。需要注意的是,如果你想部署多套环境,譬如开发环境、线上环境,那么就需要创建多个不同的config数据库,分别给不同的环境使用。

https://github.com/ctripcorp/apollo/blob/master/scripts/sql/apolloconfigdb.sql

2 创建容器
镜像地址是:idoop/docker-apollo:latest

这里我们只使用一个环境-DEV。在rancher里的配置如下:

使用Docker部署Apollo docker apollo_使用Docker部署Apollo_21

在环境变量里配置好Portal的数据库地址和Config的数据库地址。Portal默认端口是8070.

使用Docker部署Apollo docker apollo_容器_22

 

需要注意的地方是eureka。Apollo是依赖于eureka注册中心的。

假定你已经在rancher里部署过了eureka了,那么就添加一下eureka的服务链接,然后在config数据库里修改一下eureka的地址就可以了。

 

使用Docker部署Apollo docker apollo_容器_23

在eureka里就可以看到Apollo注册成功的信息。

使用Docker部署Apollo docker apollo_使用Docker部署Apollo_24

 如果你做了和宿主机器的端口映射的话,就可以访问了,注意内部端口是8070。初始账号密码apollo,admin,进去后就是这样的界面

使用Docker部署Apollo docker apollo_docker_25

 

使用Docker部署Apollo docker apollo_使用Docker部署Apollo_26