20 Docker容器集群网络架构:三、Docker集群离线部署 3.1 环境准备 3.1.1 配置主机名 3.1.2 关闭firewall防火墙 3.1.3 关闭iptables防火墙 3.1.3.1 安装iptables 3.1.3.2 禁用iptables 3.1.3.3 清空防火墙规则 3.1.4 关闭selinux 3.1.4.1 临时关闭 3.1.4.2 彻底关闭 3.1.4.3 查询关闭情况 3.1.5 配置时间同步 3.1.5.1 安装chrony 3.1.5.2 配置时钟源 3.1.5.3 重新启动chrony服务,并配置开机启动 3.1.5.4 设置时区,同步时间 3.1.6 开启包转发功能和修改内核参数 3.1.6.1 加载br_netfilter模块 3.1.6.2 设置br_netfilter内核参数 3.1.6.3 使br_netfilter内核参数生效 3.1.6.4 开机自动加载模块 3.1.6.5 新建加载模块文件 3.1.6.6 设置权限 3.1.6.7 查看模块加载情况 3.1.7 安装基础软件包 3.1.8 安装docker依赖包 3.1.9 上传文件并解压 3.1.10 设置本地docker yum源 3.1.10.1 创建docker.repo 3.1.10.2 刷新yum缓存 3.2 离线部署 Docker 3.3 关联 etcd 3.3.1 docker01 关联 etcd 3.3.2 docker02 关联 etcd 3.3.3 docker03 关联 etcd
| 主机名 | IP | 操作系统 | 配置 | 部署软件 |
|---|---|---|---|---|
| docker01 | 192.168.0.121 | CentOS 7.9 x64 | 1C/4G | etcd+docker |
| docker02 | 192.168.0.122 | CentOS 7.9 x64 | 1C/4G | etcd+docker |
| docker03 | 192.168.0.123 | CentOS 7.9 x64 | 1C/4G | etcd+docker |
以节点docker01为例,其它节点参照执行。
[root@localhost ~]# hostnamectl set-hostname docker01 && bash
[root@docker01 ~]# systemctl stop firewalld && systemctl disable firewalld
[root@docker01 ~]# yum install iptables-services -y
root@xianchaomaster1 ~]# systemctl stop iptables && systemctl disable iptables
[root@xianchaomaster1~]# iptables -F
[root@docker01 ~]# setenforce 0
[root@docker01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
注意: 修改selinux配置文件之后,重启机器,selinux才能彻底生效。
[root@docker01 ~]# getenforce
显示Disabled表示selinux关闭成功。
[root@docker01 ~]# yum install chrony -y
[root@docker01 ~]# echo "server 192.168.0.8 iburst" >> /etc/chrony.conf
注意: 192.168.0.8为时钟服务器。
[root@docker01 ~] # systemctl restart chronyd.service
[root@docker01 ~] # systemctl status chronyd.service
[root@docker01 ~] # systemctl enable chronyd.service
[root@docker01 ~] # systemctl list-unit-files |grep chronyd.service
[root@docker01 ~] # timedatectl set-timezone Asia/Shanghai
[root@docker01 ~] # chronyc sources
[root@docker01 ~] # timedatectl status
内核参数修改:br_netfilter模块用于将桥接流量转发至iptables链,br_netfilter内核参数需要开 启转发。
[root@docker01 ~]# modprobe br_netfilter
[root@docker01 ~] # cat > /etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
[root@docker01 ~]# sysctl -p /etc/sysctl.d/docker.conf
重启后模块失效,下面是开机自动加载模块的脚本 在/etc/新建rc.sysinit文件
[root@docker01 ~] # cat > /etc/rc.sysinit <<EOF
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules; do
[ -x \$file ] && \$file
done
EOF
在/etc/sysconfig/modules/目录下新建文件如下
[root@docker01 ~] # cat > /etc/sysconfig/modules/br_netfilter.modules <<EOF
modprobe br_netfilter
EOF
[root@docker01 ~]# chmod 755 /etc/sysconfig/modules/br_netfilter.modules
重启机器模块也会自动加载。
[root@localhost ~] # lsmod | grep br_netfilter
br_netfilter 22209 0
bridge 136173 1 br_netfilter
注意:Docker安装后出现:WARNING: bridge-nf-call-iptables is disabled的解决办法:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
将Linux系统作为路由或者VPN服务就必须要开启IP转发功能。当linux主机有多个网卡时一个网卡收 到的信息是否能够传递给其他的网卡,如果设置成1的话可以进行数据包转发,可以实现VxLAN等功 能。不开启会导致docker部署应用无法访问。
[root@docker01 ~] # yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack
[root@docker01 ~] #
[root@docker01 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
将“docker-19.03.15-stable.tar.gz” 压缩包上传到 /opt目录
[root@docker01 ~] # cd /opt
[root@docker01 opt] #
[root@docker01 opt] # ls
docker-19.03.15-stable.tar.gz etcd-v3.0.12-linux-amd64.tar.gz rh
[root@docker01 opt] #
[root@docker01 opt] # tar xzf docker-19.03.15-stable.tar.gz
[root@docker03 opt] #
[root@docker01 opt] # cd /etc/yum.repos.d
[root@docker01 yum.repos.d] #
[root@docker01 yum.repos.d] # echo '[docker]
name =docker
baseurl =file:///opt/docker-19.03.15-stable
enabled = 1
gpgcheck = 0 ' > docker.repo
[root@docker01 yum.repos.d] #
[root@docker01 yum.repos.d] # yum clean all && yum makecache
已加载插件:fastestmirror, langpacks
正在清理软件源: base docker epel extras updates
Cleaning up list of fastest mirrors
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
docker | 2.9 kB 00:00:00
epel | 4.3 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/19): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/19): base/7/x86_64/primary_db | 6.1 MB 00:00:14
(3/19): docker/filelists_db | 23 kB 00:00:00
(4/19): docker/other_db | 15 kB 00:00:00
(5/19): docker/primary_db | 49 kB 00:00:00
(6/19): base/7/x86_64/filelists_db | 7.2 MB 00:00:17
(7/19): epel/x86_64/group | 399 kB 00:00:03
(8/19): base/7/x86_64/other_db | 2.6 MB 00:00:05
(9/19): epel/x86_64/updateinfo | 1.0 MB 00:00:02
(10/19): epel/x86_64/prestodelta | 592 B 00:00:00
(11/19): epel/x86_64/primary_db | 8.7 MB 00:00:17
(12/19): extras/7/x86_64/filelists_db | 305 kB 00:00:05
(13/19): extras/7/x86_64/primary_db | 253 kB 00:00:06
(14/19): extras/7/x86_64/other_db | 154 kB 00:00:01
(15/19): epel/x86_64/other_db | 4.1 MB 00:00:15
(16/19): epel/x86_64/filelists_db | 15 MB 00:00:44
(17/19): updates/7/x86_64/filelists_db | 15 MB 00:00:40
(18/19): updates/7/x86_64/other_db | 1.6 MB 00:00:04
(19/19): updates/7/x86_64/primary_db | 27 MB 00:00:57
元数据缓存已建立
[root@docker01 yum.repos.d] #
[root@docker01 yum.repos.d] # yum install docker-ce docker-ce-cli containerd.io -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 containerd.io.x86_64.0.1.6.28-3.2.el7 将被 安装
--> 正在处理依赖关系 container-selinux > = 2:2.74,它被软件包 containerd.io-1.6.28-3.2.el7.x86_64 需要
---> 软件包 docker-ce.x86_64.3.19.03.15-3.el7 将被 安装
---> 软件包 docker-ce-cli.x86_64.1.19.03.15-3.el7 将被 安装
--> 正在检查事务
---> 软件包 container-selinux.noarch.2.2.119.2-1.911c772.el7_8 将被 安装
--> 解决依赖关系完成
依赖关系解决
===========================================================================================================================
Package 架构 版本 源 大小
===========================================================================================================================
正在安装:
containerd.io x86_64 1.6.28-3.2.el7 docker 35 M
docker-ce x86_64 3:19.03.15-3.el7 docker 24 M
docker-ce-cli x86_64 1:19.03.15-3.el7 docker 38 M
为依赖而安装:
container-selinux noarch 2:2.119.2-1.911c772.el7_8 docker 40 k
事务概要
===========================================================================================================================
安装 3 软件包 ( + 1 依赖软件包)
总下载量:98 M
安装大小:391 M
Downloading packages:
---------------------------------------------------------------------------------------------------------------------------
总计 313 MB/s | 98 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch 1/4
正在安装 : containerd.io-1.6.28-3.2.el7.x86_64 2/4
正在安装 : 1:docker-ce-cli-19.03.15-3.el7.x86_64 3/4
正在安装 : 3:docker-ce-19.03.15-3.el7.x86_64 4/4
验证中 : 3:docker-ce-19.03.15-3.el7.x86_64 1/4
验证中 : 1:docker-ce-cli-19.03.15-3.el7.x86_64 2/4
验证中 : containerd.io-1.6.28-3.2.el7.x86_64 3/4
验证中 : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch 4/4
已安装:
containerd.io.x86_64 0:1.6.28-3.2.el7 docker-ce.x86_64 3:19.03.15-3.el7 docker-ce-cli.x86_64 1:19.03.15-3.el7
作为依赖被安装:
container-selinux.noarch 2:2.119.2-1.911c772.el7_8
完毕!
[root@docker01 yum.repos.d] #
[root@docker01 etcd-v3.0.12-linux-amd64] # /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.0.121:2379 --cluster-advertise=192.168.0.121:2375 &
[1] 20722
[root@docker01 etcd-v3.0.12-linux-amd64] # INFO[2024-10-20T10:05:01.536262354+08:00] Starting up
WARN[2024-10-20T10:05:01.536688946 + 08:00] [!] DON 'T BIND ON ANY IP ADDRESS WITHOUT setting --tlsverify IF YOU DON'T KNOW WHAT YOU 'RE DOING [!]
INFO[2024-10-20T10:05:01.548617080 + 08:00] libcontainerd: started new containerd process pid = 20727
INFO[2024-10-20T10:05:01.548675994 + 08:00] parsed scheme: "unix" module =grpc
INFO[2024-10-20T10:05:01.548684269 + 08:00] scheme "unix" not registered, fallback to default scheme module =grpc
INFO[2024-10-20T10:05:01.548702390 + 08:00] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock 0 <nil>}] <nil>} module =grpc
INFO[2024-10-20T10:05:01.548710625 + 08:00] ClientConn switching balancer to "pick_first" module =grpc
WARN[0000] containerd config version `1` has been deprecated and will be removed in containerd v2.0, please switch to version `2`, see https://github.com/containerd/containerd/blob/main/docs/PLUGINS.md #version-header
INFO[2024-10-20T10:05:01.612336153 + 08:00] starting containerd revision =ae07eda36dd25f8a1b98dfbf587313b99c0190bb version = 1.6.28
.
.
.
INFO[2024-10-20T10:05:02.000419428 + 08:00] Loading containers: done.
INFO[2024-10-20T10:05:02.081941022 + 08:00] Docker daemon commit =99e3ed8919 graphdriver(s) =overlay2 version = 19.03.15
INFO[2024-10-20T10:05:02.082037629 + 08:00] Daemon has completed initialization
INFO[2024-10-20T10:05:02.099168252 + 08:00] API listen on /var/run/docker.sock
INFO[2024-10-20T10:05:02.099238413 + 08:00] API listen on [::]:2375
INFO[2024-10-20T10:05:02.224219879 + 08:00] 2024/10/20 10:05:02 [INFO] serf: EventMemberJoin: docker01 192.168.0.121
[root@docker02 ~] # /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.0.122:2379 --cluster-advertise=192.168.0.122:2375 &
[1] 10674
[root@docker02 etcd-v3.0.12-linux-amd64] # INFO[2024-10-20T10:06:16.006269470+08:00] Starting up
WARN[2024-10-20T10:06:16.006811091 + 08:00] [!] DON 'T BIND ON ANY IP ADDRESS WITHOUT setting --tlsverify IF YOU DON'T KNOW WHAT YOU 'RE DOING [!]
INFO[2024-10-20T10:06:16.018644112 + 08:00] libcontainerd: started new containerd process pid = 20738
INFO[2024-10-20T10:06:16.018703306 + 08:00] parsed scheme: "unix" module =grpc
INFO[2024-10-20T10:06:16.018712067 + 08:00] scheme "unix" not registered, fallback to default scheme module =grpc
INFO[2024-10-20T10:06:16.018730708 + 08:00] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock 0 <nil>}] <nil>} module =grpc
INFO[2024-10-20T10:06:16.018739039 + 08:00] ClientConn switching balancer to "pick_first" module =grpc
WARN[0000] containerd config version `1` has been deprecated and will be removed in containerd v2.0, please switch to version `2`, see https://github.com/containerd/containerd/blob/main/docs/PLUGINS.md #version-header
INFO[2024-10-20T10:06:16.080871096 + 08:00] starting containerd revision =ae07eda36dd25f8a1b98dfbf587313b99c0190bb version = 1.6.28
.
.
.
INFO[2024-10-20T10:06:16.506582746 + 08:00] Docker daemon commit =99e3ed8919 graphdriver(s) =overlay2 version = 19.03.15
INFO[2024-10-20T10:06:16.506676229 + 08:00] Daemon has completed initialization
INFO[2024-10-20T10:06:16.521548478 + 08:00] API listen on /var/run/docker.sock
INFO[2024-10-20T10:06:16.521628932 + 08:00] API listen on [::]:2375
INFO[2024-10-20T10:06:16.713715029 + 08:00] 2024/10/20 10:06:16 [INFO] serf: EventMemberJoin: docker02 192.168.0.122
INFO[2024-10-20T10:06:16.718314246 + 08:00] 2024/10/20 10:06:16 [INFO] serf: EventMemberJoin: docker01 192.168.0.121
[root@docker03 etcd-v3.0.12-linux-amd64] # /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.0.123:2379 --cluster-advertise=192.168.0.123:2375 &
[1] 20735
[root@docker03 etcd-v3.0.12-linux-amd64] # INFO[2024-10-20T10:06:51.544315033+08:00] Starting up
WARN[2024-10-20T10:06:51.545038092 + 08:00] [!] DON 'T BIND ON ANY IP ADDRESS WITHOUT setting --tlsverify IF YOU DON'T KNOW WHAT YOU 'RE DOING [!]
INFO[2024-10-20T10:06:51.556496715 + 08:00] libcontainerd: started new containerd process pid = 20740
INFO[2024-10-20T10:06:51.556557386 + 08:00] parsed scheme: "unix" module =grpc
INFO[2024-10-20T10:06:51.556565615 + 08:00] scheme "unix" not registered, fallback to default scheme module =grpc
INFO[2024-10-20T10:06:51.556584215 + 08:00] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock 0 <nil>}] <nil>} module =grpc
INFO[2024-10-20T10:06:51.556592529 + 08:00] ClientConn switching balancer to "pick_first" module =grpc
WARN[0000] containerd config version `1` has been deprecated and will be removed in containerd v2.0, please switch to version `2`, see https://github.com/containerd/containerd/blob/main/docs/PLUGINS.md #version-header
INFO[2024-10-20T10:06:51.620794493 + 08:00] starting containerd revision =ae07eda36dd25f8a1b98dfbf587313b99c0190bb version = 1.6.28
.
.
.
INFO[2024-10-20T10:06:52.056021068 + 08:00] Docker daemon commit =99e3ed8919 graphdriver(s) =overlay2 version = 19.03.15
INFO[2024-10-20T10:06:52.056113053 + 08:00] Daemon has completed initialization
INFO[2024-10-20T10:06:52.089439396 + 08:00] API listen on /var/run/docker.sock
INFO[2024-10-20T10:06:52.089522277 + 08:00] API listen on [::]:2375
INFO[2024-10-20T10:06:52.263852615 + 08:00] 2024/10/20 10:06:52 [INFO] serf: EventMemberJoin: docker03 192.168.0.123
INFO[2024-10-20T10:06:52.265731646 + 08:00] 2024/10/20 10:06:52 [INFO] serf: EventMemberJoin: docker01 192.168.0.121
INFO[2024-10-20T10:06:52.265788158 + 08:00] 2024/10/20 10:06:52 [INFO] serf: EventMemberJoin: docker02 192.168.0.122
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/291614/viewspace-3050500/ ,如需转载,请注明出处,否则将追究法律责任。