Один скрипт для настройки кластера Docker Swarm - PullRequest
0 голосов
/ 04 мая 2018

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 02 августа 2018

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

Первый узел (на 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.

0 голосов
/ 04 мая 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 на всех рабочих узлах. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...