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

Keepalived перенаправляет UDP-трафик на один узел через NAT

У меня возникают проблемы с балансировкой нагрузки UDP Syslog на узлы кластера Graylog. Сначала казалось, что все работает нормально, но кажется, что трафик идет на 99% к одному из двух узлов.

У меня есть два сервера Ubuntu (18.04), на которых работает Keepalived 1.3.9. Они совместно используют виртуальный IP-адрес, который передается через VRRP. Они используют NAT для пересылки трафика на реальные серверы на основе циклического перебора.

global_defs {
 notification_email {
     redacted@mail
   }
   notification_email_from severname-redacted
   smtp_server mailsever.redacted
   smtp_connect_timeout 30
   router_id servername
}

vrrp_instance VI_1 {
  state MASTER
  interface ens160
  virtual_router_id 216
  priority 200
  advert_int 1
  preempt_delay 30
  virtual_ipaddress {
    10.18.242.216
  }
  notify /usr/local/bin/vrrp_state.sh
}

virtual_server 10.18.242.216 10514 {
  delay_loop 2
  protocol UDP
  lb_algo rr   # round robin
  lb_kind NAT   # NAT

  real_server 10.18.242.214 10514 {
    weight 1
    HTTP_GET {
      url {
        path "/api/system/lbstatus"
        status_code 200
      }
      connect_timeout 3
      connect_port 9000
    }
  }

  real_server 10.18.242.213 10514 {
    weight 1
    HTTP_GET {
      url {
        path "/api/system/lbstatus"
        status_code 200
      }
      connect_timeout 3
      connect_port 9000
    }
  }
}

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

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

oot@redacted-lb1:~# ipvsadm -L -n --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS
  -> RemoteAddress:Port
UDP  10.18.242.216:10514                 0       57        0    16581        0
  -> 10.18.242.213:10514                 0       67        0    19666        0
  -> 10.18.242.214:10514                 0        0        0        0        0

Как видите, трафик на вторичный узел Graylog отсутствует, хотя веса равны и мы используем циклический перебор. Некоторые способы устранения неполадок, которые не помогли:

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