Docker-Swarm分布式部署

规划

主机规划

OS Service 角色

192.168.89.201(2C/2G)    Docker    Docker_Swarm_Manager(Work)
192.168.56.202(2C/2G)    Docker    Docker_Swarm_Work1
192.168.56.203(2C/2G)    Docker    Docker_Swarm_Work2

⚠注意:如果你是正式环境下进行部署,Manager 必须大于等于 3 台且为奇数(因为在 Manager 挂掉后要进行新 Manager 选举)。该文档的内容结合官方来进行简单测试使用,生成环境中最低服务器数量为(3主+3从)。

版本规划

LinuxCentOS 7.9Docker:18.06.3

(其他版本可以参照)

搭建Swarm集群

打开防火墙(Swarm需要)
管理节点打开2377

manager

firewall-cmd --zone=public --add-port=2377/tcp --permanent

所有节点打开以下端口

所有node

firewall-cmd --zone=public --add-port=7946/tcp --permanent
firewall-cmd --zone=public --add-port=7946/udp --permanent
firewall-cmd --zone=public --add-port=4789/tcp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent

所有节点重启防火墙

所有node

firewall-cmd --reload
systemctl restart docker

注:图个方便可以直接关闭防火墙

安装Docker

使用官方安装脚本自动安装
安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

Docker Swarm 集群部署

其实 Docker Swarm 集群很简单,一条命令即可完成。

初始化 Linux

修改主机名

hostnamectl set-hostname Docker_Swarm_Manager
hostnamectl set-hostname Docker_Swarm_Work1
hostnamectl set-hostname Docker_Swarm_Work2

互作本地解析(三台均执行)

192.168.89.201 Docker_Swarm_Manager
192.168.89.202 Docker_Swarm_Work1
192.168.89.203 Docker_Swarm_Work2

初始化 Manager

在其中一台 Manager 节点执行(其他 Manager 节点按命令并入即可)

Manager 节点也可作为 work 节点使用。

** 初始化swarm集群,创建主管理节点 **

docker swarm init \
--advertise-addr 192.168.89.201:2377 \
--listen-addr 192.168.89.201:2377

** 参数说明 **
–advertise-addr:其他节点并入集群的入口地址
–listen-addr:该参数是默认的,如果不添加也是默认IP:2377,它的作用主要是安全问题(如你只希望您的 swarm 管理界面只能在管理网络上访问)

如果已经执行过该命令了,但是又忘记了相关Token信息,可以重新执行

** 先删除之前生成的相关信息 **

docker swarm leave --force

** 再次初始化新的Manager节点 **

docker swarm init \
--advertise-addr 192.168.89.201:2377 \
--listen-addr 192.168.89.201:2377

如果我有其他想要成为manager的docker节点,首先在已有的manager节点上生成相关接入信息,执行生成的命令即可加入集群并成为manager角色。

docker swarm join --token SWMTKN-1-17fmka1c0l9e6hr66i5ksrl6wreworhx2gwte0644yaij5agvh-4z5yn1vvlvjzghhg1k36bg81k 192.168.89.201:2377

检查

docker node ls

NFS 服务部署

安装NFS

NFS IP:192.168.89.201 (安装在manager上,也可以是其他机器上)
Shared Dir:/usr/myapps/nfs

安装NFS服务

  • 安装 NFS 服务器所需的软件包:

    yum -y install nfs-utils rpcbind
  • 启动nfs service

systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap

systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap
  • 创建需要共享的目录

    mkdir -p /usr/myapps/nfs # -p 级联创建
    chmod -R 777 /usr/myapps/nfs #更改workspace文件夹及其子文件夹权限为777
  • 配置需要共享的目录到 /etc/exports下,xxx.xxx.xxx.xxx为需要共享的对象ip地址。

    echo "/usr/myapps/nfs 192.168.89.0/24(rw,sync,no_root_squash)" >> /etc/exports
    exportfs -r          #使exports的修改生效
  • 调整防火墙配置(默认已经关闭了防火墙,生产环境要开启)

  • 检查共享目录是否设置正确

    showmount -e
  • 调整防火墙配置(默认已经关闭了防火墙,生产环境要开启)

映射NFS目录

在另外两台机器上(192.168.89.202,192.168.89.203),分别挂载NFS目录

  • 安装nfs工具

    yum install -y nfs-utils
  • 设置挂载目录点,可以新建一个目录即可
    执行:

    mkdir -p /usr/myapps/nfs
  • 执行挂载

    mount -t nfs 192.168.89.201:/usr/myapps/nfs /usr/myapps/nfs
    或
    mount 192.168.89.201:/usr/myapps/nfs /usr/myapps/nfs -o proto=tcp -o nolock

成功后即可通过df查看了

  • 随系统启动自动挂载
    编辑/etc/fstab,追加:
    192.168.89.201:/usr/myapps/nfs /usr/myapps/nfs nfs rw,tcp,intr 0 1

部署MyApps

下载

下载MyApps低代码平台的Swarm安装包

http://office.teemlink.com:9000

下载:docker-swarm-myapps-jar-R69844.7z,其中R69844为版本号,注意下载最新版本。

解压

解压myapps-docker-swarm安装包到 /usr/myapps 目录下

7z x docker-swarm-myapps-jar-R69844.7z -r -o/usr/myapps/nfs

或(根据平台安装的7z软件版本,可自行百度)

7za x docker-swarm-myapps-jar-R69844.7z -r -o/usr/myapps/nfs

修改目录权限

修改目录权限

chmod 755 -R /usr/myapps/nfs/nginx/html/
chmod 755 -R /usr/myapps/nfs/mysql/init/

启动

应用YAML文件,在swarm-manager 机器上执行

cd /usr/myapps/nfs
docker stack deploy -c docker-compose.yml myapps

结束!

文档更新时间: 2023-05-29 06:40   作者:admin