Единый скрипт для настройки кластера Docker Swarm

У меня есть настройка кластера Docker Swarm на моих серверах preprod (3 узла менеджера и 7 рабочих узлов); однако я хотел бы воспроизвести то же самое на производственных серверах, но вместо использования команд я предпочитаю использовать скрипт.

В настоящее время я использую «docker swarm init» для инициализации роя, а затем добавляю рабочих и менеджеров с помощью сгенерированного ключа.

У меня было бы 30 серверов и планирование 7 управляющих и 23 рабочих узлов. Я искал в сети; но не смог найти скрипт, который может автоматически инициализировать рой докеров с помощью скрипта на всех серверах.

Любая помощь будет очень признательна.


person Hruday    schedule 04.05.2018    source источник


Ответы (2)


Я подошел к этому с помощью общего сценария сборки для всех узлов и использования Consul для совместного использования докера. токен менеджера роя с остальной частью кластера.

Первый узел (в 10.0.0.51) вызывает docker swarm init и помещает токен в хранилище значений ключа, а остальные узлы (в 10.0.0.52 и далее) считывают токен обратно и используют его для вызова docker swarm join.

Баш выглядел примерно так -

# 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 построен первым.

person nikiwiles    schedule 02.08.2018

Нет ничего лучше встроенных утилит, для которых вы можете использовать такую ​​команду:

Вы можете создать свой собственный скрипт следующим образом:

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, установленные на всех рабочих узлах. Благодарю вас!

person chintan thakar    schedule 04.05.2018