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

syslog udp load balance and failover with keepalived

У меня есть простой кластер серого журнала с двумя хостами, для которого мне нужно сбалансировать нагрузку трафика syslog udp, я использую keepalived, плавающий IP-адрес и балансировка нагрузки отлично работает, но он по-прежнему направляет трафик на все узлы, даже на те, на которых не удалось выполнить проверку работоспособности, я хочу, чтобы он направлял трафик только на здоровые узлы, вот мой keepalived.conf:

global_defs {
  enable_script_security
  script_user root root
  router_id LVS_MASTER
}
vrrp_instance VI_1 {
  state MASTER
  interface enp0s3
  virtual_router_id 216
  priority 200
  advert_int 1
  preempt_delay 30
  authentication {
    auth_type PASS
    auth_pass redacted
  }
  virtual_ipaddress {
    192.168.0.X
  }
}    
virtual_server 192.168.0.X 514 {
  delay_loop 1
  protocol UDP
  lb_algo wrr # makes no difference
  lb_kind NAT # no difference too
  real_server 192.168.0.A 514 {
    weight 1
    HTTP_GET {
      url {
        path "/api/system/lbstatus"
        status_code 200
      }
      connect_timeout 3
      connect_port 9000
    }
  }    
  real_server 192.168.0.B 514 {
    weight 1
    HTTP_GET {
      url {
        path "/api/system/lbstatus"
        status_code 200
      }
      connect_timeout 3
      connect_port 9000
    }
  }
}

то же самое на втором хосте, кроме state BACKUP и более низкий приоритет, оба экземпляра keepalived взаимодействуют, я вижу, что проверки работоспособности завершаются неудачно и успешно, в журналах добавляются и удаляются службы из VS и т. д., но оба хоста получают данные, даже если проверка работоспособности на одном из них не удалась (проверено с помощью tcpdump)

Что я делаю не так?