keepalived - 虚拟服务器未将我的请求路由到真实服务器

keepalived - 虚拟服务器未将我的请求路由到真实服务器

我正在使用 keepalived 并在我的主节点上运行该设置:

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass XXXXXXXXXXXXXXXXXXXXXXXXX
    }
    virtual_ipaddress {
        192.168.178.200/32 dev eth0
        192.168.178.201/32 dev eth0
    }
}

virtual_server 192.168.178.201 8443 {
    delay_loop 10
    protocol TCP
    lb_algo rr
    lb_kind DR

    real_server 192.168.178.210 8443 {
        weight 1
        TCP_CHECK {
          connect_timeout 5
        }
    }

    real_server 192.168.178.211 8443 {
        weight 1
        TCP_CHECK {
          connect_timeout 5
        }
    }

    real_server 192.168.178.212 8443 {
        weight 1
        TCP_CHECK {
          connect_timeout 5
        }
    }
}

priority在从属节点上,我具有与较低和相同的设置state BACKUP

出于测试原因,3 个节点中有 2 个处于离线状态,并且我期望 VIP(.201)将流量平衡到192.168.178.211:8443。(.212并且213处于离线状态,.211处于在线状态)我面临的行为192.168.178.201:8443只有当 MASTER 节点与可用的后端计算机是同一台计算机时才可用。

在我看来,这意味着,只有当是主节点192.168.178.211:8443时才可以访问。如果是主节点,则流量不会路由到。192.168.178.211192.168.178.212192.168.178.211:8443

系统配置信息:

#keepalived
net.ipv4.ip_nonlocal_bind=1
net.ipv4.ip_forward=1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.eth0.rp_filter = 2

谁能帮助我?

答案1

我从您的问题和评论中了解到负载平衡器和真实服务器是同一台机器。

根据Redhat 文档

不支持从负载平衡器或某个真实服务器访问虚拟 IP。同样,不支持在与真实服务器相同的计算机上配置负载平衡器。

然而,根据LVS 知识库,但需要更多的配置工作。

根据您的示例,让我们keepalived-2.0.19在 CentOS 7 上设置一个没有跟踪脚本的 3 个节点和一个虚拟 IP 地址:

  • 虚拟 IP 地址:192.168.178.201
  • 节点 1:192.168.178.210优先级为 150
  • 节点 2:192.168.178.211优先级 100
  • 节点 3:192.168.178.212优先级 50

那么 keepalived 的一个可能配置是:

在节点 1 上

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    virtual_ipaddress {
        192.168.178.201/32
    }
}

virtual_server 192.168.178.201 {
    lvs_sched rr
    lvs_method DR
    protocol TCP
    persistence_timeout 50
    delay_loop 10
    real_server 192.168.178.210 {
        TCP_CHECK {
          connect_timeout 5
          connect_port 8443
        }
    }
    real_server 192.168.178.211 {
        TCP_CHECK {
          connect_timeout 5
          connect_port 8443
        }
    }
    real_server 192.168.178.212 {
        TCP_CHECK {
          connect_timeout 5
          connect_port 8443
        }
    }
}

在节点 2 上

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    virtual_ipaddress {
        192.168.178.201/32
    }
}

virtual_server 192.168.178.201 {
    lvs_sched rr
    lvs_method DR
    protocol TCP
    persistence_timeout 50
    delay_loop 10
    real_server 192.168.178.211 {
        TCP_CHECK {
          connect_timeout 5
          connect_port 8443
        }
    }
    real_server 192.168.178.212 {
        TCP_CHECK {
          connect_timeout 5
          connect_port 8443
        }
    }
}

在节点 3 上

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 50
    advert_int 1
    virtual_ipaddress {
        192.168.178.201/32
    }
}

virtual_server 192.168.178.201 {
    lvs_sched rr
    lvs_method DR
    protocol TCP
    persistence_timeout 50
    delay_loop 10
    real_server 192.168.178.212 {
        TCP_CHECK {
          connect_timeout 5
          connect_port 8443
        }
    }
}

注意:每个节点都根据其优先级(越来越少real_server)配置 LVS。如果你对称配置 LVS,那么数据包将在节点之间无限地来回发送,从未回答

您需要在所有节点上将虚拟 IP 地址添加为环回地址。否则,BACKUP 节点会收到来自负载均衡器的 TCP 消息,但不知道如何处理它。

在所有节点上/etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0
IPADDR=192.168.178.201
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback

在所有节点上/etc/sysconfig/network,添加行

GATEWAYDEV=eth0

在所有节点上、配置内核参数

net.ipv4.conf.ens192.arp_ignore = 1
net.ipv4.conf.ens192.arp_announce = 2
net.ipv4.ip_forward = 1

参考

http://kb.linuxvirtualserver.org/wiki/Building_Two-Node_Directors/Real_Servers_using_LVS_and_Keepalived

相关内容