Виртуальные 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. Выберите проект, в котором нужно создать виртуальный IP-адрес.
  3. В главном меню портала перейдите в раздел Ресурсы Cloud Engine Виртуальные IP-адреса.
  4. Нажмите на кнопку Создать и заполните поля: 
    • Имя * — название виртуального IP-адреса;
    • Регион * — регион, в котором нужно создать виртуальный IP-адрес;
    • Сети других проектов активируйте переключатель, если нужно создать виртуальный 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-адрес назначается автоматически;
    • Ограничение скорости, Мбит/сек — лимит пропускной способности канала. Указывается, если активирован переключатель Разрешить доступ из интернет.
  5. Нажмите на кнопку Подтвердить. Созданный виртуальный IP-адрес отображается на портале:
  6. Подключите созданный виртуальный IP-адрес к сетевому интерфейсу.
  7. Если в поле Режим выбрано значение 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-адресом

Изменение ограничения скорости

Чтобы изменить ограничение пропускной способности канала:

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

    Примечание

    Если пункта Изменить ограничение скорости нет, разрешите доступ к виртуальному IP-адресу из сети Интернет.

  4. В поле Ограничение скорости, Мбит/сек выберите новое ограничение пропускной способности канала:
  5. Нажмите на кнопку Подтвердить.

Ограничение скорости отображается в списке параметров виртуального IP-адреса:

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

Один виртуальный IP-адрес можно подключить к нескольким сетевым интерфейсам.

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

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


  5. Нажмите на кнопку Подтвердить.
  6. Для направления трафика укажите виртуальный IP-адрес в ОС сервера.

    1. Подключитесь к серверу.
    2. Выполните команду:

      sudo ip addr add <виртуальный IP-адрес>/32 dev <сетевой интерфейс>

      где:

      • <виртуальный IP-адрес> — виртуальный IP-адрес, подключенный к серверу. Например, 10.128.0.57;
      • <сетевой интерфейс>имя сетевого интерфейса в ОС сервера. Например, ens33.
        Чтобы посмотреть имя сетевого интерфейса в ОС сервера, выполните команду:

        ip a s

        Примеры имён сетевых интерфейсов в ОС сервера — eth0, ens33, wlan0.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поделиться