一.前言
上篇我们讲了如何在docker swarm上搭建一个高可用的eureka服务,本篇博客讲述如何搭建多节点多容器的其他服务
二.服务分类
zuul:网关服务
base-info:主数据、登录相关
oauth:授权
2.1 zuul网关搭建:
先创建zuul的栈文件:touch /usr/zuul.yml(位置随意)
zuul.yml内容:
version: '3'
services:
zuul:
image: 192.168.1.119/demo/zuul:latest
networks:
spring-cloud-overlay:
aliases:
- zuul
deploy:
replicas: 2
ports:
- 8085:8085
environment:
- EUREKA_SERVER_ADDR=eurekanetworks:
spring-cloud-overlay:
external:
name: spring-cloud-overlay
修改zuul yml文件:
zuul Dockerfile文件:
pom文件修改:可参照上篇eureka服务搭建。
zuul代码修改完毕后,mvn clean -> mvn package ->docker build ->docker push到镜像库(具体操作见上篇博客)
镜像上传完毕后,登录docker swarm manager节点拉取镜像:
docker pull 192.168.1.119/demo/zuul:latest
镜像拉取(仅manager节点拉取即可)完毕后:
docker stack deploy -c zuul.yml demo
执行完毕后查看服务列表:
docker service ls
查看服务日志:docker service logs demo_zuul
查看服务容器落在哪些节点:docker service ps demo_zuul
查看服务属性信息:docker inspect demo_zuul 或 id
查看容器信息:docker inspect 容器name | 容器id
2.2 base-info服务搭建
步骤同上,唯一区别:
2.3 oauth 服务搭建
同base-info
三.效果与测试
搭建完毕后查看eureka客户端:
执行登录操作调用base-info登录方法返回token:
以上我们会发现我们的网关服务只有两个节点,但是请求:
192.168.1.110:8085/baseinfo/userlogin/login、192.168.1.111:8085/baseinfo/userlogin/login、192.168.1.112:8085/baseinfo/userlogin/login均可返回token。这是因为docker swarn会根据暴露的端口去轮询docker swarn集群中部署的节点,直到找到部署了zuul服务的容器去执行api请求。