Иерархическая установка
В этом разделе описано, как настроить Chef Infra Server с одним бэкендом и несколькими серверами фронтенда, сбалансированными по нагрузке.
Предварительные требования
Перед установкой программного обеспечения Chef Infra Server выполните следующие шаги:
- Бэкенд-сервер должен быть доступен с каждого сервера фронтенда. Виртуальный IP-адрес создается и управляется Chef Infra Server, но также должен быть добавлен в DNS, чтобы все машины в иерархической конфигурации могли к нему получить доступ.
- Персистентные данные на бэкенд-сервере Chef Infra Server в основном состоят из файлов и каталогов кулинарных книг. Перед установкой Chef Infra Server следует выделить отдельные диски, предназначенные исключительно для хранения этих данных.
- Для серверов фронтенда необходимо использовать балансировку нагрузки, а также запись DNS для виртуального IP-адреса, используемого для балансировки нагрузки. Этот виртуальный IP-адрес добавляется в файл chef-server.rb в качестве
api_fqdn. - Все необходимые порты должны быть открыты. Список портов см. в разделе «Брандмауэры» (ниже). Все подключения к Chef Infra Server и от него осуществляются через TCP. Обратитесь к руководству по операционной системе или к системным администраторам за инструкциями по настройке портов, если это необходимо.
- Имя хоста Chef Infra Server должно быть полным доменным именем (FQDN), включая суффикс домена, и должно быть разрешимо серверами бэкенда и фронтенда. Дополнительную информацию см. в разделе Имена хостов, FQDN.
-
chef-server-ctl reconfigureне будет привязыватьbackend_vipк бэкенд-серверу. Самый простой способ — просто определитьbackend_vipкак уже настроенный основной IP-адрес бэкенд-системы. Если необходимо использовать дополнительный адрес, его необходимо настроить и привязать к системе до запускаchef-server-ctl reconfigure.
Основные требования к оборудованию
Для развертывания в иерархической структуре ваш бэкенд-сервер должен соответствовать следующим требованиям к оборудованию:
- 64-битная архитектура
- 8 ядер в общей сложности (физических или виртуальных)
- 16 ГБ ОЗУ
- Быстрое, избыточное хранилище (SSD/RAID-решение)
- 50 ГБ/бэкенд-сервер (SSD для локального размещения, Premium Storage в Microsoft Azure, EBS-Optimized GP2 в AWS)
- Интерфейс NIC 1 Gigabit Ethernet
- Бэкенд-сервер; все остальные системы будут серверами фронтенда.
Настройка диска
Персистентные данные на бэкенд-сервере Chef Infra Server в основном состоят из файлов и каталогов кулинарных книг. Перед установкой Chef Infra Server следует выделить отдельные диски, предназначенные исключительно для хранения этих данных. Эти диски должны быть частью решения SSD или RAID на аппаратном уровне, обеспечивающего избыточность и высокую производительность ввода-вывода. Данное руководство по настройке предполагает, что:
- Доступно около 50 ГБ неразмеченного дискового пространства. Объем дискового пространства должен увеличиваться пропорционально количеству узлов, управляемых бэкенд-сервером. Хорошее правило — выделять 2 МБ на узел.
- Дисковое пространство представлено как одно устройство. Например:
/dev/sdb. - Хранилище добавляется в группу томов под названием
opscodeи представляется Chef Infra Server путем монтирования по адресу/var/opt/opscodeперед переконфигурацией
Следующие команды правильно настраивают конфигурацию диска на бэкенд-сервере:
pvcreate /dev/sdb
и:
vgcreate opscode /dev/sdb
и:
lvcreate -l 80%VG -n tiered opscode
Монтирование накопителя
Для создания и монтирования накопителя на бэкенд-сервере выполните следующие действия:
-
Создайте файловую систему. Например,
ext4тип под названиемtiered:mkfs.ext4 /dev/opscode/tieredзатем:
mkdir -p /var/opt/opscodeи затем:
mount /dev/opscode/tiered /var/opt/opscode
Бэкенд
Выполните следующие шаги для настройки бэкенд-сервера Chef Infra Server:
-
Загрузите пакеты с https://downloads.chef.io/chef-server/. Для Red Hat и CentOS 6:
rpm -Uvh /tmp/chef-server-core-<version>.rpmДля Ubuntu:
dpkg -i /tmp/chef-server-core-<version>.debЧерез несколько минут Chef Infra Server будет установлен.
-
Создайте файл с именем chef-server.rb, расположенный в каталоге
/etc/opscode/. Пример настроек и значений, которые требуются, см. в разделе chef-server.rb ниже.
chef-server.rb
Файл chef-server.rb, расположенный в каталоге /etc/opscode/, описывает топологию иерархической конфигурации. На бэкенд-сервере создайте файл с именем chef-server.rb и сохраните его в каталоге /etc/opscode/.
Добавьте следующие настройки в файл chef-server.rb:
-
Определите тип топологии:
topology "tier" -
Определите бэкенд-сервер:
server "FQDN", :ipaddress => "IP_ADDRESS", :role => "backend", :bootstrap => trueЗамените
FQDNна полное доменное имя (FQDN) сервера, аIP_ADDRESS— на IP-адрес сервера. Роль бэкенд-сервера —"backend". -
Определите виртуальный IP-адрес бэкенда:
backend_vip "FQDN", :ipaddress => "IP_ADDRESS", :device => "eth0"Замените
FQDNна полное доменное имя (FQDN) сервера, аIP_ADDRESS— на виртуальный IP-адрес сервера. Параметр:deviceдолжен содержать сетевой интерфейс, к которому будет привязан виртуальный IP-адрес. Как правило, это внешний интерфейс сервера. В типичной установке в иерархической структуре эта конфигурация может также содержать только основное полное доменное имя (FQDN) и IP-адрес, которые уже настроены для бэкенда. Выполнениеchef-server-ctl reconfigureне привяжетbackend_vipадрес к интерфейсу; это необходимо сделать при запуске машины. -
Определите каждый сервер фронтенда:
server "FQDN", :ipaddress => "IP_ADDRESS", :role => "frontend"Замените
FQDNна полное доменное имя (FQDN) сервера фронтенда, аIP_ADDRESS— на IP-адрес сервера фронтенда. Установите:roleв"frontend".Добавьте отдельные записи в файл chef-server.rb для каждого сервера фронтенда.
-
Определите FQDN API:
api_fqdn "FQDN"Замените
FQDNна полное доменное имя (FQDN) виртуального IP-адреса, сбалансированного по нагрузке, которое должно соответствовать FQDN URI службы, используемой сервером Chef Infra Server. -
Переконфигурируйте Chef Infra Server и консоль управления Chef (автономные и члены группы фронтенда в установке высокой доступности):
chef-server-ctl reconfigure
Фронтенд
Для каждого сервера фронтенда выполните следующие шаги для настройки Chef Infra Server:
-
Установите пакет Chef Infra Server. Для Red Hat и CentOS 6:
rpm -Uvh /tmp/chef-server-core-<version>.rpmДля Ubuntu:
dpkg -i /tmp/chef-server-core-<version>.debЧерез несколько минут Chef Infra Server будет установлен.
-
Создайте каталог
/etc/opscode/, затем скопируйте все содержимое каталога/etc/opscodeс первичного бэкенд-сервера, включая все сертификаты и файл chef-server.rb. -
Переконфигурируйте Chef Infra Server и консоль управления Chef (автономные и члены группы фронтенда в установке высокой доступности):
chef-server-ctl reconfigure
-
Запустите Chef Infra Server:
chef-server-ctl start
На одном сервере фронтенда создайте администратора и организацию:
- Выполните следующую команду для создания администратора:
sudo chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' --filename FILE_NAME
RSA-приватный ключ генерируется автоматически. Это приватный ключ пользователя и его следует сохранить в безопасном месте. Опция --filename сохранит RSA-приватный ключ по указанному абсолютному пути.
Например:
sudo chef-server-ctl user-create janedoe Jane Doe janed@example.com 'abc123' --filename /path/to/janedoe.pem
- Выполните следующую команду для создания организации:
sudo chef-server-ctl org-create short_name 'full_organization_name' --association_user user_name --filename ORGANIZATION-validator.pem
Например:
sudo chef-server-ctl org-create 4thcafe 'Fourth Cafe, Inc.' --association_user janedoe --filename /path/to/4thcafe-validator.pem
Имя должно начинаться с строчной буквы или цифры, содержать только строчные буквы, цифры, дефисы и символы подчеркивания и иметь длину от 1 до 255 символов. Например: 4thcafe.
Полное имя должно начинаться с символа, отличного от пробела, и иметь длину от 1 до 1023 символов. Например: 'Fourth Cafe, Inc.'.
Опция --association_user свяжет user_name с группой безопасности admins на сервере Chef Infra Server.
RSA-приватный ключ генерируется автоматически. Это ключ chef-validator и его следует сохранить в безопасном месте. Опция --filename сохранит RSA-приватный ключ по указанному абсолютному пути.
Включение функций
Включите дополнительные функции сервера Chef Infra Server! Пакеты можно загрузить непосредственно в процессе установки или предварительно загрузить в локальный каталог, а затем установить.
Использование загрузок
Команда install по умолчанию загружает пакеты с https://packages.chef.io/. Для систем, не защищенных брандмауэром (и имеющих доступ к https://packages.chef.io/), пакет консоли управления Chef можно установить, как описано ниже:
- Chef Manage
-
Используйте консоль управления Chef для управления пакетами данных, атрибутами, run-листами, ролями, средами и кулинарными книгами через веб-интерфейс.
На каждом сервере фронтенда в конфигурации Chef Infra Server выполните:
chef-server-ctl install chef-manageзатем:
chef-server-ctl reconfigureи затем:
chef-manage-ctl reconfigureДля принятия Chef MLSA:
sudo chef-manage-ctl reconfigure --accept-licenseЭто обновляет Chef Infra Server и создает файл
/etc/opscode-manage/secrets.rb. При запуске консоли управления Chef 1.11 (или выше) скопируйте файлsecrets.rbв каталоге/etc/opscode-manageна одном из серверов фронтенда в тот же каталог на каждом из других серверов фронтенда, а затем снова запуститеchef-manage-ctl reconfigure, чтобы скопированный файл/etc/opscode-manage/secrets.rbиспользовался правильно.
Использование локальных пакетов
Используйте команду install с опцией --path для установки дополнения Chef Manage (chef-manage) для Chef Infra Server.
sudo chef-server-ctl install PACKAGE_NAME --path /path/to/package/directory
Например:
sudo chef-server-ctl install chef-manage --path /root/packages
Команда chef-server-ctl установит первый пакет chef-manage , найденный в каталоге /root/packages.
Справочник
В следующих разделах показан пример файла chef-server.rb и список портов, необходимых для работы Chef Infra Server.
chef-server.rb
Полный конфигурационный файл chef-server.rb для четырёхзвенной конфигурации Chef Infra Server, состоящей из:
| FQDN | Действительный IP-адрес | Роль |
|---|---|---|
| be1.example.com | 192.0.2.0 | backend |
| fe1.example.com | 192.168.4.2 | frontend |
| fe2.example.com | 192.168.4.3 | frontend |
| fe3.example.com | 192.168.4.4 | frontend |
| chef.example.com | Загрузочный балансируемый VIP-адрес frontend | |
| be.example.com | 192.168.4.7 | Загрузочный балансируемый VIP-адрес backend |
Он выглядит так:
topology "tier"
server "be1.example.com",
:ipaddress => "192.0.2.0",
:role => "backend",
:bootstrap => true
backend_vip "be.example.com",
:ipaddress => "192.168.4.7",
:device => "eth0"
server "fe1.example.com",
:ipaddress => "192.168.4.2",
:role => "frontend"
server "fe2.example.com",
:ipaddress => "192.168.4.3",
:role => "frontend"
server "fe3.example.com",
:ipaddress => "192.168.4.4",
:role => "frontend"
api_fqdn "chef.example.com"
Брандмауэры
Все порты, используемые Chef Infra Server, являются TCP-портами. Обратитесь к руководству операционной системы или системным администраторам для получения инструкций по включению изменений портов, если необходимо.
Все службы должны прослушивать соответствующие порты. Большинство систем мониторинга предоставляют возможность проверки того, принимает ли данный порт соединения, а также могут быть доступны инструменты, специфичные для службы. Кроме того, для инициации соединения также можно использовать общий системный инструмент Telnet:
telnet HOST_NAME PORT
Должен быть настроен один интерфейс обратной связи с использованием адреса 127.0.0.1. Это гарантирует доступность всех служб для Chef Infra Server в случае попытки Chef Infra Server связаться с собой из машины front-end или back-end. Все порты должны быть доступны через интерфейс обратной связи соответствующих узлов.
Backend
Для серверов backend в установке Chef Infra Server со слоями убедитесь, что порты, помеченные как внешние (помеченные как yes в столбце Внешние), открыты и доступны через используемые брандмауэры:
| Порт | Имя службы, описание | Внешний |
|---|---|---|
80, 443, 9683 |
nginx Служба nginx используется для управления трафиком Chef Infra Server, включая виртуальные хосты для маршрутизации запросов/ответов API внутри и снаружи, маршрутизации запросов внешних дополнений и маршрутизации между компонентами front-end и back-end. Примечание Порт 9683 используется для внутренней балансировки нагрузки службы oc_bifrost. | да |
9463 |
oc_bifrost Служба oc_bifrost гарантирует, что каждый запрос на просмотр или управление объектами, хранящимися на Chef Infra Server, авторизован. | |
9200 |
elasticsearch Служба elasticsearch используется для создания индексов поиска, используемых для поиска объектов, таких как узлы, пакеты данных и кулинарные книги. (Эта служба обеспечивает быстрые результаты поиска через API Chef Infra Server; данные, используемые платформой Chef, хранятся в PostgreSQL.) | |
5432 |
postgresql Служба postgresql используется для хранения данных о узлах, объектах и пользователях. | |
16379 |
redis_lb Хранилище значений пар ключ-значение, используемое в сочетании с Nginx для маршрутизации запросов и заполнения данных запросов, используемых Chef Infra Server. | |
4321 |
bookshelf Служба bookshelf — это служба, совместимая с Amazon Simple Storage Service (S3), которая используется для хранения кулинарных книг, включая все файлы — рецепты, шаблоны и т. д. — связанные с каждой кулинарной книгой. | |
8000 |
opscode-erchef Служба opscode-erchef — это служба на основе Erlang, используемая для обработки запросов API Chef Infra Server к следующим областям в Chef Infra Server:
|
Frontend
Для серверов frontend убедитесь, что порты, помеченные как внешние (помеченные как yes в столбце Внешний), открыты и доступны через используемые брандмауэры:
| Порт | Имя службы, описание | Внешний |
|---|---|---|
80, 443, 9683 |
nginx Служба nginx используется для управления трафиком Chef Infra Server, включая виртуальные хосты для маршрутизации запросов/ответов API внутри и снаружи, маршрутизации запросов внешних дополнений и маршрутизации между компонентами front-end и back-end. Примечание Порт 9683 используется для внутренней балансировки нагрузки службы oc_bifrost. | да |
9463 |
oc_bifrost Служба oc_bifrost гарантирует, что каждый запрос на просмотр или управление объектами, хранящимися на Chef Infra Server, авторизован. | |
9090 |
oc-id Служба oc-id позволяет использовать OAuth 2.0 для аутентификации внешних приложений, включая Chef Supermarket, для доступа к Chef Infra Server. OAuth 2.0 использует аутентификацию на основе токенов, где внешние приложения используют токены, выпущенные поставщиком oc-id. Внешнее приложение не хранит специальные учётные данные — | |
8000 |
opscode-erchef Служба opscode-erchef — это служба на основе Erlang, используемая для обработки запросов API Chef Infra Server к следующим областям в Chef Infra Server:
|
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/server/install_server_tiered/