docker基础:swarm集群搭建(五)

一、swarm集群
首先我们要了解一下什么是集群。官方理解我不做说明,我的理解是,通过一台管理机,去操作N台机器,让用户在操作的时候觉得自己是在一台机器上操作的。这里做个说明,swarm只做管理者,不建议在swarm上做容器,他只是管理其他机器上的容器。

二、swarm集群的搭建
1、准备工作:准备四台机器。一台管理机,三台容器机做节点。
192.168.1.167 管理机(167)
192.168.1.166 容器机(166)
192.168.1.172 容器机(172)
192.168.1.173 容器机(173)
以上所有的机器都安装了docker,版本是17.03,并且ip是在一个网段的。
HOSTNAME 的名字取决于节点名称。
以下端口必须可用。在某些系统上,这些端口默认是打开的,如果没有开启,请进行配置,或者是关闭防火墙。

      TCP端口2377用于集群管理通信
      TCP和UDP端口7946用于节点之间的通信
      UDP端口4789用于覆盖网络流量
  
2、在管理机(167)上的操作
      [root@localhost /]# docker swarm init --advertise-addr 192.168.1.167
      Swarm initialized: current node (gl9wpo3vvh0kv3bsivpw850tr) is now a manager.

      To add a worker to this swarm, run the following command:

          docker swarm join \
          --token SWMTKN-1-4cqhad8s8swwxj39za989evdbto7idcqrxtyz6obsm9vy0wiu8-ayredhk9u28ns5j8j6wawbsrc \
          192.168.1.167:2377

      To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
      出现上述的结果,那么就表示在167这台机器上,创建了一个集群,可以通过docker info命令来查看
集群信息
      如果需要查看集群中有哪些节点:docker node ls 
      
      [root@localhost /]# docker node ls
      ID                           HOSTNAME               STATUS  AVAILABILITY  MANAGER STATUS
      gl9wpo3vvh0kv3bsivpw850tr *  localhost.localdomain  Ready   Active        Leader

      node ID旁边那个*号表示现在连接到这个节点上
3、将容器机挂到管理机下面
     1. 在管理机执行:docker swarm join-token worker
      [root@localhost ~]# docker swarm join-token worker
        To add a worker to this swarm, run the following command:

              docker swarm join \
              --token SWMTKN-1-1pubot0weptvzdeprfjxpfgwtp4dfzyzt0axwtct46xqvgso4m-bliirdxy7fb9m1acectknffi7 \
              192.168.1.167:2377
      复制docker swarm join ...的内容
      2.在容器机(166)执行复制的命令
挂载节点
      出现上面的内容表示成功。回到管理机(167)查看挂载的节点:docker  node ls 
已经挂载的节点
        到此位置集群搭建完成。
      
      如果出现类似Error response from daemon: rpc error: code = 14 desc = grpc: the connection is unavailable的错误,可能是由于防火墙引起的,解决方案是正确配置防火墙或关闭防火墙。

关于防火墙的命令:systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容