Rancher+Docker部署apollo(来自一个新手超详细的总结)【1】
apollo官方网址:https://github.com/ctripcorp/apollo先仔细阅读官方的apollo介绍,大致了解apollo的架构及功能。我在部署这个项目之前对docker及rancher基本不了解,所以是边学习边部署,所以这是一个适合新手阅读的文章,如果发现文章中的问题,欢迎留言。本文会先介绍在虚拟机上使用docker部署apollo,然后再介绍部署到rancher。一..
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为例)
我是docker的初学者,所以在dockerfile中加了些自己的理解。三个dockerfile大同小异,不再赘述其他两个。
3.在在官网上获得作者打包好的压缩包,注意版本,1.1.2的版本在使用时可能会有url解析异常的错误(两个//的问题),所以在部署时要使用1.2.0版本,也可以自己在本地打包的,(自己在本地打包请按照下面一步配置好数据库及meta信息后执行build.sh进行打包,官网也有详细描述)https://github.com/ctripcorp/apollo/releases
4.创建数据库,作者已经写好的sql语句直接执行即可
我在docker部署的时候直接将数据库放在了我的windows主机上,这样就要保证mysql的root可以被远程访问(可以百度,很简单),也可以安装在虚拟机上(我觉得安装很麻烦),后期将镜像放在rancher的时候可以使用docker官方的mysql镜像,所以在docker部署的时候没有很注重mysql。
5.对安装包的内容进行修改(主要是数据库地址,meta-service地址)
[1](apollo-configservice压缩包打开)在config->application-github.properties文件中。修改为你的ip,用户名及密码
apollo支持四个环境的配置,想要多环境部署的,apolloconfigdb在每个环境都要有一套(在每个环境做的配置要分别保存)在rancher上很简单多起几个mysql容器即可。在本地的话可以修改下数据库的名字(表保持不动),一定保证每个环境对应的apolloconfigdb不同
比如上图为dev环境的apollo-configservice的apolloconfigdbdb ,下图为其他环境的db【fat环境】
[2](apollo-adminservice压缩包打开)在config->application-github.properties文件中,修改为你的ip,用户名及密码
apollo-adminservice中也是ApolloConfigDB所以在多环境部署时记得更换数据库的连接地址
[3] (apollo-portal压缩包打开)两处需要修改
在config->application-github.properties文件中,修改为自己的ip及用户名密码
在config->apollo-env.properties文件中,meta-service配置
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)
(1)先打apollo-configservice镜像
docker build是创建镜像的语句,-t 相当于给镜像起名字 config/csdn就是这个镜像的名字 .是标识dockerfile就在当前目录
使用docker image ls 可以查看所有的镜像
【注意】
(2)打apollo-adminservice镜像
在apollo目录下创建admin目录,并且把apollo-adminservice的压缩包和dockerfile放在admin目录下
(3)打portal镜像
7.使用容器启动这三个服务。注意一点
apolloconfigdb中的serverconfig表的eureka.service.url字段是apollo-configservi ce,apollo-adminservice注册的地址,这个地址作者已经设置为何apollo-configservice的地址,也就是说虚拟机对应的启动apollo-configservice容器的地址,我们使用32782,作为dev环境apollo-configservice的地址(和portal中配置保持一致)
(1)用容器启动apollo-configservice
docker run 是启动容器的命令 、
-d:后台运行(不使用-d则是前台启动,那关闭页面的时候容器就停止,而且启动一个容器后这个页面就不能使用了)
-pport1:port2 port1是宿主机会开启的端口,port2是这个容器会打开的端口
–name为容器指定名字
17abccab1d22:是镜像的id
使用docker ps可以查看正在运行的容器(docker ps -a查看所有的容器)
再使用docker logs 容器id 来查看日志,看到如下日志证明启动成功
测试:访问宿主机ip:端口,像这样说明apollo-configservice启动完成
(2)启动apollo-adminservice
看到上面的日志证明启动成功
再次访问宿主机ip:32782
发现apollo-adminservice也注册成功
(3)启动apollo-portal
访问宿主机ip:32784就可以看到部署成功,使用apollo admin就可以登录。部署成功后可以使用自己的项目做配置测试,熟练apollo的运用。
写着写着觉得有点长,rancher部署会在第二篇写。
更多推荐
所有评论(0)