• Docker swarm 集群搭建


    Docker swarm 集群搭建

    服务器准备

    主机名IP主机配置
    master10.10.10.32c2g
    node0110.10.10.42c2g
    node0210.10.10.52c2g

    主机名配置

    # master
    [root@master ~]# hostnamectl  set-hostname master
    # node01
    [root@node01 ~]# hostnamectl  set-hostname node01
    # node02 
    [root@node02 ~]# hostnamectl  set-hostname node02
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    本地解析

    # 所有主机都要配置
    cat >> /etc/hosts << EOF
    10.10.10.3 master
    10.10.10.4 node01
    10.10.10.5 node02
    EOF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    安装docker

    # 所有服务器都要安装
    # 安装必要的一些系统工具
    yum install -y yum-utils device-mapper-persistent-data lvm2
    # 添加软件源信息
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # 安装Docker-CE
    yum -y install docker-ce
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    # 所有节点启动docker 并配置开机自启
    [root@master ~]#  systemctl  start docker && systemctl  enable docker
    
    • 1
    • 2

    初始化swarm

    把第一台机器master充当管理节点,第二台node01 、第三台node02作为工作节点

    # master节点执行 IP为主机IP
    [root@master ~]# docker swarm init --advertise-addr 10.10.10.3
    
    • 1
    • 2

    image-20231027102411532

    如果你的 Docker 主机有多个网卡,拥有多个 IP,必须使用 –advertise-addr 指定 IP。
    执行 docker swarm init 命令的节点自动成为管理节点。
    命令 docker info 可以查看 swarm 集群状态。
    
    • 1
    • 2
    • 3

    工作节点加入集群

    # node01节点
    [root@node01 ~]#  docker swarm join --token SWMTKN-1-38vbfidgbpkdvwgpx2fzu1jwqtzlnlpfr0p73hcxfs3vwabl98-eenxcbwb3rd4633iw2vp4qwa1 10.10.10.3:2377
    #node02节点
    [root@node02 ~]#  docker swarm join --token SWMTKN-1-38vbfidgbpkdvwgpx2fzu1jwqtzlnlpfr0p73hcxfs3vwabl98-eenxcbwb3rd4633iw2vp4qwa1 10.10.10.3:2377
    
    • 1
    • 2
    • 3
    • 4

    查询节点状态

    [root@master ~]# docker node ls
    
    • 1

    image-20231027102732086

    升级为高可用

    # 把工作节点作为备用主节点
    [root@master ~]# docker node promote node01
    [root@master ~]# docker node promote node02
    
    • 1
    • 2
    • 3
    # 查询节点状态
    [root@master ~]# docker node ls
    
    # 此时 node02、node03的 集群状态变为 Reachable(选举者)因为集群中节点Leader只能有一个
    # 这个类似zookeeper 只不过zookeepers用的算法是paxos Swarm用的算法是raft
    # 当master主机宕掉 Reachable会自动选举一个成为 Leader
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    image-20231027102913558

    删除节点

    # node节点需要先退出集群 (node节点上操作)
    [root@node01 ~]# docker swarm leave --force
    
    • 1
    • 2

    image-20231027103557943

    # 把需要删除的节点降为工作节点 (管理节点上操作)
    [root@master ~]# docker node update --role worker node01
    
    # 删除指定节点 (管理节点上操作)
    [root@master ~]# docker node rm node1 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image-20231027104025838

    重新加入节点

    # node节点操作
    [root@node01 ~]# docker swarm join --token SWMTKN-1-38vbfidgbpkdvwgpx2fzu1jwqtzlnlpfr0p73hcxfs3vwabl98-eenxcbwb3rd4633iw2vp4qwa1 10.10.10.3:2377
    
    • 1
    • 2
    # 加入节点再次查询节点并升级为 Reachable(选举者)
    [root@master ~]# docker node promote node01
    
    • 1
    • 2

    image-20231027104157759

  • 相关阅读:
    有什么视频转文字软件?快把这些方法收好
    CSS面试题:说一说对rem的理解?
    你真的明白井字棋整个过程吗
    CSS读书笔记
    机器学习笔记 - 图解对象检测任务(1)
    基于 Redis 实现接口限流
    C语言指针和数组
    模型生成自动化测试用例
    智慧社区(网页显示次数后端写法)
    swagger2配置及注释详解
  • 原文地址:https://blog.csdn.net/m0_52369979/article/details/134077969