Spec-Zone.ru › Chef 17

Иерархическая установка

[править на GitHub]

В этом разделе описано, как настроить Chef Infra Server с одним бэкендом и несколькими серверами фронтенда, сбалансированными по нагрузке.

image

Предварительные требования

Перед установкой программного обеспечения 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

Монтирование накопителя

Для создания и монтирования накопителя на бэкенд-сервере выполните следующие действия:

  1. Создайте файловую систему. Например, ext4 тип под названием tiered:

    mkfs.ext4 /dev/opscode/tiered
    

    затем:

    mkdir -p /var/opt/opscode
    

    и затем:

    mount /dev/opscode/tiered /var/opt/opscode
    

Бэкенд

Выполните следующие шаги для настройки бэкенд-сервера Chef Infra Server:

  1. Загрузите пакеты с 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 будет установлен.

  2. Создайте файл с именем chef-server.rb, расположенный в каталоге /etc/opscode/. Пример настроек и значений, которые требуются, см. в разделе chef-server.rb ниже.

chef-server.rb

Файл chef-server.rb, расположенный в каталоге /etc/opscode/, описывает топологию иерархической конфигурации. На бэкенд-сервере создайте файл с именем chef-server.rb и сохраните его в каталоге /etc/opscode/.

Добавьте следующие настройки в файл chef-server.rb:

  1. Определите тип топологии:

    topology "tier"
    
  2. Определите бэкенд-сервер:

    server "FQDN",
      :ipaddress => "IP_ADDRESS",
      :role => "backend",
      :bootstrap => true
    

    Замените FQDN на полное доменное имя (FQDN) сервера, а IP_ADDRESS — на IP-адрес сервера. Роль бэкенд-сервера — "backend".

  3. Определите виртуальный IP-адрес бэкенда:

    backend_vip "FQDN",
      :ipaddress => "IP_ADDRESS",
      :device => "eth0"
    

    Замените FQDN на полное доменное имя (FQDN) сервера, а IP_ADDRESS — на виртуальный IP-адрес сервера. Параметр :device должен содержать сетевой интерфейс, к которому будет привязан виртуальный IP-адрес. Как правило, это внешний интерфейс сервера. В типичной установке в иерархической структуре эта конфигурация может также содержать только основное полное доменное имя (FQDN) и IP-адрес, которые уже настроены для бэкенда. Выполнение chef-server-ctl reconfigure не привяжет backend_vip адрес к интерфейсу; это необходимо сделать при запуске машины.

  4. Определите каждый сервер фронтенда:

    server "FQDN",
      :ipaddress => "IP_ADDRESS",
      :role => "frontend"
    

    Замените FQDN на полное доменное имя (FQDN) сервера фронтенда, а IP_ADDRESS — на IP-адрес сервера фронтенда. Установите :role в "frontend".

    Добавьте отдельные записи в файл chef-server.rb для каждого сервера фронтенда.

  5. Определите FQDN API:

    api_fqdn "FQDN"
    

    Замените FQDN на полное доменное имя (FQDN) виртуального IP-адреса, сбалансированного по нагрузке, которое должно соответствовать FQDN URI службы, используемой сервером Chef Infra Server.

  6. Переконфигурируйте Chef Infra Server и консоль управления Chef (автономные и члены группы фронтенда в установке высокой доступности):

chef-server-ctl reconfigure

Фронтенд

Для каждого сервера фронтенда выполните следующие шаги для настройки Chef Infra Server:

  1. Установите пакет 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 будет установлен.

  2. Создайте каталог /etc/opscode/, затем скопируйте все содержимое каталога /etc/opscode с первичного бэкенд-сервера, включая все сертификаты и файл chef-server.rb.

  3. Переконфигурируйте Chef Infra Server и консоль управления Chef (автономные и члены группы фронтенда в установке высокой доступности):

chef-server-ctl reconfigure
  1. Запустите Chef Infra Server:

    chef-server-ctl start
    

На одном сервере фронтенда создайте администратора и организацию:

  1. Выполните следующую команду для создания администратора:
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
  1. Выполните следующую команду для создания организации:
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. Внешнее приложение не хранит специальные учётные данные — webui_priv.pem или привилегированные ключи.

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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API