Многоуровневая установка
В этом разделе описано, как настроить сервер Chef Infra с одним бэкендом и несколькими серверами фронтенда с балансировкой нагрузки.
Предварительные требования
Перед установкой программного обеспечения Chef Infra Server выполните следующие шаги:
- Сервер бэкенда должен быть доступен с каждого сервера фронтенда. Виртуальный IP-адрес создается и управляется сервером Chef Infra, но также должен быть добавлен в DNS, чтобы все машины в конфигурации с тиering могли к нему получить доступ.
- Персистентные данные на сервере бэкенда Chef Infra в основном состоят из файлов и каталогов куков. Перед установкой сервера Chef Infra следует выделить отдельные диски для хранения этих данных.
- Для серверов фронтенда следует использовать балансировку нагрузки, а также запись DNS для виртуального IP-адреса, используемого для балансировки нагрузки. Этот виртуальный IP-адрес добавляется в файл chef-server.rb в качестве
api_fqdn. - Все необходимые порты должны быть открыты. Список портов см. в разделе «Брандмауэры» (ниже). Все соединения с сервером Chef Infra и от него осуществляются по протоколу TCP. Для получения инструкций по настройке портов, если это необходимо, обратитесь к руководству операционной системы или к системным администраторам.
- Имя хоста сервера Chef Infra должно быть FQDN, включая суффикс домена, и должно быть разрешимо серверами бэкенда и фронтенда. Дополнительную информацию см. в разделе Имена хостов, FQDN.
-
chef-server-ctl reconfigureне будет привязыватьbackend_vipк серверу бэкенда. Наиболее просто определитьbackend_vipкак уже настроенный основной IP-адрес бэкенд-системы. Если вам нужно использовать дополнительный адрес, его необходимо настроить и привязать к системе перед запускомchef-server-ctl reconfigure.
Основные требования к оборудованию
Для развертывания с тиering сервер бэкенда должен соответствовать следующим требованиям к оборудованию:
- 64-разрядная архитектура
- 8 ядер в общей сложности (физических или виртуальных)
- 16 ГБ оперативной памяти
- Быстрое, избыточное хранилище (SSD/решение на основе RAID)
- 50 ГБ/сервер бэкенда (SSD при локальном размещении, Premium Storage в Microsoft Azure, EBS-Optimized GP2 в AWS)
- Интерфейс сетевой карты 1 GigE
- Сервер бэкенда; все остальные системы будут серверами фронтенда.
Настройка диска
Персистентные данные на сервере бэкенда сервера Chef Infra в основном состоят из файлов и каталогов куков. Перед установкой сервера Chef Infra следует выделить отдельные диски для хранения этих данных. Эти диски должны быть частью решения на основе SSD или RAID-массива, обеспечивающего избыточность и высокую производительность IOPS. Это руководство по конфигурации предполагает, что:
- Доступно ~50 ГБ неразмеченного пространства на диске. Объем дискового пространства должен увеличиваться с числом узлов, управляемых сервером бэкенда. Хорошим правилом является выделение 2 МБ на узел.
- Дисковое пространство представляется как одно устройство. Например:
/dev/sdb. - Хранилище добавляется в группу томов с именем
opscodeи представляется серверу Chef Infra путем монтирования на/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 выполните следующие шаги:
-
Загрузите пакеты с 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 будет установлен.
Создайте файл с именем chef-server.rb, который расположен в каталоге
/etc/opscode/. См. раздел chef-server.rb ниже для примера настроек и необходимых значений.
chef-server.rb
Файл chef-server.rb, расположенный в каталоге /etc/opscode/ описывает топологию конфигурации с тиering. На сервере бэкенда создайте файл с именем 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должен соответствовать интерфейсу Ethernet, к которому будет привязан виртуальный IP-адрес. Обычно это внешний интерфейс сервера. В типичном развертывании с тиering в этой конфигурации также могут быть указаны основной 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. Переконфигурируйте сервер Chef Infra и консоль управления Chef (автономные и серверы фронтенда в группе, участвующие в установке High Availability):
chef-server-ctl reconfigure
Фронтенд
Для каждого сервера фронтенда выполните следующие шаги для настройки сервера Chef Infra:
-
Установите пакет сервера Chef Infra. Для Red Hat и CentOS 6:
rpm -Uvh /tmp/chef-server-core-<version>.rpmДля Ubuntu:
dpkg -i /tmp/chef-server-core-<version>.debЧерез несколько минут сервер Chef Infra будет установлен.
Создайте каталог
/etc/opscode/и скопируйте содержимое каталога/etc/opscodeс основного сервера бэкенда, включая все сертификаты и файл chef-server.rb.Переконфигурируйте сервер Chef Infra и консоль управления Chef (автономные и серверы фронтенда в группе, участвующие в установке High Availability):
chef-server-ctl reconfigure
-
Запустите сервер Chef Infra:
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 4thcoffee 'Fourth Coffee, Inc.' --association_user janedoe --filename /path/to/4thcoffee-validator.pem
Имя должно начинаться с прописной буквы или цифры, содержать только прописные буквы, цифры, дефисы и символы подчеркивания, и должно быть от 1 до 255 символов. Например: 4thcoffee.
Полное имя должно начинаться с символа, отличного от пробела, и должно содержать от 1 до 1023 символов. Например: 'Fourth Coffee, Inc.'.
Опция --association_user свяжет user_name с группой безопасности admins на сервере Chef Infra.
Автоматически генерируется закрытый ключ RSA. Это ключ chef-validator, и его следует сохранить в безопасном месте. Опция --filename сохранит закрытый ключ RSA в указанный абсолютный путь.
Включение функций
Включите дополнительные функции сервера Chef Infra! Пакеты могут быть загружены непосредственно в процессе установки, или их можно сначала загрузить в локальную директорию, а затем установить.
Использование загрузок
Команда install по умолчанию загружает пакеты с https://packages.chef.io/. Для систем, не защищенных брандмауэром (и имеющих подключение к https://packages.chef.io/), пакет консоли управления Chef можно установить, как описано ниже:
- Chef Manage
-
Используйте консоль управления Chef для управления пакетами данных, атрибутами, списками выполнения, ролями, средами и куками с помощью веб-интерфейса.
На каждом сервере фронтенда в конфигурации сервера Chef Infra выполните:
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 и создает файл
/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) и Push Jobs (opscode-push-jobs-server) для сервера Chef Infra.
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 попытается связаться с собой из машины frontend или backend. Все порты должны быть доступны через интерфейс обратной связи соответствующих хостов.
Backend
Для серверов backend в установке сервера Chef Infra Server с несколькими уровнями убедитесь, что порты, отмеченные как внешние (отмеченные как yes в столбце Внешний), открыты и доступны через все используемые брандмауэры:
| Порт | Имя службы, описание | Внешний |
|---|---|---|
80, 443, 9683 |
nginx Служба nginx используется для управления трафиком сервера Chef Infra Server, включая виртуальные хосты для маршрутизации запросов/ответов внутренних и внешних API, маршрутизации внешних запросов плагинов и маршрутизации между компонентами frontend и backend. Примечание Порт 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, маршрутизации внешних запросов плагинов и маршрутизации между компонентами frontend и backend. Примечание Порт 9683 используется для внутренней балансировки нагрузки службы oc_bifrost. |
да |
9463 |
oc_bifrost Служба oc_bifrost обеспечивает авторизацию каждого запроса на просмотр или управление объектами, хранящимися на сервере Chef Infra Server. |
|
9090 |
oc-id Служба oc-id позволяет использовать аутентификацию OAuth 2.0 на сервере Chef Infra Server внешними приложениями, включая Chef Supermarket. 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/install_server_tiered/