抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

概述

在进行此节之前,确保你以能够熟练使用docker,并对CIDR无分类编址有一定了解。

docker overlay网络跨主机通信的一点探究

子网超网

目前,我们已经收获了八个服务:

这里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
2
3
4
FROM openjdk:8
COPY cloud-eureka-service-1.0.0-RELEASE.jar /usr/local/jar/
WORKDIR /usr/local/jar
ENTRYPOINT ["java","-jar","cloud-eureka-service-1.0.0-RELEASE.jar"]
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

部署

  1. Zipkin服务链路追踪(worker1)

    1
    docker run -p 9411:9411 --ip 206.35.199.4 --network cloud-network -d --name zipkin openzipkin/zipkin
  2. 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
  3. 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
  4. 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
  5. 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
  6. admin-server(manager)

    1
    docker service create --replicas 3 --network cloud-network --name admin-server registry.cn-hangzhou.aliyuncs.com/intxzt/admin-server
  7. ribbon-server(manager)

    1
    docker service create --replicas 3 --network cloud-network --name ribbon-server registry.cn-hangzhou.aliyuncs.com/intxzt/ribbon-server
  8. 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如下:

评论