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从)。
版本规划
●Linux:CentOS 7.9
●Docker: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