【问题标题】:Single script for Docker Swarm cluster setupDocker Swarm 集群设置的单一脚本
【发布时间】:2018-05-04 04:54:27
【问题描述】:

我在我的 preprod 服务器(3 个管理节点和 7 个工作节点)中设置了 Docker Swarm 集群;但是我想在生产服务器中复制相同的内容,而不是使用我更喜欢使用脚本的命令。

目前我正在使用“docker swarm init”来初始化swarm,然后使用生成的密钥添加workers和managers。

我将拥有 30 台服务器,并为 7 个管理节点和 23 个工作节点进行规划。 我已经在网上搜索过;但在所有服务器中找不到任何可以使用脚本自动初始化 docker swarm 的脚本。

任何帮助将不胜感激。

【问题讨论】:

    标签: docker initialization cluster-computing swarm


    【解决方案1】:

    我解决这个问题的方法是为所有节点创建一个通用构建脚本,并使用Consul 与集群的其余部分共享 docker swarm 管理器令牌。

    第一个节点(10.0.0.51)调用docker swarm init并将令牌放入键值存储中,其余节点(10.0.0.52 向前)读回令牌并使用它调用docker swarm join

    bash 看起来像这样 -

    # Get the node id of this machine from the local IP address
    privateNetworkIP=`hostname -I | grep -o 10.0.0.5.`
    nodeId=`(echo $privateNetworkIP | tail -c 2)`
    
    if [ $nodeId -eq 1 ]; then
    
        sudo docker swarm init
        MANAGER_KEY_IN=`sudo docker swarm join-token manager -q`
        curl --request PUT --data $MANAGER_KEY_IN http://10.0.0.51:8500/v1/kv/docker-manager-key
    
    else 
    
        MANAGER_KEY_OUT=`curl -s http://10.0.0.51:8500/v1/kv/docker-manager-key?raw`
        sudo docker swarm join --token $MANAGER_KEY_OUT 10.0.0.51:2377
    
    fi
    

    ...只要先构建node 1,就可以正常工作。

    【讨论】:

      【解决方案2】:

      没有什么比内置实用程序更好的了,您可以使用这样的命令:

      您可以像这样创建自定义脚本:

      for i in `cat app_server.txt` ; do echo $i ; ssh -i /path/to/your_key.pem  $i "sudo docker swarm join --token your-token-here ip-address-of-manager:port" ; done
      

      这里app_server.txt 是您要添加到集群中的工作节点的 IP 地址。

      --token : 经理在docker swarm init 上生成的令牌

      希望这会有所帮助。

      你也可以使用 ansible 来做同样的事情,但需要在所有工作节点上安装 ansible docker 模块。 谢谢!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多