概述
在进行此节之前,确保你以能够熟练使用docker,并对CIDR无分类编址有一定了解。
目前,我们已经收获了八个服务:
这里6、7、8将采用doeker集群部署,1、2、3、4、5将采用独立服务的方式部署。结构如下:
环境准备
准备三台性能好一点的服务器,这里使用的是vm虚拟机,centos7系统
manager:管理节点,ip:192.168.112.128
worker1:工作节点,ip:192.168.112.133
worker2:工作节点,ip:192.168.112.132
创建集群
在管理节点初始化集群
1 | docker swarm init --advertise-addr 192.168.112.128 |
在工作节点加入集群
1 | docker swarm join --token SWMTKN-1-13mv6nll4ymptpp0jdmc3ou4my6uqohkucpnn8zv9b16rda7fv-0dezqs5g36rocxsx38z35uzla 192.168.112.128:2377 |
创建自定义的overlay网络
1 | docker network create -d overlay --subnet=206.35.199.0/24 --gateway=206.35.199.1 --ip-range 206.35.199.128/25 --attachable cloud-network |
–ip-range:表示随机分配的ip将在128~255范围内指定,包括Endpoint的端点IP。主要目的是因为我在创建这个网络之前就已经完成了项目的相关地址配置(如eureka:206.35.199.2),为了防止Endpoint使用到项目配置的这些地址而引起IP地址冲突,将随机分配的范围指定在此网段的后半部分。
搭建镜像
项目地址
服务 | 地址 |
---|---|
Eureka | 206.35.199.2 |
Config | 206.35.199.3 |
Zipkin | 206.35.199.4 |
Spring Boot Admin | 206.35.199.5 |
Zuul | 206.35.199.6 |
其它 | 随机 |
这里需要指定eureka、config、zipKin的地址。完成之后修改项目为发行版(RELEASE),项目源码:https://github.com/intxzt/spring-cloud-netflix.git
使用dockerFile构建镜像
DockerFile
以eureka为例
1 | FROM openjdk:8 |
1 | docker build -t eureka . |
这里我已将所有的镜像上传至阿里云镜像仓库:
服务名 | 仓库地址 |
---|---|
eureka | registry.cn-hangzhou.aliyuncs.com/intxzt/eureka |
config | registry.cn-hangzhou.aliyuncs.com/intxzt/config |
sleuth(Spring Boot Admin) | registry.cn-hangzhou.aliyuncs.com/intxzt/sleuth |
zuul | registry.cn-hangzhou.aliyuncs.com/intxzt/zuul |
admin-server | registry.cn-hangzhou.aliyuncs.com/intxzt/admin-server |
feign-server | registry.cn-hangzhou.aliyuncs.com/intxzt/feign-server |
ribbon-server | registry.cn-hangzhou.aliyuncs.com/intxzt/ribbon-server |
部署
Zipkin服务链路追踪(worker1)
1
docker run -p 9411:9411 --ip 206.35.199.4 --network cloud-network -d --name zipkin openzipkin/zipkin
eureka注册中心(manager)
1
docker run -p 80:8761 --network cloud-network --ip 206.35.199.2 -d --name eureka registry.cn-hangzhou.aliyuncs.com/intxzt/eureka
config配置中心(manager)
1
docker run -p 8888:8888 --network cloud-network --ip 206.35.199.3 -d --name config registry.cn-hangzhou.aliyuncs.com/intxzt/config
sleuth——Spring Boot Admin(worker1)
1
docker run -p 8084:8084 --network cloud-network --ip 206.35.199.5 -d --name sleuth registry.cn-hangzhou.aliyuncs.com/intxzt/sleuth
zuul网关(worker2)
1
docker run -p 8769:8769 --network cloud-network --ip 206.35.199.6 -d --name zuul registry.cn-hangzhou.aliyuncs.com/intxzt/zuul
admin-server(manager)
1
docker service create --replicas 3 --network cloud-network --name admin-server registry.cn-hangzhou.aliyuncs.com/intxzt/admin-server
ribbon-server(manager)
1
docker service create --replicas 3 --network cloud-network --name ribbon-server registry.cn-hangzhou.aliyuncs.com/intxzt/ribbon-server
feign-server(manager)
1
docker service create --replicas 3 --network cloud-network --name feign-server registry.cn-hangzhou.aliyuncs.com/intxzt/feign-server
注意:在括号内标识的节点执行shell命令,服务分布见图deploy-2
;6、7、8并没有对外映射端口,需通过zuul网关统一访问。
测试
部署完成之后,可以通过网关访问之前测试过的接口。zipkin、eureka、Spring Boot Admin如下: