Перейти к основному содержимому

Пул адресов и адресация ВМ

Когда использовать​

Когда нужно управлять тем, какие адреса сети достанутся виртуальным машинам: зарезервировать адрес под физическое оборудование или внешний сервис, вернуть ранее исключённый адрес, найти машину по адресу или проверить, не кончается ли запас.

Инструкция работает с уже созданной сетью. Создание сети — в отдельной инструкции: Как создать сеть и управлять ею.

Предусловия​

  • сеть создана и назначена виртуальному ЦОД (ВЦОД);
  • для просмотра содержимого пула — привилегия View IP Pool Details;
  • известна сеть, с пулом которой работаете: найти её можно по колонке ID в списке All Networks;
  • версия vStack Center — 3.0.4.

Как машина получает адрес​

Адрес выделяется в момент, когда к машине добавляют сетевой интерфейс: в карточке ВМ это кнопка Add network. vStack Center берёт свободный адрес пула выбранной сети и закрепляет его за машиной; в dual-stack-сети машина получает адреса обоих семейств. Полученный адрес виден там же, в блоке Networks карточки машины — колонка IP рядом с MAC и номером слота.

Пул решает, какие адреса вообще участвуют в выдаче. Для IPv4 это список разрешённых адресов, для IPv6 — список резервов, то есть исключений. Отсюда двойственность операций ниже: «исключить адрес» для IPv4 убирает запись из пула, а для IPv6 добавляет запись в резервы. Подробнее об асимметрии — Сети кластера: типы, dual-stack и пулы адресов.

Посмотреть содержимое пула​

  1. Откройте Provider Data Center → All Networks и перейдите в карточку сети.

  2. Разверните блок IPPool space. В его заголовке стоит подсеть сети, а ниже — сетка адресов этой подсети. Сетка строится по IPv4-подсети: резервы IPv6 в ней не показываются.

  3. Прочитайте состояние адресов по трём кнопкам-фильтрам над сеткой. Каждая показывает счётчик и оставляет в сетке только свои адреса; повторное нажатие снимает фильтр.

    ФильтрЧто за адресаМожно ли выдать машине
    N free IP addressадрес в пуле и никем не занятда, будет выдан следующей машине
    N used IP addressадрес уже закреплён за машинойнет, он занят
    N absent IP addressадрес входит в подсеть, но в пуле его нетнет, пока не вернёте адрес в пул
  4. Найдите нужный адрес: поле Search IP address над сеткой ищет по вхождению, а селектор под сеткой меняет число адресов на странице (по умолчанию 24).

  5. Нажмите на адрес — откроется окно с подсетью (Subnet address:), самим адресом (IP address:), меню доступных действий и полем Comment.

Третье состояние, absent, — прямое следствие разрешающей логики IPv4: адрес входит в подсеть, но выдать его нельзя, пока он не добавлен в пул. Заметку в поле Comment стоит оставлять как раз для таких адресов: она сохраняется в ваших настройках и напоминает, почему адрес выведен из выдачи.

Если пул не показывается​

КодПричинаЧто делать
-403 «Access denied»нет привилегии View IP Pool Detailsзапросите привилегию у администратора кластера
-25503 «network_id param does not exist», -25504 «network_id param is null»сеть не опознана: обращение ушло без идентификаторавернитесь в All Networks и откройте карточку сети заново
-25505 «network_id param is not numeric»идентификатор сети передан не числом — так бывает только при программном обращениипередайте числовой идентификатор
-25501 «Params section does not exist», -25502 «Params section is null»обращение ушло без параметров — так бывает только при программном обращениидобавьте секцию параметров с идентификатором сети
-7ошибка базы данныхповторите; если повтор не помог, обратитесь в поддержку

Исключить адрес из выдачи​

Так адрес выводят из-под автоматического выделения: например, чтобы отдать его физическому серверу или оставить под будущий сервис.

  1. В блоке IPPool space включите фильтр N free IP address и нажмите на нужный адрес.

  2. В меню действий выберите Delete from IP pool.

  3. Подтвердите удаление в диалоге. Он спрашивает про конкретный адрес — сверьте его и нажмите Delete; кнопка Cancel закрывает диалог без изменений.

  4. Убедитесь, что адрес перешёл в категорию absent: счётчик N absent IP address вырос, а сам адрес виден под этим фильтром. Об успехе говорит и уведомление с номером адреса и сети.

У адреса в состоянии used действий в меню нет: занятый адрес из выдачи не исключают. И наоборот — исключение не отбирает адрес у машины, которая уже его получила: операция влияет только на будущую выдачу.

Для IPv6 та же операция заносит адрес в резервы; результат тот же — машине этот адрес больше не достанется.

Если адрес не исключается​

КодПричинаЧто делать
-25722 «The address doesn't match network cidr»адрес не входит в подсеть сетисверьте адрес с CIDR сети
-25724 «The address does not exist»адрес уже вне пула — он показан под фильтром absentничего делать не нужно
-25727 «The address is already reserved»IPv6-адрес уже в резервахничего делать не нужно
-25725 «The network does not support IPv4»у сети нет IPv4-подсетиработайте с IPv6-адресами этой сети
-25726 «The network does not support IPv6»у сети нет IPv6-подсетиработайте с IPv4-адресами этой сети
-25708 «address param is not valid»адрес не читаетсяисправьте формат адреса
-25720 «The network does not exist»сети с таким идентификатором больше нетобновите список All Networks

Вернуть адрес в выдачу​

Обратная операция: адрес снова становится доступен машинам.

  1. В блоке IPPool space включите фильтр N absent IP address и нажмите на нужный адрес.

  2. В меню действий выберите Add. Подтверждения эта операция не спрашивает.

  3. Убедитесь, что адрес перешёл в категорию free: счётчик N free IP address вырос, а сам адрес виден под этим фильтром.

Для IPv6 та же операция снимает резерв.

Если адрес не возвращается в пул​

КодПричинаЧто делать
-25622 «The address doesn't match network cidr»адрес не входит в подсеть сетисверьте адрес с CIDR сети
-25623 «The address exists already»адрес уже в пуле — он показан под фильтром freeничего делать не нужно
-25626 «The address is not reserved»IPv6-адрес и так не зарезервированничего делать не нужно
-25624 «The network does not support IPv4»у сети нет IPv4-подсетиработайте с IPv6-адресами этой сети
-25625 «The network does not support IPv6»у сети нет IPv6-подсетиработайте с IPv4-адресами этой сети
-25608 «address param is not valid»адрес не читаетсяисправьте формат адреса
-25620 «The network does not exist»сети с таким идентификатором больше нетобновите список All Networks

Узнать, какие адреса заняты и кем​

  1. Откройте карточку сети и разверните блок IPPool usage. Таблица ID, VDC name, Used IP Addresses разбивает занятые адреса по ВЦОД и отвечает на первый вопрос: какой ВЦОД израсходовал адреса этой сети.

  2. Спуститесь до машины. Откройте нужный ВЦОД → Virtual Machines и смотрите блок Networks в карточках машин: колонка IP показывает адрес, который получил интерфейс.

  3. Убедитесь, что адрес нашёлся именно на том интерфейсе: в блоке Networks рядом с IP стоят Slot, Port и MAC.

Интерфейс доводит связку до ВЦОД, а не до машины сразу: готовую цепочку сеть → ВЦОД → машина → адрес отдаёт API — методы перечислены в конце страницы.

Оценить запас адресов​

Запас адресов виден в трёх местах, каждое отвечает на свой вопрос.

Где смотретьЧто показывает
Provider Data Center → All Networksколонки Used IP Addresses и Free IP Addresses по каждой сети кластера; кнопка CSV выгружает таблицу целиком
Карточка сети, блок IPPool spaceсчётчики free, used и absent для подсети этой сети
ВЦОД → Networks, таб IP DataUsed IP addresses by this vDC, Used IP Addresses, Free IP Addresses и Addrs limit — расход конкретного ВЦОД и его лимит

Счётчики в интерфейсе считают адреса IPv4: Free IP Addresses — это адреса пула, которые никем не заняты. Свободные IPv6-адреса считаются иначе, и у широких подсетей их объём вообще не вычисляется — почему так, объясняет Сети кластера: типы, dual-stack и пулы адресов.

См. также​

Методы API​

Операции этой страницы в API: net-ippool-show, net-ippool-add, net-ippool-delete, net-ippool-usage, net-ippool-free — см. Справочник API.