Облако
IP. Виртуальный IP (VIP): что это, как получить и привязать к машине
Виртуальный IP (VIP) — это IP-адрес, который можно назначить сразу нескольким машинам или сделать вторым адресом для сетевого интерфейса.
Зачем нужен
С помощью VIP можно создать отказоустойчивую инфраструктуру. Назначьте его нескольким машинам сразу, и адрес будет переходить от машины к машине: если главная недоступна, адрес мгновенно передаётся другой, и уже та отвечает на запросы. Если и вторая машина недоступна, адрес передаётся третьей и так далее (очерёдность задаёте вы). В результате ваши пользователи всегда смогут получить ответ при обращении к IP, ведь машины страхуют друг друга.
Также вы можете назначить VIP в качестве второго адреса для сетевого интерфейса.
Как работает
Отказоустойчивая система. Большинство наших машин работает на ОС на базе ядра Linux (Ubuntu, CentOS, Fedora, Debian, CoreOS, Fedora-CoreOS, SUSE). Для них отказоустойчивую систему можно создать с помощью keepalived – системного демона для линуксоидов, который балансирует нагрузку между серверами. В случае отказа основной машины демон переключает VIP на резервную. Для переключения IP-адреса он использует протокол VRRP (Virtual Router Redundancy Protocol).
VIP в качестве второго адреса для сетевого интерфейса. Вы резервируете VIP и назначаете его виртуальной машине сначала в настройках нашей системы, потом — в настройках самой машины. В результате VIP становится адресом этой машины наравне с её обычным IP: машина может принимать и передавать данные от имени обоих адресов.
Как тарифицируется
VIP — это формат использования зарезервированного IP. Его тарификация не отличается от тарификации зарезервированных адресов: месячная цена за IP указана в окне заказа, вы платите только за время от создания адреса до его удаления. Например, если зарезервировали IP и удалили его через час, спишется плата только за час использования. На цену не влияет то, привязан адрес к машине или нет.
Как получить VIP и назначить его нескольким машинам для создания отказоустойчивой системы
1. В разделе Сети → Зарезервированные IP зарезервируйте адрес в публичной либо приватной сети (выберите ту, где хотите создать отказоустойчивую систему).
2. Сделайте зарезервированный IP виртуальным и подключите к виртуальным машинам внутри нашей системы. Для этого нажмите на знак ··· напротив IP и выберите VIP settings. В открывшемся окне активируйте опцию Использовать как VIP и добавьте этот адрес к нужным виртуальным машинам с помощью кнопки Добавить.
3. Установите keepalived на свои виртуальные машины. Актуальную инструкцию по его установке для нужной операционной системы можно найти в интернете. По этой же инструкции отредактируйте конфигурационный файл keepalived на машинах: установите для главной машины state MASTER, для резервных — state BACKUP. Также установите значение priority, оно определяет очерёдность, с которой VIP будет передаваться между устройствами. При отказе master-сервера адрес будет передан машине с самым высоким значением priority, при отказе второй машины VIP перейдёт следующее по priority устройство и так далее.
4. Запустите keepalived на ваших машинах и добавьте его в список автозагрузки. Отказоустойчивая система начнёт работать.
Как получить VIP и сделать его вторым адресом для сетевого интерфейса
1. В разделе Сети → Зарезервированные IP зарезервируйте адрес в публичной либо приватной сети (выберите ту, где хотите добавить второй адрес для сетевого интерфейса).
Подключитесь к машине. VIP можно сконфигурировать «на лету» с помощью простой команды (её нужно выполнить от имени администратора):
ip addr add [VIP-адрес]/[маска] dev [имя интерфейса]
Команда мгновенно привяжет VIP к вашей виртуальной машине; привязка будет действовать, пока оборудование включено. После перезагрузки вы сможете ввести команду снова, и VIP опять будет принадлежать машине.
В этой команде:
-
VIP-адрес — это адрес зарезервированного IP, который вы используете в качестве VIP.
-
Маска — это маска подсети, её вы можете посмотреть в настройках виртуальной машины во вкладке Сеть, раскрыв строку с интерфейсом.
-
Имя интерфейса — это имя сетевого интерфейса машины, его можно узнать с помощью команды:
ifconfig
Имя будет указано в начале первой строки.
Например, если зарезервированный вами IP — 45.147.140.22, маска подсети — 24, а имя интерфейса — enp1s0, то команда будет такой: ip addr add 45.147.140.22/24 dev enp1s0. И чтобы выполнить её, к примеру, в системе Ubuntu от имени администратора, в начале нужно добавить «sudo»:
VIP будет сконфигурирован. Чтобы проверить его работоспособность, попробуйте подключиться к машине по SSH по вашему VIP: подключение должно пройти успешно. Если подключиться не вышло, скорее всего, вы неверно ввели команду для добавления IP или забыли привязать его к машине внутри нашей системы. Проделайте ещё раз шаги №2 и №3.
VIP также можно привязать к машине на постоянной основе. Для этого нужно добавить адрес в настройки сети внутри системы. Директория и структура конфигурационного файла может быть разной не только в разных ОС, но даже в пределах релизов одной и той же системы. Мы сознательно не оставляем конкретную инструкцию — она может устареть в любой момент. Чтобы добавить VIP, откройте в интернете официальную документацию операционной системы вашей виртуальной машины и сконфигурируйте адрес по инструкции оттуда.