摘要:介绍的集群的自动发现有两种方式与本文使用的是的方式准备安装以上版本初始化集群创建一个名为的网络开放端口初始化集群部份可看我之前的博客使用搭建多主机集群创建网络查看当前的网络也是一个网络可以跨主机通信本教程会创建一个新的创建网络
介绍
准备docker 1.12 的swarm 集群的自动发现有两种方式, virtual IP address (VIP) 与 DNS round-robin, 本文使用的是VIP的方式
安装docker 1.12 以上版本
初始化swarm集群
创建一个名为docker-net 的overlay网络
开放7946 TCP/UDP , 4789 UDP 端口
创建overlay网络初始化swarm集群部份可看我之前的博客使用docker 1.12 搭建多主机docker swarm集群
查看当前的网络
[root@swarm-manager ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 376f5b337bfc bridge bridge local 166bd71f7d0e host host local 9gr6bfff1rv9 ingress overlay swarm
ingress 也是一个overlay网络, 可以跨主机通信, 本教程会创建一个新的
创建网络
docker network create --driver overlay --opt encrypted ## 是否使用加密 my-network
查看
[root@swarm-manager ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 376f5b337bfc bridge bridge local 166bd71f7d0e host host local 9gr6bfff1rv9 ingress overlay swarm aoqs3p835s5g docker-net overlay swarm在swarm上用overlay 网络创建一个服务
docker service create --replicas 3 --name my-web # 服务名为my-web --network docker-net daocloud.io/nginx:alpine # 使用国内的镜像, alpine版的体积很小,下载会快点
查看服务
# 本次只起了一个manager节点, 所以容器都跑在这台机器上了 [root@swarm-manager ~]# docker service ps my-web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR bavjn0xhxi35nx6n9kn33yfga my-web.1 daocloud.io/nginx:alpine swarm-manager Running Running 31 minutes ago cibuo8zqp78z1xb8cu3v4pkmj my-web.2 daocloud.io/nginx:alpine swarm-manager Running Running 31 minutes ago 0pkg1eoa0onku71cbp1hqtcv5 my-web.3 daocloud.io/nginx:alpine swarm-manager Running Running 31 minutes ago
在一个网络上有哪些容器可以在network inspect的Containers节点看到
[root@swarm-manager ~]# docker network inspect docker-net [ { "Name": "docker-net", "Id": "aoqs3p835s5glx69hi46ou2dw", .... "Containers": { "1c87aae81449b448983924017fc4037b7b1e9e1eaa03bc55745b0167ab4e495b": { "Name": "my-web.1.bavjn0xhxi35nx6n9kn33yfga", "EndpointID": "2ab6c7e698ce69ec318a211dd0386533de1a0d8f2070bd4ee6cdc43cb94dcd0a", "MacAddress": "02:42:0a:00:09:03", "IPv4Address": "10.0.9.3/24", "IPv6Address": "" }, ..... }, ..... } ]
查看服务使用的vip
[root@swarm-manager ~]# docker service inspect --format="{{.Endpoint.VirtualIPs}}" my-web [{aoqs3p835s5glx69hi46ou2dw 10.0.9.2/24}]演示使用服务名访问nginx
先创建一个同样使用docker-net的overlay网络 的服务
docker service create --name my-busybox --network docker-net busybox sleep 3000
等待服务启动后, 用docker exec 连接进busybox的容器里
[root@swarm-manager ~]# docker service ps my-busybox ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR 7ftv4wj1g3vu8g7mfghx8du65 my-busybox.1 busybox swarm-manager Running Running about a minute ago [root@swarm-manager ~]# docker exec -ti my-busybox.1.7ftv4wj1g3vu8g7mfghx8du65 sh
在busybox容器. 向DNS查询nginx服务的vip
[root@swarm-manager ~]# docker exec -ti my-busybox.1.7ftv4wj1g3vu8g7mfghx8du65 sh / # nslookup my-web Server: 127.0.0.11 Address 1: 127.0.0.11 Name: my-web Address 1: 10.0.9.2 10.0.9.2 # 和在外面看到的一样
在busybox容器. 向DNS查询nginx服务所有容器的ip地址
/ # nslookup tasks.my-web Server: 127.0.0.11 Address 1: 127.0.0.11 Name: tasks.my-web Address 1: 10.0.9.5 my-web.3.0pkg1eoa0onku71cbp1hqtcv5.docker-net Address 2: 10.0.9.4 my-web.2.cibuo8zqp78z1xb8cu3v4pkmj.docker-net Address 3: 10.0.9.3 my-web.1.bavjn0xhxi35nx6n9kn33yfga.docker-net
在busybox容器, 通过服务名访问nginx
/ # wget -O- my-web Connecting to my-web (10.0.9.2:80)结语Welcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
.....
通过实验可以看出, 在swarm集群中使用overlay网络时, 不同服务之间可以使用服务名(docker service name)互相访问
我的博客: docker 1.12 的服务自动发现
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26704.html
摘要:由于没有了中心化的负载均衡器,集群不会因某台机器异常而导致整个服务对外不可用,很好的避免了单点问题,同时也带了可扩展性。 Mesos/Marathon 折腾久了,我们一直希望有机会深入到 Swarm 内部一探究竟。 另外, Mesos 这一套东西虽然是久经企业级考验的, 但是安装、部署和使用相对复杂,上手有门槛。同时,在今年的 DockerCon 上,内置了Swarm 功能的 Dock...
摘要:本文涵盖了中的六大新特性内置命令服务发现自愈功能安全负载均衡滚动升级,相关的使用文档和视频链接也都包含在里面。同时,内部负载均衡要求一个可用的容器。现在开箱即用的负载均衡,上公开暴露的端口在所有节点都是可以访问的。 Docker 1.12版本最近刚刚发布,这篇文章对它的新特性进行了概述和对比描述。本文涵盖了 Docker 1.12 中的六大新特性:内置 swarm命令、服务发现、自愈功...
摘要:月日数人云在上海举办金融沙龙,邀请上交所和近二十家来自银行保险证券的技术专家一同探讨容器技术在金融业中的最佳实践。数人云肖德时在会上将传统金融行业通过容器可以解决的四大问题做了逐一解读。如何动态的分配,就是刚才上交所介绍的一些治理的方法。 7月29日数人云在上海举办金融沙龙,邀请上交所和近二十家来自银行、保险、证券的IT技术专家一同探讨容器技术在金融业中的最佳实践。数人云CTO肖德时在...
摘要:与分布式应用捆绑包分布式应用捆绑包,或者简称,是一种多服务可分发镜像格式。而当中新推出的分布式应用捆绑包,或者简称,则属于一种新的概念,其专门面向多套容器的迁移需求。利用创建一个分布式应用捆绑包添加了一条新的命令。 在本文中数人云将带大家了解如何利用Docker Compose创建一套分布式应用捆绑包,并将其作为Docker Stack在Docker Swarm Mode中进行部署。 ...
摘要:利用分布式应用捆绑包简称部署服务相较于利用大量参数创建网络及服务,这里我们选择使用一个文件。 在Docker 1.12版本中,全新的Swarm捆绑包相较于原有编排及调度机制做出了巨大改进。它不再需要运行一组独立的Swarm容器,这部分容器已经被直接捆绑在Docker Engine当中,故障转移策略更为可靠,服务发现机制实现内置,新的网络功能极为顺畅……看起来很棒是不是? 数人云这...
阅读 3714·2023-04-25 18:41
阅读 1149·2021-11-11 16:55
阅读 1772·2021-09-22 15:54
阅读 3023·2021-09-22 15:51
阅读 3520·2019-08-30 15:55
阅读 1910·2019-08-30 14:19
阅读 1256·2019-08-29 10:57
阅读 1680·2019-08-29 10:56