首页 > 解决方案 > keepalived:不可预知的转发方式

问题描述

我正在试验keepalivedmultipass我的配置偶尔也能正常工作。

当我重新启动我的 keepalived 服务时,Forward输出中的列会发生ipvsadm -Ln变化。

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.64.64:80 rr
  -> 192.168.64.3:80              Tunnel  100    0          0
  -> 192.168.64.6:80              Tunnel  100    0          0
TCP  192.168.64.65:80 rr
  -> 192.168.64.3:80              Tunnel  100    0          1
  -> 192.168.64.6:80              Tunnel  100    0          1
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.64.64:80 rr
  -> 192.168.64.3:80              (null)  100    0          0
  -> 192.168.64.6:80              (null)  100    0          0
TCP  192.168.64.65:80 rr
  -> 192.168.64.3:80              (null)  100    0          1
  -> 192.168.64.6:80              (null)  100    0          1

当它是(null)andLocal时,curl虚拟 ip 导致连接被拒绝。

如果是Masq,则curl虚拟 ip 不会导致输出。

当它是RouteandTunnel时,curl有效。

我无法预测它会出现哪种模式,每次重启都有不同的结果。而且(拥有路线或隧道的)成功率非常低。

这是我的配置:

virtual_server 192.168.64.64 80 {
    delay_loop 5
    lb_algo rr
    lb_kind tun
    protocol tcp

    real_server 192.168.64.3 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.64.6 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

标签: keepalived

解决方案


推荐阅读