Docker Swarm集群搭建

Docker Swarm集群搭建

  • 1 背景
  • 2 环境
  • 3 安装部署
    • 3.1 操作系统部署
      • 3.1.1 主机名设置
      • 3.1.2 网络设置
      • 3.1.3 端口设置
    • 3.2 中间件部署
      • 3.2.1 ansible安装
        • 3.2.1.1 安装
        • 3.2.1.2 配置
        • 3.2.1.3 测试
        • 3.2.1.4 批量开具端口
      • 3.2.2 yum源设置
        • 3.2.2.1 挂载系统盘
        • 3.2.2.2 设置本地源
        • 3.2.2.3 安装web服务
        • 3.2.2.4 验证
      • 3.2.3 docker 部署
    • 3.3 Docker Swarm集群部署
      • 3.3.1 创建Swarm集群
      • 3.3.2 添加节点
      • 3.3.3 查看集群状态

1 背景

docker是从前几年开始接触,跟传统的实体服务器上搭建环境相比,已经方便了很多,但是docker集群的搭建,今年以前还停留在听、说阶段,比如大名鼎鼎的kubernetes,听、说、做是三种截然不同的场景。今年开始工作中接触到了docker swarm集群,正好入手开始。本篇以swarm集群环境搭建入手介绍。

2 环境

xt1~4为系统服务器,固定服务器,yum和hosts为临时服务器,作为部署安装使用。操作系统:centos7.9.2009 Core最小系统安装。

主机 IP地址 说明
xt1 30.6.5.21 node
xt2 30.6.5.22 node
xt3 30.6.5.23 master
xt4 30.6.5.24 node
yum 30.6.5.25 yum源 ansible
host 30.6.5.99 个人电脑

3 安装部署

安装部署为操作系统的安装、中间件的安装部署、docker swarm集群部署三部分内容。

3.1 操作系统部署

操作系统使用的Centos7.9.2009 Core最小系统安装法。使用云服务器的情况下,直接选择服务器版本即可。操作系统的安装不再过多介绍了,从安装完操作系统后的主机名、网络、端口的设置做介绍。

3.1.1 主机名设置

查看主机名

hostname

设置主机名

hostnamectl set-hostname name

修改完毕验证

hostname status

打印输出
Docker Swarm集群搭建_第1张图片

3.1.2 网络设置

查看网络地址

ip addr

Docker Swarm集群搭建_第2张图片
配置IP地址为enp0s8
备份网卡信息

cp /etc/sysconfig/network-scripts/ifcfg-enp0s8 ifcfg-enp0s8 

修改网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-enp0s8
编辑网卡信息

BOOTPROTO=static
IPADDR=30.6.5.21
NETMASK=255.255.255.0
GATEWAY=30.6.5.1
ONBOOT=yes

保存退出
重启网卡

systemctl restart network

查看网络

ip addr

3.1.3 端口设置

服务器端口默认是关闭的,处于安全考虑的原因,但是业务系统之间交互依托端口的输入输出门阶,在此处业务系统需要的端口资源如下:

服务器 端口 协议类型 说明
30.6.5.21/22/23/24 2377 tcp 集群管理端口
30.6.5.21/22/23/24 7946 tcp/udp 节点之间通讯端口
30.6.5.21/22/23/24 4789 tcp overlay网络通讯端口
30.6.5.23 5000 tcp 私有仓库端口
30.6.5.25 80 tcp yum源端口
30.6.5.23 9000 tcp dockerui使用端口

查看端口

firewall-cmd --query-port=2377/tcp  

添加端口
建议:针对多台服务器的端口后面使用ansible批量开具端口

firewall-cmd --permanent --add-port=2375/tcp
firewall-cmd --permanent --add-port=2377/tcp
firewall-cmd --permanent --add-port=7946/tcp
firewall-cmd --permanent --add-port=7946/udp
firewall-cmd --permanent --add-port=4789/tcp
firewall-cmd --permanent --add-port=5000/tcp
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --reload  # 重载防火墙
firewall-cmd --zone=public --list-ports  # 查看所有端口

3.2 中间件部署

中间件包括运维使用的ansible的安装、局域网yum源设置、docker批量部署,中间件部署环节都是使用的离线环境下部署。

3.2.1 ansible安装

3.2.1.1 安装

ansible的下载在本篇就不做介绍了,如果需要了解,移步《[环境搭建]-[局域网ansible离线安装]》
将压缩包拷贝至目标目录

mkdir -p /opt/ansible
cp ansible_v2.9.9_install.tar.gz  /opt/ansible

解压安装包

tar -xzvf ansible_v2.9.9_install.tar.gz  

进入解压目录

cd ansible_v2.9.9_install	

赋权执行权限

chmod +x ansible_v2.9.0_install.sh		

安装执行

sh ansible_v2.9.0_install.sh

验证

ansible --version
3.2.1.2 配置

vi /etc/hosts

[xt]
30.6.5.2[1:4]
[xt:vars]
ansible_ssh_user=root
ansible_ssh_pass=xxxxxxxxxx
3.2.1.3 测试
ansible xt -m ping
3.2.1.4 批量开具端口
ansible xt -m shell -a "firewall-cmd --zone=public --add-port=2377/tcp --permanent"
ansible xt -m shell -a "firewall-cmd --zone=public --add-port=7946/udp --permanent"
ansible xt -m shell -a "firewall-cmd --zone=public --add-port=7946/tcp --permanent"
ansible xt -m shell -a "firewall-cmd --zone=public --add-port=4789/tcp --permanent"
ansible xt -m shell -a "firewall-cmd --reload"

3.2.2 yum源设置

yum源为局域网内的yum源设置

3.2.2.1 挂载系统盘

将系统盘挂载到系统或者将ISO文件上传到制定的目录
创建文件夹
挂载目录

mkdir -p /mnt/cdrom/

挂载目录

mount -t auto /dev/cdrom /mnt/cdrom

Docker Swarm集群搭建_第3张图片
卸载目录

# umount /mnt/cdrom
3.2.2.2 设置本地源

创建yum源备份目录

mv /etc/yum.repos.d /etc/yum.repos.d_bak/

创建yum源目录

mkdir -p /etc/yum.repos.d/

进入yum源目录

cd /etc/yum.repos.d/

创建局域网yum源

vi localrepos.repo

[local]
name=CentOS-79-server
baseurl=file:///mnt/cdrom
gpgcheck=1
enabled=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

清空yum缓存

yum clean all
yum makecache

Docker Swarm集群搭建_第4张图片
测试yum源
列表会有三列输出,在最后一列显示的是yum的ID(这里就是上面的[local]),有你设置的yum的ID就是成功了。
在这里插入图片描述

3.2.2.3 安装web服务

安装web服务

yum install -y httpd

设置开机启动

systemctl enable httpd

启动服务器

systemctl start httpd

开启80端口

firewall-cmd --add-port=80/tcp --permanent

重启防火墙

firewall-cmd --reload

查询端口状态

firewall-cmd --query-port=80/tcp

验证
浏览器中输入安装httpd服务的IP地址
Docker Swarm集群搭建_第5张图片
设置访问目录

创建链接

ln -s /mnt/cdrom /var/www/html

浏览器中输入
http://30.6.5.25/cdrom/
Docker Swarm集群搭建_第6张图片

更改yum源文件

vi /etc/yum.repos.d/localrepo.repo

[local]
name=CentOS-79-server
baseurl=http://30.6.5.25/cdrom/
gpgcheck=1
enabled=1
gpgkey=http://30.6.5.25/cdrom/RPM-GPG-KEY-CentOS-7
3.2.2.4 验证

分发yum源文件
思路参考本机yum源设置

ansible xt -m shell -a "mv /etc/yum.repos.d /etc/yum.repos.d_bak/
ansible xt -m file -a "path=/etc/yum.repos.d state=directory"
ansible xt -m copy -a "src=/etc/yum.repos.d/localrepo.repo dest=/etc/yum.repos.d/
ansible xt -m shell -a "yum clean all"
ansible xt -m shell -a "yum makecache"

Docker Swarm集群搭建_第7张图片
验证局域网yum

ansible xt -m yum -a "name=vim state=present"
ansible xt -m shell -a "version --version | grep -n 1"

3.2.3 docker 部署

参考《CentOS7在/离线安装docker》中的离线安装部分。

下载
创建目录

mkdir -p /home/package/docker/yum-utils
mkdir -p /home/package/docker/docker_install_rpm

打包

拷贝解压

ansible xt -m unarchive -a "src=docker.tar.gz dest=/home/package copy=yes mode=0755"

安装

ansible xt -m shell -a "/home/package/docker/docker_offline_install.sh"

3.3 Docker Swarm集群部署

3.3.1 创建Swarm集群

首先选择主机,在此以 30.6.5.23作为swarm管理主机,其他为节点
登陆主机操作
初始化

docker swarm init --advertise-addr 30.6.5.23

–advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系。命令的输出包含了其它节点如何加入集群的命令。
打印输出token,每个token都不相同,请以自己操作中打印输出的信息为准,进行下面步骤输入的操作

docker swarm join --token SWMTKN-1-08z3pricsbme82lfnyt5khax5ksubs9esesgwdsu6fnr2n1907-aeztjh8oxx8lce97qpn7nv7o5 30.6.5.23:2377

3.3.2 添加节点

复制3.3.1中生成的token,将其他节点(21/22/24)添加到swarm集群中,在每个终端上执行如下命令

docker swarm join --token SWMTKN-1-08z3pricsbme82lfnyt5khax5ksubs9esesgwdsu6fnr2n1907-aeztjh8oxx8lce97qpn7nv7o5 30.6.5.23:2377

打印输出
This node joined a swarm as a worker.
说明添加节点无误。

3.3.3 查看集群状态

在master上查看集群节点的状态

docker node ls

在这里插入图片描述
以上为docker swarm环境搭建的过程。

你可能感兴趣的:(服务器环境搭建,docker,运维,linux)