docker容器部署apollo方法

  • Post author:
  • Post category:其他


上一篇介绍过apollo的架构和各个模块的功能,对apollo服务端和客户端的交互有了一定的初步认识,下面我们看一下怎么部署的。

因为我修改了源码,并且是部署在docker容器中的,所以我们从编译源码开始,一步一步的讲解部署方法。apollo原始的部署方法请参见:

apollo分布式部署方法

1.准备工作


1.1 jdk

apollo服务端:jdk1.8+

apollo客户端:jdk1.7+

由于需要同时编译,所以需要jdk1.8+,安装方法在这里不说了


1.2 maven

编译使用maven编译,安装maven方法在这里不说了。


1.3 数据库

本例中用的是mysql数据库,需要5.6.5以上版本

1.3.1 创建数据库



Apollo服务端共需要两个数据库:


apolloportaldb





apolloconfigdb


,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。sql脚本在下载源码中script/sql/中。




1.3.2 调整服务配置



1.3.2.1 apolloportaldb

配置统一存储在serverconfig表中,配置项如下图:


从上到下依次表示:


(1).apollo.portal.envs – 可支持的环境列表


默认值是dev,如果portal需要管理多个环境的话,以逗号分隔即可(大小写不敏感),如:

DEV,FAT,UAT,PRO


注意:只在数据库添加环境是不起作用的,需要配合修改scripts/build.sh,添加新增环境对应的meta server地址。



(2)



.organizations – 部门列表




Portal中新建的App都需要选择部门,所以需要在这里配置可选的部门信息,样例如下:

[{"orgId":"TEST1","orgName":"样例部门1"},{"orgId":"TEST2","orgName":"样例部门2"}]

(3).superAdmin – Portal超级管理员


超级管理员拥有所有权限,需要谨慎设置。


如果没有接入自己公司的SSO系统的话,可以先暂时使用默认值apollo(默认用户)。等接入后,修改为实际使用的账号,多个账号以英文逗号分隔(,)。






(4).consumer.token.salt – consumer token salt


如果会使用开放平台API的话,可以设置一个token salt。如果不使用,可以忽略。






(5).wiki.address


portal上“帮助”链接的地址,默认是Apollo github的wiki首页,可自行设置。






(6).admin.createPrivateNamespace.switch


是否允许项目管理员创建private namespace。默认是允许,如果关闭请设置值为“false”。



1.3.2.2 apolloconfigdb



配置统一存储在serverconfig表中,配置项如下图:



从上到下依次表示:


1.eureka.service.url – Eureka服务Url


不管是apollo-configservice还是apollo-adminservice都需要向eureka服务注册,所以需要配置eureka服务地址。 按照目前的实现,apollo-configservice本身就是一个eureka服务,所以只需要填入apollo-configservice的地址即可,如有多个,用逗号分隔(注意不要忘了/eureka/后缀)。


需要注意的是每个环境只填入自己环境的eureka服务地址,比如FAT的apollo-configservice是1.1.1.1:8080和2.2.2.2:8080,UAT的apollo-configservice是3.3.3.3:8080和4.4.4.4:8080,PRO的apollo-configservice是5.5.5.5:8080和6.6.6.6:8080,那么:


  1. 在FAT环境的ApolloConfigDB.ServerConfig表中设置eureka.service.url为:
http://1.1.1.1:8080/eureka/,http://2.2.2.2:8080/eureka/

  1. 在UAT环境的ApolloConfigDB.ServerConfig表中设置eureka.service.url为:
http://3.3.3.3:8080/eureka/,http://4.4.4.4:8080/eureka/

  1. 在PRO环境的ApolloConfigDB.ServerConfig表中设置eureka.service.url为:
http://5.5.5.5:8080/eureka/,http://6.6.6.6:8080/eureka/


注:这里需要填写本环境中全部的eureka服务地址,因为eureka需要互相复制注册信息






2.namespace.lock.switch – 一次发布只能有一个人修改开关


这是一个功能开关,如果配置为true的话,那么一次配置发布只能是一个人修改,另一个发布。


1.4 环境

可以搭建多套环境,本例只用了一个开发环境


1.5 jenkins持续集成环境

由于使用docker容器部署,所以需要使用jenkins将编译好的jar封装成镜像。

2.编译

2.1 下载源码:

apollo原生源码下载地址:

https://github.com/ctripcorp/apollo

apollo修改源码后的下载地址:

https://github.com/dewey-its/apollo-custom

源码下载后的目录结构如图所示:


2.2 修改编译文件build.sh

# apollo config db info
apollo_config_db_url=jdbc:mysql://your_mysql_ip:3306/apolloconfigdb?characterEncoding=utf8
apollo_config_db_username=root
apollo_config_db_password=mysql

# apollo portal db info
apollo_portal_db_url=jdbc:mysql://your_mysql_ip:3306/apolloportaldb?characterEncoding=utf8
apollo_portal_db_username=root
apollo_portal_db_password=mysql

# meta server url, different environments should have different meta server addresses
dev_meta=your_env_address
fat_meta=your_env_address
uat_meta=your_env_address
pro_meta=your_env_address

需要修改的部分如上所示,有数据库地址,用户名密码以及各个环境的meteServer的地址。

2.3 编译

将源码放在虚拟机上,使用命令cd apollo/scripts/进入脚本所在文件夹,此时可能没有权限执行build.sh,使用命令chmod a+x build.sh。最后执行./build.sh进行编译。

出现如下几个日志说明编译成功:




编译完成后或在每个模块下生成一个jar,主要的jar有:apollo-configservice.jar,apollo-adminservice.jar,apollo-portal.jar,apollo-client.jar,apollo-core.jar,apollo-buildtools.jar,分别在各自的模块target下。

到这以后,生成的jar可以按照apollo官方给出的方式直接部署到服务器上。在往下的步骤是根据jar生成镜像。请继续向下阅读。

3.构建

分别构建apollo-configservice,apollo-adminservice,apollo-portal,由于三个步骤,文件结构都相同,此处以apollo-portal为例:

3.1 目录结构为


其中两个jar为上个步骤中编译生成的jar。Dockerfile为构建文件。scripts中存放启动脚本startup.sh。logs为日志目录。config为存放配置文件app.properties。apollo-jenkins.sh为jenkins使用,若直接使用docker build命令即可构建。

Dockerfile内容:

FROM registry.paas:443/admin/openjdk:8-alpine

ADD ./ /apollo-portal/

RUN sed -i '$d' /apollo-portal/scripts/startup.sh \
    && echo "tail -f /dev/null" >> /apollo-portal/scripts/startup.sh \
	&& chmod a+x /apollo-portal/scripts/startup.sh

EXPOSE 8557

CMD ["/apollo-portal/scripts/startup.sh"]

app.properties内容:由于修改了源码,app.properties必填

app.id=hystrixdashboard
local.meta=http://localhost:8555
dev.meta=http://10.126.3.127:8555
fat.meta=http://10.126.3.127:8555
uat.meta=http://10.126.3.127:8555
lpt.meta=http://10.126.3.127:8555
pro.meta=http://10.126.3.127:8555

4.部署

将生成的apollo-configservice,apollo-adminservice,apollo-portal部署,随后访问apollo-portal的地址即可登录apollo配置中心。



版权声明:本文为ganpuzhong42原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。