Docker Swarm集群搭建

1 背景

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

2 环境

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

主机IP地址说明
xt130.6.5.21node
xt230.6.5.22node
xt330.6.5.23master
xt430.6.5.24node
yum30.6.5.25yum源 ansible
host30.6.5.99个人电脑

3 安装部署

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

3.1 操作系统部署

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

3.1.1 主机名设置

查看主机名

hostname

设置主机名

hostnamectl set-hostname name

修改完毕验证

hostname status

打印输出
在这里插入图片描述

3.1.2 网络设置

查看网络地址

ip addr

在这里插入图片描述
配置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/242377tcp集群管理端口
30.6.5.21/22/23/247946tcp/udp节点之间通讯端口
30.6.5.21/22/23/244789tcpoverlay网络通讯端口
30.6.5.235000tcp私有仓库端口
30.6.5.2580tcpyum源端口
30.6.5.239000tcpdockerui使用端口

查看端口

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

在这里插入图片描述
卸载目录

# 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

在这里插入图片描述
测试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地址
在这里插入图片描述
设置访问目录

创建链接

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

浏览器中输入
http://30.6.5.25/cdrom/
在这里插入图片描述

更改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"

在这里插入图片描述
验证局域网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环境搭建的过程。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建 Docker Swarm 集群,你可以按照以下步骤进行操作: 1. 安装 Docker:在每个节点上安装 Docker,可以按照 Docker 官方文档的指引进行安装。确保所有节点上都安装了相同版本的 Docker。 2. 初始化 Swarm:选择其中一个节点作为 Swarm Manager,运行以下命令初始化 Swarm: ``` docker swarm init ``` 这将生成一个 Token,用于其他节点加入 Swarm。 3. 加入节点:在其他节点上运行以下命令,将它们加入 Swarm: ``` docker swarm join --token <token> <manager-ip>:<manager-port> ``` `<token>` 是在初始化 Swarm 时生成的 Token,`<manager-ip>` 和 `<manager-port>` 是 Swarm Manager 的 IP 地址和端口。 4. 部署服务:使用 Docker Stack 或 Docker Compose 编写服务的配置文件,并使用以下命令在 Swarm 上部署服务: ``` docker stack deploy -c <compose-file> <stack-name> ``` `<compose-file>` 是服务配置文件的路径,`<stack-name>` 是你给服务取的名称。 5. 扩展和管理集群:使用 Docker 命令扩展、更新、删除服务,以及管理集群中的节点。例如: - 扩展服务的副本数:`docker service scale <service-name>=<replica-count>` - 更新服务:`docker service update <service-name> --image <new-image>` - 删除服务:`docker stack rm <stack-name>` - 查看集群状态:`docker node ls` 这些步骤可以帮助你搭建一个简单的 Docker Swarm 集群。你可以根据实际需求进行配置和管理。如果需要更详细的指导,可以参考 Docker 官方文档中关于 Swarm 的内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值