Рецепт шеф-повара с внешними зависимостями обеспечения
Во всех примерах Chef, которые я видел, автомасштабирование работает довольно легко - вы предоставляете что-то вроде хоста БД, а затем веб-серверов. Вы можете создать столько веб-серверов, сколько захотите - все они будут использовать один и тот же хост БД (никаких изменений не требуется).
Но что, если моя кулинарная книга подготовки рецепта / узла требует изменений конфигурации на некоторых других внутренних узлах? Как я могу сделать это с шеф-поваром? Например, у меня есть существующий отражатель маршрута BGP (птица), я предоставляю новый граничный узел птицы и, как зависимость, мне нужно сгенерировать новую конфигурацию однорангового узла iBGP и перечитать файл конфигурации на узле отражателя маршрута BGP.
Какова лучшая практика? Должен ли я использовать chef-push-jobs для отправки изменений в узлы BGP route-отражателя?
1 ответ
У шеф-повара нет внутренней системы для этого. В общих чертах, вы говорите о "обнаружении службы", когда одна служба хочет найти информацию о другой службе в сети. Шеф-повар имеет простую систему SD в search()
API, но есть и специальные SD-системы, такие как Consul, Eureka и mDNS/Autoconf.
После того, как вы получите данные сервиса таким образом, чтобы к ним можно было получить доступ, следующий вопрос - как обращаться с обновлениями, распространяющимися по сети. Сам по себе Chef обычно использует сервис в режиме демона, выполняющий конвергенцию каждые X секунд. Это будет означать, что если вы установите X на 60, то через 119 секунд все будет обновлено. Если вам нужно что-то более быстрое, то есть варианты, такие как отправка уведомлений с одного узла на другой или использование центральной системы оркестровки, чтобы подтолкнуть как исходное изменение, так и затем работать с каскадными обновлениями. Шеф-повар Push Jobs теоретически можно использовать здесь, но я бы не стал его рекомендовать. Что-то вроде шаблонов Consul + Consul - это, вероятно, то, что вам нужно для быстрой настройки конфигурации и обновления SD, или просто позволить интервальным запускам Chef позаботиться об этом для вещей, которые меняются реже.