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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM