Centos 7 - Keepalived Linux 虚拟服务器无法正常工作

Centos 7 - Keepalived Linux 虚拟服务器无法正常工作

环境:

Centos 7

Keepalived

机器一

enp0s3 --> 192.168.1.38(连接外界) en0s8 --> 192.168.100.101(连接内网)

机器二

enp0s3 --> 192.168.100.102 默认网关 --> 192.168.100.101

机器二

enp0s3 --> 192.168.100.103 默认网关 --> 192.168.100.101

我已经按照教程这里一步一步来。虽然评论中的每个人都说它对他们来说效果很好,但我不明白保持活跃demon 监听其配置文件。这是一个非常简单的设置。我要做的是:

  1. 机器 I 对外界来说充当虚拟服务器,连接到两个真实的网络服务器(机器 II 和机器 III)。
  2. 机器 I 将首先尝试为机器 II 提供服务,如果机器 II 出现故障,则不会发生任何事情,客户端不会注意到,并且机器 I 应该立即开始为机器 III 提供服务。

第 2 点应该用 Keepalived 来完成,但它就是不起作用。以下是配置文件/etc/keepalived/keepalived.conf

global_defs{ 
   notification_email{ 
        [email protected] 
   } 
   notification_email_from [email protected] 
   smtp_server 193.145.147.51 
   smtp_connect_timeout 30 
   lvs_id LVS_MAIN 
} 

vrrp_instance VI_1 {
     interface enp0s3
     state MASTER
     virtual_router_id 51
     priority 150
     advert_int 1

    virtual_ipaddress {
            192.168.100.105/24 dev enp0s8
    }
}


virtual_server 192.168.100.105 80 { !This would hosted in Machine I enp0s8
       delay_loop 3 
       lb_algo wrr 
       lb_kind NAT
       nat_mask 255.255.255.0
       protocol TCP 

      real_server 192.168.100.102 8000 { !Machine II
           weight 1 
           TCP_CHECK { 
                 connect_timeout 3
            connect_port 8000
           } 
      } 

     real_server 192.168.100.103 8000 { !Machine III 
           weight 1 
                        TCP_CHECK { 
                 connect_timeout 3
            connect_port 8000
           } 
     } 
 }

当我运行keepalived时,sudo ip addr show enp0s8我可以看到keepalived已经为接口提供了虚拟IP地址192.168.100.105但是当我进入机器 I 的浏览器并输入 IP 地址作为 URL 时192.168.100.105什么都没有返回,只是连接超时。但如果我输入192.168.100.102:8000或者 192.168.100.103:8000我受到了我的网络服务的欢迎。

keepalived 可能存在什么问题?

我感谢任何帮助。

答案1

就我而言,我使用 LVS-DR。如果你正在使用 LVS-DR

基于http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.ipvsadm.html

LVS-DR, LVS-Tun: the default gw cannot be the director - use some local router.

将虚拟地址更改为

virtual_ipaddress {
        192.168.100.105 dev enp0s8
}

将真实服务器上的默认网关更改为路由器而不是 Director。

改变

lb_kind NAT 

lb_kind DR

您还需要在真实服务器上添加 iptables 规则。

http://www.centos.org/docs/5/html/Virtual_Server_Administration/s2-lvs-direct-iptables-VSA.html

在真实服务器 192.168.100.102 和 192.168.100.103 上

iptables -t nat -A PREROUTING -p <tcp|udp> -d <vip> --dport <port> -j REDIRECT

在这种情况下变成:

iptables -t nat -A PREROUTING -p tcp -d 192.168.100.105 --dport 8000 -j REDIRECT

相关内容