Spring Cloud微服务架构实战--Docker容器化部署

目标:基于Docker进行Spring Cloud基础服务组件的容器化部署

环境:CentOS 7.2操作系统 

            基础服务:Eureka服务注册中心+Config服务配置中心

            其他:Zuul服务网关+Zipkin服务追踪中心+RabbitMQ消息队列服务+ElasticSearch存储服务+Kibana展示服务

步骤:微服务jar包构建->Docker环境准备->Docker Compose编排文件编写->顺序启动应用

1.微服务jar包构建

构建Eureka服务注册中心、Config服务配置中心、Zipkin服务追踪中心、Zuul服务网关、Service测试服务的可执行jar包。

其中除了注册中心及配置中心服务外,其他微服务均从Gitlab配置中心读取配置文件。

2.Docker环境准备

(1)docker安装

yum install -y docker

systemctl start docker

docker version查看版本:


(2)镜像加速器配置

参考:http://guide.daocloud.io/dcs/docker-9153151.html


直接导入错误解决:

修改/etc/docker/daemon.json,删除逗号

重启docker:systemctl restart docker

(3)docker-compose安装

yum install -y python-pip

pip install docker-compose

docker-compose version查看版本:


(4)镜像构建

基于java的Dockerfile编写:以eureka-server为例


备注:构建镜像时仅eureka-server与config-server基础服务设置容器启动时执行jar包,其他服务按需求在compose编排文件中以command命令启动

3.Docker Compose编排文件编写

(1)支持组件

微服务中心构建所需的支持组件有三种:

rabbitmq - 提供消息队列功能

elasticsearch - 提供服务追踪链路数据存储功能

kibana - 提供服务追踪链路数据展示功能:与elasticsearch对接

相比于虚拟机安装组件并配置的过程,直接将支持组件加入到容器化部署的编排队列更为合理

docker-compose.yml:


支持组件需优先启动

(2)服务注册中心

注册中心为基础服务,需要优先启动


外部访问地址为:http://宿主机地址:8761/

(3)服务配置中心

配置中心为基础服务,需优先启动,并且配置中心访问量较大,启用两个配置服务实现高可用。


配置中心设置的配置文件地址为Gitlab服务器地址。

(4)服务追踪中心

服务追踪中心为后启动服务,依赖于基础服务,需要从配置中心读取配置文件启动。


外部访问地址:http://宿主机IP:9411/

(5)服务网关

服务网关为后启动服务,依赖于基础服务以及测试服务,需要查找测试服务地址。


(6)测试微服务

测试微服务为后启动服务,提供访问地址映射服务。


因为docker-compose仅能实现容器启动的先后顺序,并不能保证容器内部服务的顺序,因此,使用sleep命令滞后网关、追踪、测试3个服务的启动。

目录结构:


4.顺序启动应用

启动命令:docker-compose up -d


顺序:rabbitmq+elasticsearch+kibana+注册中心+配置中心->追踪中心+网关+测试服务

启动后查看容器信息:docker-compose ps


验证各项服务正常运行:多次访问http://宿主机IP:5000/testapi/user/hello


(1)注册中心


(2)追踪中心


(3)rabbitmq


(4)elasticsearch


(5)kibana




猜你喜欢

转载自blog.csdn.net/xingyuzhe/article/details/80038751