zoukankan      html  css  js  c++  java
  • Docker Swarm多节点环境的搭建(二): Docker的集群调配


    Docker的集群调配

    在上篇文章中介绍了如何如何在多个CentOS中安装Docker应用。本文章为大家介绍如何实现对已安装的这一堆机器实现集群化。

    Docker Swarm运行Spring Cloud应用(一): Docker的安装

    Docker Swarm运行Spring Cloud应用(二):集群Docker的调配(本文)

    1、初始化集群(在node1上操作):

        [root@linux-node1 ~]# docker swarm init --advertise-addr 192.168.10.101
         
        Swarm initialized: current node (xxkq6mhnilt0lulmhwrwrtfrr) is now a manager.
        To add a worker to this swarm, run the following command:
            docker swarm join
            --token SWMTKN-1-1m7l3vepkees60zh321bssfdlqo36vjvoy5b1mlm0mcypcq13e-58azd8nskaixhbxjh1mvcx8jt
            192.168.10.101:2377
        To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

    2、查看集群状态(在node1上操作):

        [root@linux-node1 ~]# docker info | grep -i swarm
         
        Swarm: active   #激活状态

    3、查看端口状态(在node1上操作):

        [root@linux-node1 ~]# netstat -tunlp | grep docker (默认监听两个端口,tcp2377端口为集群的管理端口,tcp7946为节点之间的通讯端口)
         
        tcp6       0      0 :::2377                 :::*                    LISTEN      3979/dockerd-curren
         
        tcp6       0      0 :::7946                 :::*                    LISTEN      3979/dockerd-curren

    4、查看默认创建网络(在node1上操作):

    默认会创建一个overlay的网络ingress,还会创建一个桥接的网络docker_gwbridge)

        [root@linux-node1 ~]# docker network ls
         
        NETWORK ID          NAME                DRIVER              SCOPE
         
        c3f9bacc7a27        bridge              bridge              local
         
        169aedb818b9        docker_gwbridge     bridge              local
         
        6488efd3fa8a        host                host                local
         
        squcqnplf4gz        ingress             overlay             swarm
         
        b044056e55bd        none                null                local

    5、查看集群节点(在node1上操作):

        [root@linux-node1 ~]# docker node ls
         
        ID                           HOSTNAME                STATUS  AVAILABILITY  MANAGER STATUS
         
        xxkq6mhnilt0lulmhwrwrtfrr *  node1  Ready   Active        Leader

    6、查看swarm配置文件(在node1上操作):

        [root@linux-node1 ~]# ll /var/lib/docker/swarm/
         
        drwxr-xr-x 2 root root  72 Sep 27 09:14 certificates (使用的tls来进行安全通信)
         
        -rw------- 1 root root 112 Sep 27 09:14 docker-state.json(用来记录通信的地址和端口,也会记录本地的地址和端口)
         
        drwx------ 4 root root  53 Sep 27 09:14 raft(raft协议)
         
        -rw------- 1 root root  70 Sep 27 09:14 state.json (manager的ip和端口)
         
        drwxr-xr-x 2 root root  21 Sep 27 09:14 worker (记录工作节点下发的任务信息)

    7、将其它节点接入swarm集群(在node2、node3上操作):

        [root@linux-node2 ~]# docker swarm join --token SWMTKN-1-1m7l3vepkees60zh321bssfdlqo36vjvoy5b1mlm0mcypcq13e-58azd8nskaixhbxjh1mvcx8jt 192.168.10.101:2377
         
        [root@linux-node3 ~]#  docker swarm join --token SWMTKN-1-1m7l3vepkees60zh321bssfdlqo36vjvoy5b1mlm0mcypcq13e-58azd8nskaixhbxjh1mvcx8jt 192.168.10.101:2377

    注:当忘记了加入集群的token的时候,可以使用如下的指令找到token,然后在node节点上直接执行,就可以加入worker节点或者是manager节点。

        [root@linux-node1 ~]# docker swarm join-token worker
         
        To add a worker to this swarm, run the following command:
         
            docker swarm join
         
            --token SWMTKN-1-1m7l3vepkees60zh321bssfdlqo36vjvoy5b1mlm0mcypcq13e-58azd8nskaixhbxjh1mvcx8jt
         
            192.168.10.101:2377

    8、查看集群状态(在node1上操作):

        [root@linux-node1 ~]# docker node ls
         
        ID                           HOSTNAME                STATUS  AVAILABILITY  MANAGER STATUS
         
        ibrkg91oq7ezcqtr9b25e2ook    node2  Ready   Active        
         
        uzvohbfv7ta440px57b4o7bn6    node3  Ready   Active        
         
        xxkq6mhnilt0lulmhwrwrtfrr *  node1  Ready   Active        Leader

    9、节点之间的角色可以随时进行切换,使用update(在node1上操作):

        [root@linux-node1 ~]# docker node update --role manager node3
         
        node3
         
        [root@linux-node1 ~]# docker node ls
         
        ID                           HOSTNAME                STATUS  AVAILABILITY  MANAGER STATUS
         
        ibrkg91oq7ezcqtr9b25e2ook    node2  Ready   Active        
         
        uzvohbfv7ta440px57b4o7bn6    node3  Ready   Active        Reachable
         
        xxkq6mhnilt0lulmhwrwrtfrr *  node1  Ready   Active        Leader
         
        [root@linux-node1 ~]# docker node update --role worker node3
         
        node3
         
        [root@linux-node1 ~]# docker node ls
         
        ID                           HOSTNAME                STATUS  AVAILABILITY  MANAGER STATUS
         
        ibrkg91oq7ezcqtr9b25e2ook    node2  Ready   Active        
         
        uzvohbfv7ta440px57b4o7bn6    node3  Ready   Active        
         
        xxkq6mhnilt0lulmhwrwrtfrr *  node1  Ready   Active        Leader

    10、docker swarm 集群可视化管理

    目前为止,集群创建完成了,对于集群的操作都是通过“docker-machine ssh 节点名”登录到主机上,再执行docker指令完成的,很不方便。有很多可视化的集群管理工具,“Docker Universal Control Plane(UCP)”是docker原厂的可视化集群管理GUI,企业级的,只支持docker EE。这里采用完全开源的"portainer",详细参考https://portainer.io.

            整个过程很简单,只需要在集群中部署portainer的service就可以了。但是portainer比较特殊,这个服务只能被调度给manager角色的节点,在本集群中满足这个条件的节点只有node1节点。另外需要提前在 node1 节点上准备好运行服务需要挂载的目录,这里是/etc/portainer,提前创建好就可以了。运行如下指令:

    1.各节点下载镜像(在node1、node2、node3上操作):

        # 查询当前有哪些Portainer镜像
        docker search portainer
        # 下载镜像
        docker pull portainer/portainer

    2.各节点配置2375端口号(在node1、node2、node3上操作):

    进入路径/usr/lib/systemd/system下找到docker.service文件增加

    -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

    2.管理节点运行portainer(在node1上操作):

    docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

    浏览器打开页面地址注册用户后在如下界面输入对应的ip端口号,这里我用管理节点安装,所以填写管理节点自身的ip端口号。注意:下图网上找的,ip不是本文提到node1管理节点ip,实操时请务必将各ip修改成需要连接节点的ip。

    登录成功之后如下:

    可以在Endpoints中新增docker swarm各个子节点

    配置完毕后在主页可看到配置的各个节点连接信息,可随意切换管理

    到此,Docker的集群调配完成。
    ————————————————
    版权声明:本文为CSDN博主「M中南保镖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_31858847/article/details/90298933

  • 相关阅读:
    react-router-dom
    react详解state、props、refs
    vuex
    canvas与svg相关介绍与区别
    js改变标签属性与js事件
    Typescript基础类型
    es6
    js模块化的3种规范
    webpack
    react-infinite-scroller使用
  • 原文地址:https://www.cnblogs.com/lcword/p/14542044.html
Copyright © 2011-2022 走看看