Как многие в курсе, я нахожусь в поискать удобной системы для управления кучей удаленных машин в неблокирующем параллельном режиме, сейчас по рекомендациям на http://www.stableit.ru/2013/03/blog-post.html я решил попробовать Salt.
Что это? Грубо говоря, это способ асинхронного запуска команд на сотнях серверов в неблокирующем режиме. В умных книжках это зовется - орхестрация.
Установка клиента крайне проста:
Тут обращаю внимание на крайне грамотную архитектуру Salt, клиент не открывает каких-либо портов, а сам подключается к серверу и ждет от него команд, таким образом повышается безопасность сервиса.
С установкой сервера все малость сложнее:
В порядке теста я использую домен hadoop.domain.org и для мастера и для клиента:
Корректируем адрес сервера для minion (клиент):
Источник: http://docs.saltstack.com/topics/installation/index.html и http://www.linuxjournal.com/content/getting-started-salt-stack-other-configuration-management-system-built-python (эта статья меня в общем-то и воодушевила на установку Salt)
Что это? Грубо говоря, это способ асинхронного запуска команд на сотнях серверов в неблокирующем режиме. В умных книжках это зовется - орхестрация.
Установка клиента крайне проста:
wget -O - http://bootstrap.saltstack.org | sudo shТех, кого (как и меня) смущуает работа чужих скриптов, выполняемых с рут привилегиями - прошу в код (я не смотрел, машина не боевая).
Тут обращаю внимание на крайне грамотную архитектуру Salt, клиент не открывает каких-либо портов, а сам подключается к серверу и ждет от него команд, таким образом повышается безопасность сервиса.
С установкой сервера все малость сложнее:
apt-get install -y salt-masterОн уже откроет пару портов для работы:
netstat -lnpt|grep python
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 17545/python
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 17531/python
В порядке теста я использую домен hadoop.domain.org и для мастера и для клиента:
Корректируем адрес сервера для minion (клиент):
vim /etc/salt/minion
master: hadoop.domain.org
service salt-minion restart
На сервере получаем список входящих запросов установления подлинности (salt работает на сертификатах):
salt-key --list-all
Accepted Keys:
Unaccepted Keys:
hadoop.domain.org
Rejected Keys:
Подписываем сертификат как довренный:
salt-key --accept=hadoop.domain.org
Key for minion hadoop.domain.org accepted.
Посылаем команду ping на клиента и мгновенно получаем ответ:
salt '*' test.ping
hadoop.domain.org:
True
Теперь посылаем самый первый уже практически значимый запрос:
salt '*' cmd.run 'uname -a'
hadoop.domain.org:
Linux hadoop.domain.org 3.2.0-39-generic #62-Ubuntu SMP Thu Feb 28 00:28:53 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Обращаю внимание, что если в конфигурации будет 100 клиентов, то система сработает корректно - она пошлет запрос на выполнение команды всем нодам, а те, в свою очередь, когда выполнят команду, сразу же пошлют ее результат серверу. Но при этом мы не блокируемся на сервере и не ждем выполнениям команды, а сразу переходим к следующему.
В целом - это моя мечта!
Смущает лишь следующее:
- Я хочу, чтобы minion работал от штатного юзера и лишь когда ему явно надо взять полномочия рута - делал sudo.
- Также меня смущают проблемы с deployment, зависимостей не так много, но каждая из них может причинить неудобства.
- Мне не нравится их инсталлятор все в одном, также не нравится какой-то левый репо для Debian 6, указанный в мануале.
- Также ужасающий баг в безопасности то, что salt-minion сразу после запускае подключается к узлу salt.your_domain.name и если у вас там вбито что-то в стиле suxx.us он подключится на salt.suxx.us и если ему там ответят выполнит с рут привилегиями команды, что пошлет владелец сервера!!! Ребята-это ад кромешный!
Да, есть еще mcollective, но он завязан на ActiveMQ, что мне крайне не нравится.
Источник: http://docs.saltstack.com/topics/installation/index.html и http://www.linuxjournal.com/content/getting-started-salt-stack-other-configuration-management-system-built-python (эта статья меня в общем-то и воодушевила на установку Salt)
Паша, можно глупый вопрос ?
ReplyDeleteА чем тебя конфигурация chef + chef-client (в демон режиме) не удовлетворяет?
А оно умеет орхестрацию?
ReplyDeleteА еще у аффтаров Шева проблемы с головным мозгом, а именно - поражение мозга эрлангом: In February 2013, Opscode released version 11 of Chef. Changes in this release included a complete rewrite of the core API server, in Erlang.
Ansible попробуй. Я был в восторге.
ReplyDeletehttp://ansible.cc/
Ansible вещь. Довольно новый продукт. Умеет всё, что и его конкуренты(асинхронный запуск, темплейтыи т.д.), но очень прост в изучении и использовании.
ReplyDelete