900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Docker swarm 集群搭建

Docker swarm 集群搭建

时间:2020-10-28 23:20:08

相关推荐

Docker swarm 集群搭建

Swarm是Docker公司在12月初发布的一套较为简单的工具,用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client inGo, docker_py, docker等)均可以直接与Swarm通信。Swarm几乎全部用go语言来完成开发,上周五,4月17号,Swarm0.2发布,相比0.1版本,0.2版本增加了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。

Swarmdeamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息。下面是Swarm的结构图

环境部署

实验环境

操作系统: Centos 7.2

操作系统内核版本:3.10.0-327.36.1.el7.x86_64

Docker版本:Docker version1.12.6

dtest01 10.139.12.49 swarm manager

dtest02 10.139.11.109 swarm node

dtest03 10.139.12.5 swarm mode

环境准备

关闭seliunx以dtest01为例, dtest02、dtest03按照同样的方法操作

sed -i 's/SELINUX=enabled /SELINUX= disabled/g' /etc/selinux/config

重启服务器reboot

关闭防火墙以dtest01为例, dtest02、dtest03按照同样的方法操作

systemctl stop firewalld

systemctl disable firewalld

配置hosts以dtest01为例, dtest02、dtest03按照同样的方法操作

[root@dtest01 ~]# cat /etc/hosts

127.0.0.1localhost localhost.localdomain localhost4 localhost4.localdomain4

::1localhost localhost.localdomain localhost6 localhost6.localdomain6

10.139.12.49 dtest01

10.139.11.109 dtest02

10.139.12.5dtest03

配置ssh免登陆

使用ssh-keygen命令生成一路回车键

[root@dtest01 ~]# ssh-keygen

配置所有节点密钥登录.

配置所下节点密钥互信,在node1可以免密码登录各节点,只在dtest01上执行:

分发sshkey到各个节点

[root@node1~]#ssh-copy-iddtest01

[root@node1~]#ssh-copy-iddtest02

[root@node1~]#ssh-copy-iddtest03

安装docker

以dtest01为例, dtest02、dtest03按照此方法操作

yum install docker –y

查看docker -v

Docker version 1.12.6, build 88a4867/1.12.6

启动docker systemctl start docker

开机自启动 systemctl enable docker

创建Swarm集群

在dtest01上初始化swram集群:

docker swarm init --advertise-addr 10.139.12.49

Swarm initialized: current node(1ov1r9l904zhvs4uoygt0tmi3) is now a manager.

To add a worker to this swarm, run thefollowing command:

docker swarm join \

--tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t\

10.139.12.49:2377

查看docker swarm是否创建成功

[root@dtest01 ~]# netstat -tnlp | grep docker

tcp6 00 :::7946:::*LISTEN 4646/dockerd-curren

tcp60 0 :::2377 :::* LISTEN 4646/dockerd-curren

检查docker swarm mode信息:

Swarm:active

NodeID: 1ov1r9l904zhvs4uoygt0tmi3

Is Manager: true

ClusterID: br2kb43qhxea1vl2zgygmfq0c

Managers: 2

Nodes: 3

Orchestration:

Task History Retention Limit: 5

Raft:

Snapshot Interval: 10000

Heartbeat Tick: 1

Election Tick: 3

查看swarm集群列表

[root@dtest01 ~]# docker node ls

ID HOSTNAME STATUS AVAILABILITYMANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3 * dtest01.novalocal ReadyActive Leader

将dtest02和dtest03使用worker节点方式加入swarm集群

首先在node1上面查询集群的命令和密钥,在dtest02、dtest03分别执行下面红色区域的命令

[root@dtest01~]#dockerswarmjoin-tokenworker

To add a worker to this swarm, run thefollowing command:

docker swarm join \

--tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t\

10.139.12.49:2377

[root@dtest02~]# docker swarm join --tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t10.139.12.49:2377

This node joined a swarm as a worker.

[root@dtest02 ~]# docker swarm join --tokenSWMTKN-1-4qu7h72chrzlycoltrfu9aitp3omoju46nxey73bjjjf69co4h-4c6benvo38h8wyhiti8j9xd1t10.139.12.49:2377

This node joined a swarm as a worker.

查看集群节点

[root@dtest01 ~]# docker node ls

ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3 * dtest01 Ready ActiveLeader

4v1mjgrvpdba9uxmv9riti96n dtest02 Ready Active

9cd5n3rgd6n5ids6mxuqcfd3c dtest03Ready Active

为了swarm集群的高可用,和避免单点故障.我们希望建立多个manager节点集群.将dtest02提升为manager节点

docker node promote dtest02

[root@dtest01 ~]# docker node ls

ID HOSTNAME STATUS AVAILABILITYMANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3 * dtest01 ReadyActive Leader

4v1mjgrvpdba9uxmv9riti96n dtest02 ReadyActive Reachable

9cd5n3rgd6n5ids6mxuqcfd3c dtest03Ready Active

现在我们可以看到,已经有2个manager节点了, 一个Leader节点, 一个Reachable节点. 现在你也可以在dtest02上面管理整个swarm集群.

[root@dtest02 ~]# docker node ls

ID HOSTNAME STATUS AVAILABILITYMANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3 * dtest01 ReadyActive Leader

4v1mjgrvpdba9uxmv9riti96n dtest02 ReadyActive Reachable

9cd5n3rgd6n5ids6mxuqcfd3c dtest03Ready Active

备注:查看命令帮助docker node –help

使用dtest02让dtest03下线

docker node update --availability drain9cd5n3rgd6n5ids6mxuqcfd3c

[root@dtest02 ~]# docker node ls

ID HOSTNAME STATUS AVAILABILITYMANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3 dtest01 Ready Active Leader

4v1mjgrvpdba9uxmv9riti96n * dtest02Ready Active Reachable

9cd5n3rgd6n5ids6mxuqcfd3c dtest03Ready Drain

使用dtest02让dtest03上线

docker node update --availability active 9cd5n3rgd6n5ids6mxuqcfd3c

[root@dtest02 ~]# docker node ls

ID HOSTNAME STATUS AVAILABILITYMANAGER STATUS

1ov1r9l904zhvs4uoygt0tmi3 dtest01Ready Active Leader

4v1mjgrvpdba9uxmv9riti96n * dtest02Ready Active Reachable

9cd5n3rgd6n5ids6mxuqcfd3c dtest03 ReadyActive

本文转自 水滴石川1 51CTO博客,原文链接:/sdsca/1962601,如需转载请自行联系原作者

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。