博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker集群管理(三)—— docker swarm mode基础教程
阅读量:6703 次
发布时间:2019-06-25

本文共 2920 字,大约阅读时间需要 9 分钟。

docker从1.12版(及后续版本)集成了swarmkit。可以方便的实现docker集群。它有哪些特点呢:

  • 集成了集群功能
  • 分散设计:manager和worker两种节点。
  • 声明式服务模式
  • 可伸缩
  • 达到期望值——当某些有节点崩溃的时候,会在其他节点创建相应容器。
  • 跨主机网络——采用overlay网络,docker可在不同的主机间通讯。
  • 服务发现——内置服务发现功能,不需要额外使用etcd、consul、zookeeper.
  • 负载均衡
  • 安全通信
  • 安全回滚

docker命令概览

从命令 docker -h 可以清楚的看到一些新的管理命令,这些管理命令下面还有子命令。
docker container
docker image
docker network
docker node
docker plugin
docker secret
docker service
docker stack
docker swarm
docker system
docker volume
例如:docker swarm init 初始化一个集群,其他命令直接 -h 查看命令就可以了。

本篇按docker官方教程顺序大致介绍一下,也将一下自己的体验过程中遇到的问题和解决办法分享出来。

创建集群

本节的目标:

创建一个集群

添加节点到集群
部署服务到swarm集群中
管理集群

准备工作

在vmware中的虚拟机(这里是centos 7.3 )

192.168.139.128(manager1)
192.168.139.129(manager2)
192.168.139.130(manager3)
192.168.139.131(worker)
安装docker1.12或以后的版本(这里是docker 1.13.1)
设置虚拟机IP
虚拟机中的共享主机IP,在docker swarm创建了overaly网络后,可能引起IP变化,可修改 /etc/sysconfig/network-scripts/ifcfg-ens33来固定IP。
开启防火墙端口
2377/tcp 、7946/tcp/udp,4789/udp端口

创建集群(swarm mode)

在一台128 manager上执行:

# docker swarm init --advertise-addr=192.168.139.128:2377 Swarm initialized: current node (htqmmiiiw8z4cww3c4n1mkbkz) is now a manager. To add a worker to this swarm, run the following command:     docker swarm join \    --token SWMTKN-1-1xl2p1wd6r2ak0ekqtzmw0lf2fc78glrsgqm02wdqmxqap9yjv-8tezcdr89dgsv3byjxm90yvhv \    192.168.139.128:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

此时128就是集群的manager节点(同时也是集群的worker节点),根据返回的信息,我们可以方便的添加一些worker节点,作为集群要考虑单点问题,故我们需要多添加几台作为manager节点。添加之前可以查看一下当前集群中的节点情况:

# docker node lsID                           HOSTNAME        STATUS  AVAILABILITY  MANAGER STATUSm7vv962jgkvjn5padsem5cbmz *  swarm.node1_m1  Ready   Active        Leader

然后执行:

docker swarm join-token manager

返回信息:

To add a manager to this swarm, run the following command:

docker swarm join --token SWMTKN-1-6191qy3f6xkj39cg51gka40mgpq9c7o5tvyu19h3b1o0thh0e4-2kvhkye3194i7mxg3okjdqlog 192.168.139.128:2377
顺便说一下docker swarm join-token 就是查看如何添加manager或worker节点的token

这里打算再添加1个manager节点,在129上执行

docker swarm join \    --token SWMTKN-1-1xl2p1wd6r2ak0ekqtzmw0lf2fc78glrsgqm02wdqmxqap9yjv-ai5q09y6ogmfct4v5xhgsfmga \    192.168.139.128:2377

将130,131作为worker节点,执行

docker swarm join \    --token SWMTKN-1-6191qy3f6xkj39cg51gka40mgpq9c7o5tvyu19h3b1o0thh0e4-e1urle7qhwwvyufdqri4fre4s \    192.168.139.128:2377

现在可以在每一个manager节点上查看一下所有的节点(docker node ls):

9bwmkfxz0fgflp4zu6luequaa swarm.node3-m3 Ready Active

hntv80xrlm22x17i792cdr2j3 swarm.node2_m2 Ready Active Reachable
m7vv962jgkvjn5padsem5cbmz * swarm.node1_m1 Ready Active Leader
yiyz9v3huqd7m0kgjvdu5vppt swarm.node4 Ready Active

可以看到多了一个reachable的管理节点,如果leader挂了,那么reachable节点就会提升为leader。这里面有一些具体的关于raft算法的不在累述。

到此,我们的简易集群已经创建好了,看起来是不是太easy了?

可能会遇到的坑:

  • 没开防火墙的2377/tcp 、7946/tcp/udp,4789/udp端口。
  • 虚拟机中的共享主机IP,在docker swarm创建了overaly网络后,可能引起IP变化,可修改 /etc/sysconfig/network-scripts/ifcfg-ens33来固定IP。

转载于:https://www.cnblogs.com/ikodota/p/use_docker_with_swarm_mode.html

你可能感兴趣的文章
SoapUI Pro Project Solution Collection –Easy develop Groovy Script to improve SoapUI ability
查看>>
[Leetcode] Course Schedule
查看>>
[收藏]String formatting in C# :玩转string.format
查看>>
扯扯所学的编程语言
查看>>
数据库设计准则(第一、第二、第三范式说明)
查看>>
[转]SharePoint 2013配置开发环境,需安装VS2012插件
查看>>
TcxDBTreeList导出EXCEL
查看>>
12/22从东京到布里斯班
查看>>
逻辑思维简易入门
查看>>
《第一行代码——Android》
查看>>
POJ 3358 Period of an Infinite Binary Expansion
查看>>
微积分学习笔记三:定积分
查看>>
javascript有声调的汉字注音字典(兼容各浏览器)
查看>>
sql: 生日赠品中的相关算法
查看>>
卷积神经网络(CNN)
查看>>
分布式文件系统应用(下篇 实践)
查看>>
一起谈.NET技术,.NET 4 并行(多核)编程系列之二 从Task开始
查看>>
PHP框架 Raxan 1.0 最终版发布
查看>>
图像的一般格式
查看>>
面向对象重写(override)与重载(overload)区别
查看>>