[Документация Yandex Cloud](../../../../index.md) > [Yandex Compute Cloud](../../../index.md) > [Концепции](../../index.md) > [Группы виртуальных машин](../index.md) > [Обновление](index.md) > Распределение виртуальных машин по зонам

# Распределение виртуальных машин по зонам


{% note info %}

В [регионе Казахстан](../../../../overview/concepts/region.md) доступна только [зона доступности](../../../../overview/concepts/geo-scope.md) `kz1-a`.

{% endnote %}


Распределение виртуальных машин по зонам зависит от [типа масштабирования группы](../scale.md). 

## В группах с ручным масштабированием {#fixed-scale}

В группах с ручным масштабированием виртуальные машины распределяются между зонами равномерно. 

В соответствии с [политикой развертывания](../policies/allocation-policy.md), в каждую зону последовательно добавляется по одной виртуальной машине. Если список зон подошел к концу, а необходимое количество виртуальных машин еще не создано, то зоны используются повторно.
 
{% note tip %}

Рекомендуем создавать группу таким образом, чтобы ее размер был кратен количеству зон.

В этом случае количество машин в зонах будет одинаковым, и [сетевой балансировщик нагрузки](../../../../network-load-balancer/concepts/index.md) (если он есть) будет равномерно распределять нагрузку между виртуальными машинами.

{% endnote %}

Если размер группы не будет кратен количеству зон, то количество виртуальных машин в одних зонах будет меньше, чем в других, но не более чем на одну машину.

### Примеры {#ex-fixed-scale}

Если в YAML вы указали зоны в порядке `[kz1-d, kz1-a]` и размер группы равен 4, то после распределения в каждой зоне будет по 2 виртуальных машины:


| Шаг | kz1-d | kz1-a | Осталось |
| :-: | :-----------: | :-----------: | :------: |
|  1  |       1       |       0       |     3    |
|  2  |       1       |       1       |     2    |
|  3  |       2       |       1       |     1    |
|  4  |       2       |       2       |     0    |


Если в YAML вы указали зоны в порядке `[kz1-d, kz1-a]` и размер группы равен 5, то в зоне `kz1-d` будет 3 виртуальных машины, а в зоне `kz1-a` — 2:


| Шаг | kz1-d | kz1-a | Осталось |
| :-: | :-----------: | :-----------: | :------: |
|  1  |       1       |       0       |     4    |
|  2  |       1       |       1       |     3    |
|  3  |       2       |       1       |     2    |
|  4  |       2       |       2       |     1    |
|  5  |       3       |       2       |     0    |


Если в спецификации перечислены три зоны в порядке `[kz1-d, kz1-a, kz1-b]`, и указан фиксированный размер группы 2, который меньше количества зон. Тогда в `kz1-d` и `kz1-a` будет создано по одной виртуальной машине, а в `kz1-b` — ни одной. **Такая конфигурация не рекомендуется, но и не запрещена**.

## В автоматически масштабируемых группах {#auto-scale}

В отличие от группы фиксированного размера, порядок зон в автоматически масштабируемых группах виртуальных машин не имеет значения. 

Количество виртуальных машин в зонах определяется алгоритмом [автоматического масштабирования](../scale.md#auto-scale), исходя из значений средней утилизации и средней нагрузки на зону. И оно может изменяться в зависимости от значений ограничений, заданных пользователем:

* `min_zone_size` (минимальный размер зоны) — в зоне не может быть меньше виртуальных машин, чем указано в `min_zone_size`.
  Это ограничение позволяет сохранять в зоне резерв виртуальных машин на случай резкого повышения нагрузки.
  Допускается указывать `min_zone_size=0`, если у группы в [политике масштабирования](../policies/scale-policy.md#auto-scale-policy) задана хотя бы одна метрика, характеризующая суммарную нагрузку на все ВМ (`custom_rules: rule_type: WORKLOAD`). В этом случае зона может быть пустой.

* `max_size` (максимальный размер всей группы) — в группе не может быть больше виртуальных машин, чем указано в `max_size` (суммарно по всем зонам). 
  Ограничение количества виртуальных машин в группе при автоматическом масштабировании позволяет контролировать финансовые затраты. 

* `initial_size` (начальное количество ВМ в группе):
  * для групп с региональным масштабированием, у которых в политике масштабирования не задана ни одна метрика, характеризующая суммарную нагрузку на все ВМ (`custom_rules: rule_type: WORKLOAD`), — не менее 1.
  * для групп с зональным масштабированием, у которых в политике масштабирования не задана ни одна метрика, характеризующая суммарную нагрузку на все ВМ, — не меньше количества зон, в которых развернута группа.
  * для групп, у которых в политике масштабирования задана хотя бы одна метрика, характеризующая суммарную нагрузку на все ВМ, — 0 и более.
  
  Ограничение нужно, чтобы процесс автоматического масштабирования не завис в ожидании метрик от ВМ, которых нет в зоне или регионе.

### Примеры {#ex-auto-scale}

**При распределении учитывается ограничение `min_zone_size`**

Пусть `min_zone_size` равно 2, а алгоритмом автоматического масштабирования рассчитывается, что нужно 0 виртуальных машин в зоне. Тогда в зоне будет 2 виртуальных машины, так как это минимальное допустимое количество машин в зоне.

**При распределении учитываются ограничения `min_zone_size` и `max_size`**

Пусть `min_zone_size` равно 5, `max_size` — 20 и автоматическим масштабированием машины распределяются в зонах следующим образом: 15 + 10 + 5 машин.

1. Всего машин получается 30. Это на 10 больше, чем `max_size`. Поэтому из каждой зоны убираются виртуальные машины, пока не уберется 10. 
  Чем больше виртуальных машин в зоне, тем больше машин может быть из нее удалено. Но при этом должно остаться не менее 5 виртуальных машин в зоне.

1. Одно из возможных распределений — 9 + 6 + 5. 
  Из самой крупной зоны убирается 6 виртуальных машин (было 15, стало 9), из средней — 4 (было 10, стало 6), из самой маленькой — ничего не убирается, так как в ней уже минимально допустимое количество виртуальных машин (5).

## Примеры использования {#examples}

* [Работа с группой виртуальных машин с автоматическим масштабированием](../../../tutorials/vm-autoscale/index.md)
* [Масштабирование группы виртуальных машин по расписанию](../../../tutorials/vm-scale-scheduled/index.md)