Виртуальные IP-адреса

Виртуальный IP-адрес — это дополнительный IP-адрес, который можно назначить одному или нескольким серверам. Виртуальный IP-адрес можно использовать для балансировки нагрузки между серверами (при режиме active-active) или для отказоустойчивости (при режиме active- standby).

Создание виртуального IP-адреса

Чтобы создать виртуальный IP-адрес:

  1. Если нужно привязать виртуальный IP-адрес к MAC-адресу:
    1. На каждом сервере установите утилиту keepalived через пакетный менеджер, например:

      Пример команды для ОС Ubuntu или Astra Linux
      apt install keepalived
    2. Создайте конфигурационный файл /etc/keepalived/keepalived.conf на каждом сервере.

      vrrp_script check_t1 {
      script "/home/t1/check_t1.sh"
      interval 10
      fall 2
      rise 2
      }
      vrrp_instance t1_instance {
      interface eth0
      track_interface {
      eth0
      }
      state MASTER
      virtual_router_id 50
      priority 100
      preempt
      unicast_src_ip 1.2.3.89
      unicast_peer {
      1.2.3.90
      }
      virtual_ipaddress { 
      1.2.3.91 dev eth0
      }
      track_script {
      check_t1
      }
      notify /home/t1/keepalived.state.sh
      }
      vrrp_script check_t1 {
       script "/home/t1/check_t1.sh"
      interval 10
      fall 2
      rise 2
      }
      vrrp_instance t1_instance {
      interface eth0
      track_interface {
      eth0
      }
      state BACKUP
      virtual_router_id 50
      priority 50
      preempt
      unicast_src_ip 1.2.3.90
      unicast_peer {
      1.2.3.89
      }
      virtual_ipaddress {
      1.2.3.91 dev eth0
      }
      track_script {
      check_t1
      }
      notify /home/t1/keepalived.state.sh 
      }


    3. В каждом конфигурационном файле добавьте:

      use_vmac
              vmac_xmit_base         # Transmit VRRP adverts over physical interface
      
      net.ipv4.conf.all.arp_ignore = 1
      net.ipv4.conf.all.arp_announce = 1
      net.ipv4.conf.all.arp_filter = 0

      Подробнее см. в документации keepalived.

  2. В главном меню портала выберите Ресурсы Cloud Engine Виртуальные IP -адреса.
  3. Нажмите на кнопку Создать и заполните поля:
    • Имя виртуального IP-адреса * — название виртуального IP-адреса;
    • Выберите Регион * , в котором нужно создать виртуальный IP-адрес;
    • Подсеть * — подсеть, в которой нужно создать виртуальный IP-адрес. Сервер и виртуальный IP-адрес должны размещаться в одной сети;
    • Задать IP-адрес сетевого интерфейса — активируйте переключатель, чтобы указать IP-адрес вручную. При вводе IP-адреса проверяется, не занят ли он, и принадлежность к выбранной подсети;
    • Режим * — режим распределения запросов между серверами:
      • active-active — запросы распределяются между серверами по алгоритму Round-Robin (балансировка нагрузки); 
      • active-standby — запросы передаются только на один сервер. Используется при построении отказоустойчивого кластера (High-availability cluster). Если активный сервер выходит из строя, нагрузка переключается на другой сервер;
    • Задействовать L2 — активируйте переключатель, если используете Direct Connect по механизму MPLS и виртуальный IP-адрес должен быть доступен из вашей сети Direct Connect.
      Если переключатель Задействовать L2 активирован, укажите виртуальный MAC-адрес в поле vMAC-адрес *:
    • Разрешить доступ в Интернет — активируйте переключатель, чтобы разрешить доступ к виртуальному IP-адресу из сети Интернет. Публичный IP-адрес назначается автоматически.
  4. Нажмите на кнопку Заказать. Созданный виртуальный IP-адрес отображается на портале:
  5. Подключите созданный виртуальный IP-адрес к сетевому интерфейсу.
  6. Если в поле Режим * выбрано значение active-standby:
    1. На каждом сервере создайте одинаковые скрипты:

      #!/bin/bash
      # Check if T1 is running, return 1 if not.
      # Used by keepalived to initiate a failover in case T1 is down
      T1_STATUS=$(проверка вашего сервиса)
      if [ "$T1_STATUS" != "" ]
      then
      exit 0
      else
      logger "T1 is NOT running. Setting keepalived state to FAULT."
      exit 1
      fi
      #!/bin/bash
      TYPE=$1
      NAME=$2
      STATE=$3
      echo $STATE > /var/run/keepalived.stated. 
      d.
    2. На обоих серверах выдайте скриптам права «на исполнение», выполнив команду:

      chmod +x /home/t1/keepalived.state.sh /home/t1/check_t1.sh
    3. На обоих серверах включите и перезапустите утилиту keepalived, выполнив команды:

      systemctl enable keepalived.service 
      systemctl restart keepalived.service

В результате первый сервер получит кластерный IP-адрес, а в лог-файле /var/log/syslog будут записи вида:

Mart 9 17:34:54 app-001 Keepalived_vrrp[16978]: VRRP_Script(check_t1) succeeded
Mart 9 17:34:54 app-001 Keepalived_vrrp[16978]: (t1_instance) Entering BACKUP STATE
Mart 9 17:34:58 app-001 systemd[1]: Reloading.
Mart 9 17:34:58 app-001 Keepalived_vrrp[16978]: (t1_instance) Entering MASTER STATE

Действия с виртуальным IP-адресом

Подключение виртуального IP-адреса к сетевому интерфейсу

После создания виртуального IP-адреса подключите его к сетевому интерфейсу:

  1. В главном меню портала перейдите в раздел РесурсыCloud Engine → Виртуальные IP -адреса.
  2. В строке нужного IP-адреса нажмите на кнопку и выберите пункт Подключить к сетевому интерфейсу.
  3. В открывшемся окне в поле Сетевой интерфейс выберите IP-адрес сервера:

  4. Нажмите на кнопку Подтвердить.

Отключение виртуального IP-адреса от сетевого интерфейса

Чтобы отключить виртуальный IP-адрес от сетевого интерфейса:

  1. В главном меню портала перейдите в раздел РесурсыCloud Engine → Виртуальные IP -адреса.
  2. В строке нужного IP-адреса нажмите на кнопку и выберите пункт Отключить от сетевого интерфейса.
  3. В открывшемся окне в поле Сетевой интерфейс выберите IP-адрес сервера:
  4. Нажмите на кнопку Подтвердить.

В результате виртуальный IP-адрес будет отвязан от сервера.

Доступ к виртуальному IP-адресу из сети Интернет

Чтобы разрешить доступ к виртуальному IP-адресу из сети Интернет:

  1. В главном меню портала перейдите в раздел РесурсыCloud Engine → Виртуальные IP -адреса.
  2. В строке нужного IP-адреса нажмите на кнопку и выберите пункт Разрешить доступ в интернет.
  3. В открывшемся окне нажмите на кнопку Подтвердить.

Чтобы отключить доступ к виртуальному IP-адресу из сети Интернет:

  1. В главном меню портала перейдите в раздел РесурсыCloud Engine → Виртуальные IP -адреса.
  2. В строке нужного IP-адреса нажмите на кнопку и выберите пункт Отключить доступ в интернет.
  3. В открывшемся окне нажмите на кнопку Подтвердить.

Управление виртуальным MAC-адресом

Чтобы привязать виртуальный IP-адрес к MAC-адресу:

  1. В главном меню портала перейдите в раздел РесурсыCloud Engine → Виртуальные IP -адреса.
  2. В строке нужного IP-адреса нажмите на кнопку и выберите пункт Управление L2.
  3. Активируйте переключатель Включить L2 и укажите виртуальный MAC-адрес в поле vMac-адрес *:
  4. Нажмите на кнопку Подтвердить.

Чтобы отвязать виртуальный IP-адрес от MAC-адреса:

  1. В главном меню портала перейдите в раздел РесурсыCloud Engine → Виртуальные IP -адреса.
  2. В строке нужного IP-адреса нажмите на кнопку и выберите пункт Управление L2.
  3. Деактивируйте переключатель Включить L2.
  4. Нажмите на кнопку Подтвердить.

Копирование ID виртуального IP-адреса и заказа

ID необходим для взаимодействия с виртуальным IP-адресом через API.

Чтобы скопировать ID виртуального IP-адреса (ITEM_ID):

  1. В главном меню портала перейдите в раздел РесурсыCloud Engine → Виртуальные IP -адреса.
  2. В строке нужного IP-адреса нажмите на кнопку и выберите пункт Скопировать ID. ID сохраняется в буфер обмена вашего устройства.

Чтобы скопировать ID заказа (ORDER_ID):

  1. В главном меню портала перейдите в раздел РесурсыCloud Engine → Виртуальные IP -адреса.
  2. В строке нужного IP-адреса нажмите на кнопку .
  3. Нажмите на кнопку Действия в правом верхнем углу:
  4. Выберите пункт Скопировать ID Заказа. ID заказа сохраняется в буфер обмена вашего устройства.

Удаление виртуального IP-адреса

Чтобы удалить виртуальный IP-адрес:

  1. В главном меню портала перейдите в раздел РесурсыCloud Engine → Виртуальные IP -адреса.
  2. В строке нужного IP-адреса нажмите на кнопку и выберите пункт Удалить.
  3. Введите Идентификатор для подтверждения удаления.
  4. Нажмите на кнопку Удалить.