Назад | Перейти на главную страницу

Какая проверка балансировки нагрузки для мастера марионеток

Мы запускаем пару Puppet Master версии 3.7 (не PE) на инстансах AWS EC2 за Elastic Load Balancer (в основном для обеспечения высокой доступности).

В настоящее время проверка балансировщика нагрузки - это просто TCP-соединение на порт 8140. Но при этом не было обнаружено, что один из экземпляров завис (он все еще принимал начальное TCP-соединение, но ничего не делал с ним).

Я ищу способ отправить содержательный запрос о запрете операций мастеру марионеток и получить обратно результат.

Более конкретные требования:

  1. Он не должен вызывать тяжелую обработку (проверки происходят каждые несколько секунд)
  2. Он должен завершиться успешно, если хозяин марионетки может фактически обработать «настоящий запрос», и потерпеть неудачу в противном случае.
  3. Должно быть возможно выполнение из ELB (т.е. в основном он должен возвращать "200 OK" при успешных запросах https по статическому пути..

Есть ли хороший статический путь, который я могу использовать для проверки работоспособности? Пока не нашел.

Что вы можете использовать в качестве проверки, правильно ли работает мастер марионеток, так это настроить какой-то запрос API, например:

curl -k -H "Accept: pson" https://puppetmaster:8140/production/status/no_key

В конце концов, доступ к API не будет доступен по умолчанию, а это означает, что вам придется использовать сертификаты SSL подписанного клиента, чтобы иметь доступ к REST API. Кроме того, у всех сертификатов не будет всех необходимых разрешений.

Это пример того, как выполнить полную компиляцию манифеста:

curl -k -H 'Accept: pson' \
--cert /var/lib/puppet/ssl/certs/node.example.com.pem \
--key /var/lib/puppet/ssl/private_keys/node.example.com.pem \
--cacert /var/lib/puppet/ssl/ca/ca_crt.pem \
https://puppetmaster:8140/production/status/no_key

Не знаю, можно ли интегрировать сертификаты в проверки ELB, но если это не так, возможно, вы можете поиграть с элементами управления доступом REST API и настроить что-то в этих строках в auth.conf:

# Allow ELB to access REST endpoint
path ~ ^/status/no_key$
auth off
allow_ip <ip_of_loadbalancer>

Перезапустите puppetmaster и попробуйте простую проверку:

curl -k -H "Accept: pson" https://puppetmaster:8140/production/status/no_key

Это должно работать. Только будьте осторожны с auth.conf, чтобы не перетянуть себя!

Чтобы увидеть все доступные ключи API, ознакомьтесь с документацией по REST API на сайте PuppetLabs.