Новые виртуальные машины в Cloud2 размещаются на наименее загруженных узлах. Обычно, это то, что вы хотите и это работает отлично. Однако, бывают случаи, когда пользователи хотят, чтобы машины не размещались в едином домене отказа, то есть не выходили из строя одновременно при каких-либо проблемах в облаке, или, наоборот, пользователь может хотеть, чтобы машины размещались на одном хосте, чтобы уменьшить сетевую задержку между ними и увеличить полосу пропускания — в Cloud2 действует бэкбон-сеть между машинами одного аккаунта, которая в рамках одного хоста не имеет ограничений в 10Gbit/s.
В Cloud2 домен отказа — это вычислительный хост. При отказе хоста, машины размещенные на других хостах не подвержены проблеме. В настоящее время мы не используем разделяемые хранилища, поскольку стремимся обеспечивать высочайшие показатели IOPS и минимальные задержки при I/O, что не возможно с использованием удаленных, разделяемых хранилищ.
В настоящее время мы поддерживаем два вида групп условного размещения виртуальных машин (аффинитетных групп):
- Host anti-affinity — размещает все машины, добавленные в нее на разные узлы, в настоящее время максимальное количество машин, которые можно указать в данной группе — 3;
- Host affinity — размещает все машины на одном узле.
С помощью интерфейса CloudStack вы можете создавать аффинитетные группы, а при создании машин, можете помещать их в них. Каждая машина может быть в одной или более группах.
Пример 1. Создана host anti-affinity группа mysql-galera, в нее добавлено 3 узла db1, db2, db3. В результате, каждая машина будет размещена на уникальном узле Cloud2.
Пример 2. Создано две группы:
- host anti-affinity: mysql-master-slave,
- host affinity: apps.
В группу mysql-master-slave добавлены виртуальные машины db-master, db-slave. В группу apps добавлены две машины db-master, app-server.
В результате app-server будет размещен на том же хосте, где и db-master, а db-slave будет размещен на хосте, отличном от того, где размещен db-master.
Рассмотрим работу с аффинитетными группами с помощью интерфейса CloudStack.
Создадим необходимые группы. Перейдем в раздел аффинитетных групп. Как видно, групп нет.
Создадим две группы из примера 2.
Создадим, три виртуальные машины, поместив их в нужные группы. Сначала app-server, который добавлен в группу app-at-master:
Затем db-slave в группе mysql-master-slave:
и db-master в групах mysql-master-slave и app-at-master:
Теперь, если кликнуть на группу и перейти в раздел View Instances, то можно увидеть машины, которые в группе находятся.