• 搭建 Docker Swarm 集群


     
    准备三台主机
    A:192.168.1.5
    B:192.168.1.7
    C:192.168.1.10
     
    Docker Swarm集群中的节点主机开放以下三个端口
    2377端口, 用于集群管理通信
    7946端口, 用于集群节点之间的通信
    4789端口, 用于overlay网络流量
     
     
    关闭防火墙
    systemctl stop firewalld.service
    systemctl disable firewalld.service
     
    在A上执行
     
    创建集群并加入集群
    $ docker swarm init --advertise-addr 192.168.1.5:2377 --listen-addr 192.168.1.5:2377
     
    initialized: current node (sf4zgbesw21ko536rrgpxspv4) is now a manager.
    To add a worker to this swarm, run the following command:
        docker swarm join --token SWMTKN-1-3mlkj1pouzqm8mjdqdnj5gw30i4ahjw5aayfu177vzernbzmod-1svbkyjwzhv0swzojp6xh3shm 192.168.1.5:2377
     
    查看集群中的节点
    $ docker node ls
     
    查看 manager 角色的 token
    $ docker swarm join-token manager
     
    To add a manager to this swarm, run the following command:
        docker swarm join --token SWMTKN-1-3mlkj1pouzqm8mjdqdnj5gw30i4ahjw5aayfu177vzernbzmod-0ib338l48ybx8csrlpr3yn7ug 192.168.1.5:2377
     
     
    查看 worker  角色的 token
    $ docker swarm join-token worker
     
    To add a worker to this swarm, run the following command:
        docker swarm join --token SWMTKN-1-3mlkj1pouzqm8mjdqdnj5gw30i4ahjw5aayfu177vzernbzmod-1svbkyjwzhv0swzojp6xh3shm 192.168.1.5:2377
     
     
    在B上执行
     
    把 B 以 manager 角色加入集群 (上面的 token 那段命令,再接上当前的监听的IP  )
    $ docker swarm join --token SWMTKN-1-3mlkj1pouzqm8mjdqdnj5gw30i4ahjw5aayfu177vzernbzmod-0ib338l48ybx8csrlpr3yn7ug 192.168.1.5:2377  --advertise-addr 192.168.1.7:2377 --listen-addr 192.168.1.7:2377
     
    查看一下节点
    $ docker node ls
     
     
    在C上执行
     
    把 C 以 worker 角色加入集群(上面的 token 那段命令,再接上当前的监听的IP  )
    $ docker swarm join --token SWMTKN-1-3mlkj1pouzqm8mjdqdnj5gw30i4ahjw5aayfu177vzernbzmod-1svbkyjwzhv0swzojp6xh3shm 192.168.1.5:2377 --advertise-addr 192.168.1.10:2377 --listen-addr 192.168.1.10:2377
     
    在 worker 节点查看集群中的节点会报没有权限的错误
    $ docker node ls
    Error response from daemon: This node is not a swarm manager. Worker nodes can't be used to view or modify cluster state.
     
     
    集群建好了,就开始创建服务,可以在任意 manager 角色的主机上创建
    这个创建容器几乎一样,--replicas 5 在集群中运行五个实例副本 -p 80:8080 服务绑定 80 端口
    $ docker service create --name web-fa  -p 80:8080 --replicas 5 nigelpoulton/pluralsight-docker-ci
    k4qpts36rterzzsy0ys0f7rjw
    overall progress: 5 out of 5 tasks
    1/5: running   [==================================================>]
    2/5: running   [==================================================>]
    3/5: running   [==================================================>]
    4/5: running   [==================================================>]
    5/5: running   [==================================================>]
     
    打开浏览器,输入 A B C 任意主机的 IP 访问一下,看看能否打开一个web页面
     
    查看服务列表
    $ docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE                                       PORTS
    k4qpts36rter        web-fa              replicated          5/5                 nigelpoulton/pluralsight-docker-ci:latest   *:80->8080/tcp
     
    查看具体服务中运行的任务
    $ docker service ps web-fa
    ID                  NAME                IMAGE                                       NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
    94thjgudevf0        web-fa.1            nigelpoulton/pluralsight-docker-ci:latest   host                Running             Running 7 minutes ago                       
    o0ll8yuo5w0x        web-fa.2            nigelpoulton/pluralsight-docker-ci:latest   host                Running             Running 7 minutes ago                       
    nkonamy3qa97        web-fa.3            nigelpoulton/pluralsight-docker-ci:latest   host                Running             Running 7 minutes ago                       
    k311fuxvvz0c        web-fa.4            nigelpoulton/pluralsight-docker-ci:latest   aaa                 Running             Running 7 minutes ago                       
    sttj7tt70k99        web-fa.5            nigelpoulton/pluralsight-docker-ci:latest   host                Running             Running 7 minutes ago  
     
    查看服务的详细信息
    docker service inspect --pretty web-fa
     
     
     
    还有一些实用命令
    退出集群: docker swarm leave -f 
    删除服务: docker service rm <service-name>
     
    总结一下,当任务副本数大于集群中的节点数时,势必有节点得运行两个容器实例。通过 docker ps 可以看到多个容器实例并没有绑定到宿主机的端口,如果绑定同一个端口,势必会冲突。
    建议,如果想学得深入点,还是得买书呀,网上都是教程都近似于笔记,很多细节没有讲。《深入浅出 Docker》还可以,书也不厚,最烦那种外文翻译出来厚厚地书了,有些真是一半都是废话,浪费生命啊。。。
     
    查看节点为例:
    [zbseoag@host ~]$ docker node ls
    ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    ioi5usennpdgjpb6ehxmkifgm     host                Down                Active                                  19.03.4
    ozeybjcrl9z913qtx2xqkexiq     host                Ready               Active              Reachable           19.03.4
    sf4zgbesw21ko536rrgpxspv4 *   host                Ready               Active              Leader              19.03.4
    x5yvbr44s6294qjf1bx9fhcro     host                Ready               Active              Reachable           19.03.4
    
    说明:
    sf4zgbesw21ko536rrgpxspv4 * : 这个 * 表示当前执行命令的主机
    HOSTNAME:由于我是虚拟机副本创建的,都是一样的名字。你可以在其中一台上用 sodu hostname aaa 来临时改变主机名,然后再运行一下 docker node ls 会看到列表中主机名变了
    MANAGER STATUS:直译就叫管理员状态,这一栏为空就表示 worker 节点, Leader 领导者,Reachable 追随者  

      

     
     
  • 相关阅读:
    算法 排序
    Windows系统安装Git
    oracle 查询语句
    .NET CORE AddRazorRuntimeCompilation
    清除html頁面文本框緩存
    ORACLE 生成UUID
    Unable to resolve service for type`***` while attempting to activatre `***`
    xml文件导入Oracle数据库
    jquery 日历控件
    判断并获取一对多表格数据
  • 原文地址:https://www.cnblogs.com/zbseoag/p/11744436.html
Copyright © 2020-2023  润新知