Для распределения нагрузки или высокой доступности при развертывании нескольких нод запускаются одинаковые инстансы одного сервиса (или приложения). Вы можете разместить ноды на одной физической машине для увеличения скорости связи, если у вас есть кластер, в котором ноды играют одну роль (например, сервер приложений), а другие ноды играют другую роль (например, база данных).
Для совместного размещению нод внутри кластера существуют несколько вариантов, которые описанны ниже.
Использование группы серверов в профиле
Вы можете создать группу серверов, используя команду nova, для управления привязкой узлов кластера:
openstack server group create sg01 --policy affinity
Отобразиться:
+--------------+------+------------+---------+---------------+---------+----------+
| Id | Name | Project Id | User Id | Policies | Members | Metadata |
+--------------+------+------------+---------+---------------+---------+----------+
| 54a88567-... | sg01 | ... | ... | [u'affinity'] | [] | {} |
+--------------+------+------------+---------+---------------+---------+----------+
После создания профиля сервера nova следует ввести имя группы серверов в свойстве _scheduler_hints_
:
cat web_cluster.yaml
Отобразиться:
1type: os.nova.server
2version: 1.0
3properties:
4 name: web_server
5
6 <... other properties go here ...>
7
8 scheduler_hints:
9 group: sg01
Ноды сервера установятся на один и тот же физический хост после создания кластера с использованием этого профиля, то есть привязка управляется непосредственно службой nova compute. Запросы на создание узлов завершатся неудачей, если нет физических узлов, удовлетворяющих ограничениям.
Если вы создадите кластер с использованием этого профиля, серверные ноды будут загружаться на том же физическом хосте, если это возможно, то есть affinity управляется напрямую сервисом вычислений nova. Запросы на создание узлов завершатся ошибкой, если нет физических узлов, удовлетворяющих ограничениям.
Используйте тот же или другой хост в профиле
При добавлении узлов в существующий кластер, новые ноды могут ссылаться на другой объект профиля того же типа профиля (то есть os.nova.server). Вы можете указать ограничение scheduler_hints, если ожидается, что новая нода будет запущена на хосте из набора серверных нод.
Если у вас есть два серверных узла в кластере с идентификаторами UUID “UUID1″ и «UUID2» соответственно, вы можете ввести ограничения планирования в профиле таким образом:
cat standalone_server.yaml
Отобразиться:
1type: os.nova.server
2version: 1.0
3properties:
4 name: web_server
5
6 <... other properties go here ...>
7
8 scheduler_hints:
9 different_host:
10 - UUID1
11 - UUID2
При добавлении ноды, использующего этот профиль, в кластер создание ноды либо завершается неудачно (например, не найден доступный хост), либо нода успешно создается на другом хосте, отличном от указанных узлов сервера.
Аналогично, вы можете заменить ключ different_host выше на same_host, чтобы указать, что новая нода совмещена с указанными существующими узлами.
Управление Affinity с помощью политики Affinity
Также управлять привязкой узлов можно с помощью политики affinity, создавая и прикрепляя ее к кластеру, вы можете контролировать распределение узлов относительно базовых узлов.