Назад | Перейти на главную страницу

Keepalived в кольцевой архитектуре или другой лучший подход

У меня три балансировщика нагрузки (LB1, LB2, LB3) и планируйте использовать кольцевую архитектуру для настройки активный-активный, например

LB1    LB2    LB3
IP1    IP2    IP3

Идея, как показано ниже:

  1. Если LB1 не удалось, IP1 будет перемещен в IP2
  2. Если LB2 не удалось, IP2 будет перемещен в IP3
  3. Если LB3 не удалось, IP3 будет перемещен в IP1

Распространена ли описанная выше установка? Есть потенциальная проблема?

Или какая-нибудь лучшая рекомендация для настройки трех узлов?

Сценарий «активный-активный» возможен с использованием keepalived. Вам нужно настроить несколько vrrp_instanceтакие как:

vrrp_sync_group G1 {   # must be before vrrp_instance declaration 
  group {
    vserver1
  }
  group {
    vserver2
  }
}

# The primary server 
vrrp_instance vserver1 {
    interface eth0
    state MASTER
    virtual_router_id 1
    priority 100
    advert_int 3
    authentication {
      auth_type PASS
      auth_pass mypass
    }
    virtual_ipaddress {
        VIP1/24   # default CIDR mask is /32 
    }
}

# The backup server
vrrp_instance vserver2 {
    interface eth0
    state backup
    virtual_router_id 2
    priority 50
    advert_int 3
    authentication {
      auth_type PASS
      auth_pass mypapas
    }
    virtual_ipaddress {
        VIP2/24   # default CIDR mask is /32 
    }
}

Важный момент - иметь аналогичную конфигурацию на 2-м узле, но с разными state и priority. В показанном примере вам нужно изменить эти строки, чтобы другой узел MASTER для VIP2 и BACKUP для VIP1. По умолчанию каждая машина будет иметь свой виртуальный IP-адрес, а при сбое оба виртуальных IP-адреса назначены оставшейся машине.

Конечно, это можно сделать аналогично для 3 машин. Вам нужно определить три vrrp_instances вместо двух.