DNS-разрешение для 2 IP-адресов с одинаковой ссылкой

DNS-разрешение для 2 IP-адресов с одинаковой ссылкой

У нас есть следующие ситуации: На сервере мы должны установить 2 IP, которые будут ссылаться на один и тот же FQDN. В приложении, которое запущено на сервере, мы настраиваем FQDN. Как только возникает проблема с доступом к одному IP (на основе FQDN), сервер будет использовать второй IP, назначенный на тот же FQDN:

пример: /etc/hostsбудет содержать

1.1.1.1 server1.google.com
1.1.2.1 server1.google.com

как только возникнут проблемы с доступом к 1.1.1.1, сервер будет использовать server1.google.com как 1.1.2.1

Можно ли использовать такую ​​штуку? Есть ли какой-то другой вариант?

решение1

/etc/hosts не будет циклическим. Он просто возвращает первое найденное совпадение.

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

Более того, циклический DNS не является хорошим инструментом для балансировки нагрузки, что вам и нужно. Как бы удобно это ни казалось, разрешение имен не является слоем для того, что вы пытаетесь сделать.

решение2

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

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

Для решений по балансировке нагрузки вы можете взглянуть наПроект Linux LVS.

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

Связанный контент