Docker Swarm以GlusterFS作为外部卷存储和VIP

Docker Swarm以GlusterFS作为外部卷存储和VIP,docker,docker-compose,cluster-computing,glusterfs,pacemaker,Docker,Docker Compose,Cluster Computing,Glusterfs,Pacemaker,我想知道Docker Swarm是否有可能成为一个以GlusterFS作为本地文件系统的负载平衡器?并使用起搏器固定VIP(因为我知道Docker无法创建VIP) 我的想法——我希望能得到验证或更好的建议:) 系统: 2x CentOS 8 servers - 192.168.0.1 ---- /dev/sda (OS) ---- /dev/sdb (data) - 192.168.0.2 ---- /dev/sda (OS) ---- /dev/sdb (data) 安装心脏起搏器,Coro

我想知道Docker Swarm是否有可能成为一个以GlusterFS作为本地文件系统的负载平衡器?并使用起搏器固定VIP(因为我知道Docker无法创建VIP)

我的想法——我希望能得到验证或更好的建议:)

系统:

2x CentOS 8 servers
- 192.168.0.1
---- /dev/sda (OS)
---- /dev/sdb (data)
- 192.168.0.2
---- /dev/sda (OS)
---- /dev/sdb (data)
  • 安装心脏起搏器,Corosync

    dnf --enablerepo=HighAvailability -y install pacemaker pcs psmisc policycoreutils-python-utils
    systemctl start pcsd
    
  • 向两台服务器添加VIP

     pcs resource create vip IPaddr2 ip=192.168.0.100 cidr_netmask=24 op monitor interval=30s
    
  • 设置两个存储

     mkfs.xfs /dev/sdb
    
  • 创建目录并添加到启动

     mkdir -p /my-data/
    
     echo "/dev/sdb /my-data xfs defaults 0 0" >> /etc/fstab
    
  • 在两个节点上安装GlusterFS

     dnf install -y glusterfs-server
    
  • 为卷设置Gluster

     gluster volume create gfs replica 2 transport tcp node01:/my-data node02:/my-data force
     gluster volume start gfs
    
  • 使其可用于复制

     echo 'node01:/my-data /mnt glusterfs defaults,_netdev 0 0' >> /etc/fstab
    
     echo 'node02:/my-data /mnt glusterfs defaults,_netdev 0 0' >> /etc/fstab
    
  • 安装Docker和Docker Compose

  • 初始化群

     - on node01 use IP 192.168.0.1 -> manager
     - on node02 use IP 192.168.0.2 -> manager
    
  • 创建目录

     mkdir /mnt/html
     mkdir /mnt/mysql
    
  • 在docker-compose.yml文件中:

    volumes:
        - "/mnt/html:/var/www/html/wp-content"
    volumes:
        - "/mnt/mysql:/var/lib/mysql"
    
  • 除了docker-compose.yml-apache之外:

    Use IP 192.168.0.100 as the access on 80
    
  • 我的想法是,由于192.168.0.100只能在一个起搏器资源上访问,因此二级经理不会在前端受到攻击。如果该节点在IP.100上宕机,那么另一个节点02将使用该IP,群集仍将处于活动状态

    这是可行的吗?我在Swarm上找不到任何关于VIP的信息——至少是可行的解决方案

    我把他们都当成经理,因为我认为如果经理走人了,那就没用了?然后,如果我有第三个、第四个等等,我会把他们添加为工人