Как сделать плавающий IP-адрес на ПК

Обновлено: 01.07.2024

Настройте один или несколько плавающих IP-адресов, которые можно использовать в качестве дополнительных IP-адресов для доступа к модулю Kubernetes.

Значение

Как и в службах Kubernetes, плавающий IP-адрес предоставляет стабильный IP-адрес для доступа к некоторым сетевым службам, которые могут поддерживаться разными модулями в разное время. Основное преимущество перед сервисами Kubernetes заключается в том, что плавающие IP-адреса работают со всеми протоколами, а не только с TCP, UDP и SCTP. В отличие от сервисов Kubernetes, плавающий IP-адрес одновременно используется только для одного модуля и не может использоваться для балансировки нагрузки.

Возможности

В этом практическом руководстве используются следующие функции Calico:

Файл конфигурации Calico CNI с включенным float_ips

Концепции

Плавающий IP-адрес — это дополнительный IP-адрес, назначенный конечной точке рабочей нагрузки. Эти IP-адреса «плавающие» в том смысле, что их можно перемещать по кластеру и подключать к различным конечным точкам рабочей нагрузки в разное время. Сама рабочая нагрузка обычно не знает о плавающем IP-адресе; узел использует преобразование сетевых адресов (NAT) для входящего трафика, чтобы изменить плавающий IP-адрес на реальный IP-адрес рабочей нагрузки перед доставкой пакетов рабочей нагрузке.

Служба Kubernetes назначает IP-адрес кластера, который позволяет другим конечным точкам в сети (а также может назначать IP-адрес nodePort и/или внешний балансировщик нагрузки) для доступа к набору модулей с использованием преобразования сетевых адресов. Во многих случаях служба Kubernetes может обрабатывать те же варианты использования, что и плавающий IP-адрес, и обычно рекомендуется для пользователей Kubernetes, поскольку это нативная концепция Kubernetes. Одна вещь, которую вы не можете сделать с Kubernetes Services, — это использовать протоколы, отличные от UDP, TCP и SCTP (такие протоколы используются довольно редко).

Прежде чем начать…

Для проверки подключитесь по ssh к одному из узлов Kubernetes и найдите конфигурацию подключаемого модуля CNI, обычно расположенную по адресу /etc/cni/net.d/ . Если вы видите файл 10-calico.conflist , вы используете подключаемый модуль Calico CNI.

Как

Включить плавающие IP-адреса

По умолчанию плавающие IP-адреса отключены. Чтобы включить плавающие IP-адреса, выполните следующие действия.

Измените ConfigMap calico-config в пространстве имен kube-system. В разделе cni_network_config добавьте следующий раздел в раздел конфигурации подключаемого модуля «calico».

Например, ваш cni_network_config после обновления будет выглядеть следующим образом.

Настройте модуль для использования плавающего IP-адреса

Обратите внимание на использование escape-символа \" для внутренних двойных кавычек вокруг адресов.

Плавающие IP-адреса — это своего рода виртуальные IP-адреса, которые можно динамически перенаправлять на любой сервер в той же сети.

Несколько серверов могут иметь один и тот же плавающий IP-адрес, но он может быть активен только на одном сервере в любой момент времени.

Плавающие IP-адреса можно использовать для:

  • Реализовать отказоустойчивость в кластере высокой доступности
  • Внедрение непрерывного развертывания с нулевым временем простоя
  • Сохраняйте один и тот же IP-адрес на сервере, даже если он перемещается в центр обработки данных.
  • Используйте свои собственные IP-адреса с объявлением IP на любом сервере
  • Создайте резервный брандмауэр с синхронизацией подключений с отслеживанием состояния через нашу частную сеть.

Как это работает?

Плавающий IP-адрес имеет динамическую связь один к одному с "якорным" IP-адресом. Якорный IP-адрес — это основной IP-адрес сервера, на который перенаправляется плавающий IP-адрес.

Звучит сложно, но на самом деле это означает, что плавающий IP-адрес просто связан с другим IP-адресом, который вы можете выбрать и изменить по своему усмотрению.

Посредством клиентского портала и Leaseweb API соотношение плавающий IP-адрес ↔ якорный IP-адрес может обновляться в режиме реального времени, поэтому вы можете направлять входящий трафик с плавающего IP-адреса на сервер по вашему выбору.

Рассмотрите следующий сценарий. Пользователь, вводящий Плавающий IP-адрес 1.1.1.1 в своем браузере, получает его Якорный IP-адрес 2.2.2.2, который принадлежит серверу А. Пользователю будет предоставлен веб-сайт, работающий на сервере А.

Когда якорный IP-адрес изменяется на 2.2.2.3 , который принадлежит серверу Б, тот же конечный пользователь, обращающийся к тому же веб-сайту, будет обслуживаться веб-сайтом, работающим на сервере Б.

Это изменение происходит мгновенно, без какого-либо заметного простоя с точки зрения конечного пользователя.

Использование плавающих IP-адресов

Использовать плавающие IP-адреса очень просто, вы можете заказать их через клиентский портал и настроить на своем сервере в качестве дополнительного IP-адреса.

Демонстрация

  • Сервер А имеет IP-адрес 212.32.230.75 и установлен с CentOS 7.
  • Сервер B имеет IP-адрес 212.32.230.66 и установлен с Ubuntu 18.04
  • 89.149.192.0 – плавающий IP-адрес.

Настройка плавающего IP-адреса на клиентском портале

Щелкнув значок «Изменить» рядом с плавающим IP-адресом, можно установить связь между плавающим IP-адресом и привязным IP-адресом. Это называется определением плавающего IP.

< бр />

Настройка плавающего IP-адреса на серверах

На сервере плавающие IP-адреса можно настроить как любой другой дополнительный IP-адрес. Адрес шлюза не требуется, а маска подсети всегда равна 255.255.255.255 или /32 в нотации CIDR.

Чтобы добавить дополнительный IP-адрес к интерфейсу в Linux, не делая изменения постоянными, мы можем просто использовать команду
ip -4 address show,
чтобы показать, на каком устройстве настроен основной IP-адрес. , а затем выполните команду
ip address add /32 dev,
чтобы добавить плавающий IP-адрес к тому же устройству.

Теперь вы уже должны иметь возможность пинговать плавающий IP-адрес, и открытие его в браузере загружает демонстрационную веб-страницу:

< бр />

Переключение плавающего IP-адреса

Изначально мы настроили плавающий IP-адрес 89.149.192.0 с привязкой IP-адресом 212.32.230.75 , который принадлежит серверу А.

Предположим, мы создали новый веб-сайт на сервере B, и после нескольких месяцев тестирования он наконец готов.

Чтобы направлять пользователей, посещающих 89.149.192.0, на сервер B, нам нужно обновить Anchor IP плавающего IP-адреса 89.149.192.0, изменив (FLIP'ing) его с 212.32.230.75 (сервер A) на 212.32.230.66 (сервер B). ).

< бр />

Для этого нажмите на клиентском портале и измените IP-адрес привязки:

Теперь, когда вы обновляете браузер, отображается страница с сервера B:

< бр />

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

Сохранение изменений на серверах

Поскольку плавающий IP-адрес добавляется точно так же, как и любой другой IP-адрес, просто следуйте инструкциям в разделе Добавление IPv6-адреса на ваш сервер

Использование API для управления плавающими IP-адресами

Конечно, использование клиентского портала — это удобный способ настройки и воспроизведения плавающих IP-адресов, но настоящая сила — в автоматизации.

Плавающие IP-адреса и диапазоны плавающих IP-адресов имеют длину префикса и всегда записываются в нотации CIDR. В контексте вызовов API косая черта «/» заменяется символом подчеркивания «_» для совместимости в URL-адресах. Для одного плавающего IP-адреса (/32) длина префикса может быть опущена.

Список плавающих диапазонов IP-адресов

Список определений плавающих IP-адресов в диапазоне плавающих IP-адресов

Добавить новое определение плавающего IP-адреса

Чтобы добавить новое определение плавающего IP-адреса, выполните POST-вызов /ranges/ /floatingIpDefinitions . В теле запроса необходимо указать как плавающий, так и привязной IP-адрес. Допустим, мы создаем новый плавающий IP-адрес 89.149.192.0 с привязкой IP-адресом 212.32.230.66 (сервер B):
curl --silent --request POST --url https://api.leaseweb.com/floatingIps/v2 /ranges/89.149.192.0_29/floatingIpDefinitions --header 'X-Lsw-Auth: 213423-2134234-234234-23424 ' --header 'content-type: application/json' --data ' <
"floatingIp ": "89.149.192.3",
"anchorIp": "212.32.230.66"
>' |jq

Обратите внимание, что в ответе статус CREATING . Процесс создания очень быстрый, но не мгновенный. При выполнении запроса GET к /floatingIps/v2/ranges / /floatingIpDefinitions вы можете увидеть, что создание было обработано через несколько секунд:

Обновление существующего определения плавающего IP-адреса

Обновление определения плавающего IP-адреса выполняется с помощью вызова PUT /floatingIps/v2/ranges / /floatingIpDefinitions / . floatIpDefinitionId — это просто плавающий IP-адрес. IP-адрес привязки предоставляется в теле запроса. Допустим, мы обновляем 89.149.192.0 с помощью Anchor IP 212.32.230.75 , поэтому мы снова направляем трафик обратно на сервер A:
curl --silent --request PUT --url https://api.leaseweb .com/floatingIps/v2/ranges/89.149.192.0_29/floatingIpDefinitions/89.149.192.0_32 --header 'X-Lsw-Auth: 213423-2134234-234234-23424 ' --header 'тип содержимого: приложение/json' --data ' <
"anchorIp": "212.32.230.75"
>' |jq

Обратите внимание, что в ответе по-прежнему указан старый адрес привязки, а статус изменен на ОБНОВЛЕНИЕ. Процесс обновления очень быстрый, но не мгновенный. При повторном запросе GET к /floatingIps/v2/ranges / /floatingIpDefinitions вы увидите, что обновление было обработано через несколько секунд:

Удалить определение плавающего IP

Как и в случае с вызовами POST и PUT, обработка займет пару секунд.

Собираем все вместе — создаем высокодоступную настройку веб-сервера с помощью Keepalived

Keepalived – это универсальное программное обеспечение, которое можно использовать для реализации автоматического аварийного переключения с помощью API с плавающими IP-адресами. В этом примере мы покажем, как создать простую активную/резервную установку, в которой плавающий IP-адрес автоматически перенаправляется на сервер Б в случае сбоя сервера А.

Он может делать гораздо больше, и имейте в виду, что это всего лишь пример проверки концепции, предназначенный для демонстрации функциональности плавающих IP-адресов самым простым способом.

Плавающие IP-адреса DigitalOcean — это общедоступные статические IP-адреса, которые вы можете назначать дроплетам и мгновенно переназначать их между другими дроплетами в том же центре обработки данных. Внедрите механизм аварийного переключения с плавающими IP-адресами для создания инфраструктуры высокой доступности.

Планы и цены

Плавающие IP-адреса бесплатны, если назначены дроплету.

Плавающие IP-адреса стоят 4 доллара США в месяц (0,00595 долларов США в час), если они зарезервированы, но не назначены дроплету из-за нехватки доступных адресов IPv4. Вам не будет выставляться счет, если вы не накопите 1 доллар США или более за плавающий IP-адрес.

Региональная доступность

Плавающие IP-адреса доступны во всех центрах обработки данных. Это ресурсы, зависящие от региона, и их можно назначать только каплям в одном центре обработки данных.

Возможности

Плавающие IP-адреса позволяют перенаправлять сетевой трафик между любыми вашими каплями в одном центре обработки данных. Назначение плавающего IP-адреса дроплету не заменяет и не изменяет его исходный общедоступный IP-адрес.

Вы можете использовать плавающие IP-адреса для создания серверной инфраструктуры без единой точки отказа, но плавающий IP-адрес сам по себе не обеспечивает высокую доступность автоматически. Чтобы установка была высокодоступной, необходимо внедрить механизм аварийного переключения для автоматизации процесса обнаружения сбоев активного сервера и переназначения плавающего IP-адреса пассивному серверу.

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

Ограничения

По умолчанию вы можете зарезервировать три плавающих IP-адреса для каждой учетной записи. Если вы достигнете этого предела, вы можете запросить больше через панель управления.

Плавающие IP-адреса не могут быть назначены более чем одному дроплету одновременно.

Плавающие IP-адреса не поддерживают записи PTR (rDNS).

Мы не поддерживаем плавающие IP-адреса IPv6. Все плавающие IP-адреса — это IPv4.

Мы не поддерживаем плавающие IP-адреса для рабочих узлов DigitalOcean Kubernetes.

Дроплет должен иметь якорный IP-адрес, прежде чем вы сможете назначить ему плавающий IP-адрес. Капли, созданные после 20 октября 2015 года, автоматически получают IP-адрес привязки, и вы можете создать IP-адрес привязки для более старых капель.

Плавающие IP-адреса не поддерживают SMTP-трафик.

Последние обновления

31 августа 2021 г.

Теперь вы можете назначать плавающие IP-адреса каплям, использующим пользовательские изображения.

5 мая 2021 г.

Мы обновили ответы API с плавающим IP-адресом, чтобы они лучше соответствовали нашим новым моделям API. Поля droplet и region теперь используют те же модели ответов, что и в конечных точках /v2/droplets и /v2/regions. В частности:

  • Функция private_networking теперь отображается в поле функций под дроплетом, а не в поле функций под регионом.
  • Поле vpc_uuid теперь заполняется правильными значениями.
  • Тип дроплета отображает базу, если дроплет использует базовый образ (например, Ubuntu, CentOS).
  • Поле сетей дроплета теперь включает частные и плавающие IP-адреса, если применимо.

Пример ответа:

Мы сократили ответ для удобства чтения.

15 мая 2020 г.

Счета за неназначенные плавающие IP-адреса теперь будут отображаться в счетах. Первый платеж появится в счетах за июль 2020 года за все плавающие IP-адреса, которые не были назначены Droplets в течение июня.

Выполните следующие действия, чтобы создать частную сеть в панели управления:

  1. Перейдите в раздел "Сеть" в проекте.
  2. Перейдите на вкладку Частные сети и выберите нужный регион из списка.
  3. Нажмите "Создать сеть".
  4. Введите имя сети в новом окне. Введите CIDR подсети — диапазон IP-адресов, доступных в этой подсети. Вы можете добавить несколько IP-адресов, нажав Добавить подсеть.
  5. Нажмите "Создать".

Ограничений по объему трафика внутри частной сети нет. Это позволяет передавать любой объем данных между вашими сервисами без дополнительных комиссий. Количество используемых частных сетей не ограничено. Пропускная способность составляет 1 Гбит/с.

*Обратите внимание, что вы можете создать частную сеть при создании статьи об облачном сервере.

Объединение серверов в частную сеть в панели управления

Все облачные серверы можно объединить в частную сеть.

В рамках одного проекта

Выполните следующие действия, чтобы подключить облачный сервер к нужной частной сети в панели управления:

  1. Перейдите в раздел "Серверы" в проекте.
  2. Откройте страницу сервера.
  3. Перейдите на вкладку "Порты".
  4. Нажмите "Добавить порт" и выберите нужную подсеть.

Между проектами

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

Выполните следующие действия, чтобы сделать частную сеть одного проекта доступной для другого проекта (межпроектная сеть) в панели управления:

  1. Нажмите на название текущего проекта, чтобы открыть список всех проектов.
  2. Скопируйте UUID целевого проекта.
  3. Перейдите на вкладку "Сеть" в текущем проекте.
  4. Разверните карточку частной сети, которой вы хотите поделиться в другом проекте, и перейдите на вкладку "Проекты".
  5. Нажмите "Добавить проект".
  6. Введите UUID скопированного проекта, чтобы добавить нужный проект.

Подключение частной сети к маршрутизатору в панели управления

Вы можете подключить частную сеть к виртуальному маршрутизатору, чтобы организовать NAT-доступ в Интернет и назначить внешние IP-адреса выбранным облачным серверам.

Выполните следующие действия, чтобы подключить частную сеть к маршрутизатору в панели управления:

  1. Перейдите в раздел "Сеть" в проекте.
  2. Перейдите на вкладку Маршрутизаторы и выберите нужный регион из списка.
  3. Нажмите "Создать маршрутизатор".
  4. Введите имя маршрутизатора в новом окне.
  5. Нажмите "Создать".
  6. Откройте карту маршрутизатора и перейдите на вкладку "Порты".
  7. Нажмите "Добавить порт" и выберите частную подсеть.

Обратите внимание, что созданный маршрутизатор можно подключить к внешнему сетевому шлюзу на вкладке «Подключение» в карточке маршрутизатора.

Подключение сервера к Интернету в панели управления

Доступ в Интернет предоставляется через общедоступные подсети или плавающий IP-адрес, который является полным внешним IP-адресом и доступен до тех пор, пока он не будет удален.

Пропускная способность как в Интернете, так и локально составляет 1 Гбит/с.

Через общедоступные подсети

Выполните следующие действия, чтобы подключить сервер к общедоступной подсети в панели управления:

  1. Перейдите в раздел "Сеть" в проекте.
  2. Перейдите на вкладку Частные сети и выберите нужный регион из списка.
  3. Нажмите "Добавить подсеть".
  4. Выберите размер подсети и просмотрите стоимость услуги в новом окне. Нажмите Добавить подсеть.
  5. Чтобы подключить облачный сервер к Интернету, откройте страницу сервера и перейдите на вкладку "Порты".
  6. Нажмите "Добавить порт" и выберите общедоступную подсеть.

Через плавающий IP

Выполните следующие действия, чтобы начать использовать плавающий IP-адрес в панели управления:

  1. Перейдите в раздел "Сеть" в проекте.
  2. Перейдите на вкладку Плавающие IP-адреса и выберите нужный регион из списка.
  3. Нажмите "Добавить IP-адрес".
  4. Укажите количество адресов и ознакомьтесь со стоимостью услуги в новом окне. Нажмите Добавить IP-адрес.
  5. После оплаты маршрутизатор router-nat появится на вкладке "Маршрутизаторы". Сеть nat появится на вкладке "Частные сети".
  6. Чтобы подключить облачный сервер с плавающим IP-адресом к Интернету, откройте страницу сервера и перейдите на вкладку Порты.
  7. Нажмите "Добавить порт" и выберите частную сеть.
  8. Подключите плавающий IP-адрес к порту, нажав «Связать».

Подсети VRRP

Одна подсеть VRRP может соединить 2 региона. В одном проекте может быть несколько подсетей VRRP, если в этом проекте доступно более 2 регионов.

Выполните следующие действия, чтобы начать использовать подсеть VRRP в панели управления:

  1. Перейдите в раздел "Квоты" в проекте.
  2. Нажмите "Изменить".
  3. Измените квоты в поле Межрегиональные ресурсы.
  4. Перейдите в раздел "Сеть" в проекте.
  5. Перейдите на вкладку "Подсети VRRP".
  6. Нажмите «Создать подсеть VRRP».
  7. Выберите регионы для добавления подсети VRRP и ознакомьтесь со стоимостью услуги. Нажмите Добавить подсеть VRRP.

В каждом регионе в качестве шлюза используется первый эффективный адрес подсети. Второй адрес зарезервирован для официальных нужд. Остальные четыре адреса можно назначить виртуальным машинам. Дополнительную информацию можно найти в нашем блоге в статьях «Резервирование маршрутизатора с помощью VRRP» и «Гостевой пост: наш опыт работы с VRRP от Selectel».

Управление сетями через интерфейс командной строки

Создание подсетей

Чтобы создать новую сеть, запустите:

Ответ будет содержать таблицу с информацией о сети:

Чтобы создать подсеть в этой сети, выполните:

Управление портами

Чтобы просмотреть все порты сервера, выполните:

Чтобы просмотреть все сетевые порты, выполните:

Чтобы создать порт в сети, выполните:

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

Чтобы удалить порт, запустите:

Назначение плавающего IP-адреса

Плавающий IP-адрес используется для доступа облачного сервера к Интернету.

Чтобы просмотреть список всех выделенных плавающих IP-адресов, выполните следующее:

Чтобы выделить плавающий IP-адрес, выполните:

Чтобы назначить плавающий IP серверу, созданному ранее в Панели управления:

В параметре можно использовать как имя сервера, так и его ID.

Переадресация портов

Переадресация портов используется для перенаправления трафика с одного порта на другой. Например, можно настроить переадресацию портов с плавающего IP-адреса на любой порт частной подсети — в этом случае доступ к частному порту будет организован без заказа дополнительного IP.

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

Обратите внимание, что эта функция доступна только для версий OpenStack Train или выше.

Читайте также: