Docker Swarm集群部署

1 方案介绍

1.1 概述

要利用Swarm模式的容错功能,建议创建奇数的管理节点。

当有多个管理节点时,如果一个leader节点宕机,其余的manager节点将选择一个新的leader,并恢复集群状态的编排和维护。默认情况下,管理节点也运行任务。

三个管理节点的Swarm最大允许一个管理节点宕机。

1.2 软件包

docker-20108.tar.gz下载地址:
https://download.csdn.net/download/Zhuge_Dan/85064880

docker-201012.tar.gz下载地址:
https://download.csdn.net/download/Zhuge_Dan/85067951

本文使用docker-20108.tar.gz作为示例。

2 Swarm集群搭建

2.1 IP规划

本示例中使用6台机器为例。IP规划如下:

角色 主机名 IP地址 防火墙规则
主管理节点(manager node) docker01 172.16.86.11 开放端口:2375-2377 tcp/udp、7946 tcp/udp、4789 udp
从管理节点(manager node) docker02 172.16.86.12 开放端口:2375-2377 tcp/udp、7946 tcp/udp、4789 udp
从管理节点(manager node) docker03 172.16.86.13 开放端口:2375-2377 tcp/udp、7946 tcp/udp、4789 udp
工作节点(worker node) docker04 172.16.86.14 开放端口:2375-2377 tcp/udp、7946 tcp/udp、4789 udp
工作节点(worker node) docker05 172.16.86.15 开放端口:2375-2377 tcp/udp、7946 tcp/udp、4789 udp
工作节点(worker node) docker06 172.16.86.16 开放端口:2375-2377 tcp/udp、7946 tcp/udp、4789 udp

默认的管理服务端口为2377,需要能被工作节点访问到。
为了支持集群的成员发现和外部服务映射,还需要在所有节点上开启7946 TCP/UDP4789 UDP端口。

2.2 基础配置

操作设备:所有节点

2.2.1 关闭SELinux

[root@docker01 ~]# setenforce 0
[root@docker01 ~]# vi /etc/selinux/config
SELINUX=disabled								#将SELINUX设置为disabled
[root@docker01 ~]# getenforce 
Permissive

2.2.2 关闭防火墙或开放需要的业务端口

[root@docker01 ~]# systemctl stop firewalld								#关闭防火墙
[root@docker01 ~]# systemctl disable firewalld								#禁止防火墙开机自启

或者:

[root@docker01 ~]# firewall-cmd --zone=public --add-port=2375-2377/tcp --add-port=2375-2377/udp --add-port=7946/tcp --add-port=7946/udp --add-port=4789/udp --permanent
success
[root@docker01 ~]# firewall-cmd --reload
success
[root@docker01 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources:
  services: dhcpv6-client ssh
  ports: 2375-2377/tcp 2375-2377/udp 7946/tcp 7946/udp 4789/udp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

2.2.3 调整max_open_files

[root@docker01 ~]# echo '* soft nofile 65535' >> /etc/security/limits.conf

[root@docker01 ~]# echo '* hard nofile 65535' >> /etc/security/limits.conf

[root@docker01 ~]# cat /etc/security/limits.conf | tail -2
* soft nofile 65535
* hard nofile 65535

[root@docker01 ~]# echo 'ulimit -SHn 65535' >> /etc/rc.d/rc.local

[root@docker01 ~]# cat /etc/rc.d/rc.local | tail -1
ulimit -SHn 65535

[root@docker01 ~]# chmod +x /etc/rc.d/rc.local								#为rc.local增加可执行权限

2.2.4 重启检查SELinux、firewalld和open files

[root@docker01 ~]# reboot

[root@docker01 ~]# getenforce								#查看SELinux是否关闭成功
Disabled								#关闭成功

[root@docker01 ~]# systemctl status firewalld								#查看防火墙状态
● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
    Active: inactive (dead)								#防火墙已关闭
      Docs: man:firewalld(1)

[root@docker01 ~]# systemctl is-enabled firewalld								#查看防火墙是否开机自启
disabled								#防火墙已禁止开机自启

[root@docker01 ~]# ulimit -a | grep open
open files                      (-n) 65535								#open files已调整为65535

2.3 配置主机名解析

操作设备:所有节点

将所有主机的IP和主机名对应关系配置到系统中,在所有服务器上执行:

[root@docker01 ~]# echo '172.16.86.11    docker01' >> /etc/hosts
[root@docker01 ~]# echo '172.16.86.12    docker02' >> /etc/hosts
[root@docker01 ~]# echo '172.16.86.13    docker03' >> /etc/hosts
[root@docker01 ~]# echo '172.16.86.14    docker04' >> /etc/hosts
[root@docker01 ~]# echo '172.16.86.15    docker05' >> /etc/hosts
[root@docker01 ~]# echo '172.16.86.16    docker06' >> /etc/hosts
[root@docker01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.86.11    docker01
172.16.86.12    docker02
172.16.86.13    docker03
172.16.86.14    docker04
172.16.86.15    docker05
172.16.86.16    docker06

然后通过ping其它主机名检查是否生效。

2.4 安装Docker

操作设备:所有节点

将离线安装包上传到服务器。在所有服务器上执行:

A.安装docker-20108.tar.gz

[root@docker01 ~]# cd /usr/local/

[root@docker01 local]# cp -r /tmp/docker-20108.tar.gz /usr/local/

[root@docker01 local]# mkdir /usr/local/docker-20108

[root@docker01 local]# tar -xPf /usr/local/docker-20108.tar.gz -C /usr/local/docker-20108

[root@docker01 local]# cd /usr/local/docker-20108

[root@docker01 docker-20108]# ls -lh
total 106M
-rw-r--r--. 1 root root 256K Aug 23  2021 audit-2.8.5-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 102K Aug 23  2021 audit-libs-2.8.5-4.el7.x86_64.rpm
-rw-r--r--. 1 root root  77K Aug 23  2021 audit-libs-python-2.8.5-4.el7
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值