LVS +keepalived

环境准备:#

  准备4台机器,两台装好LVS和Keepalived,作为调度器,另外两台装好httpd服务,作为Real Server。

网络配置:

Diretcory:

名称 接口 IP 用途
MASTER eth0 192.168.1.19 用于WAN的数据转发
 

eth1

10.0.0.19 用于LAN的数据转发
 

eth2

10.0.2.19 用于LB之间的心跳连接
VIP

 

192.168.1.29 解析到www.zydev.com
BACKUP

eth0

192.168.1.16 用于WAN的数据转发
 

eth1

10.0.0.16 用于LAN的数据转发
 

eth2

10.0.2.16 用于LB之间的心跳连接
VIP   暂无  
LAN不需要配置网关

 

 

 

 

 

 

 

 

 

 

 

 

 

 

具体的网卡参数配置以MASTER的3块网卡为例

复制代码
DEVICE=eth0
HWADDR=00:0c:29:e7:ba:c6
TYPE=Ethernet
UUID=af441a22-3ba9-42fe-9748-eeb78eccb374
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
USERCTL=no
IPV6INIT=no
IPADDR=192.168.1.19
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
eth0
复制代码
复制代码
DEVICE=eth1
HWADDR=00:0c:29:e7:ba:bc
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.0.0.19
NETMASK=255.255.255.0
eth1
复制代码
复制代码
DEVICE=eth2
HWADDR=00:0c:29:e7:ba:d0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.0.2.19
NETMASK=255.255.255.0
eth2
复制代码

 

RSV

Real Server
名称 接口 IP 用途
RS1 eth0 192.168.1.17 用于WAN数据转发
  eth1 10.0.0.17 用于LAN数据转发
RS2 eh0 192.168.1.18 用于WAN数据转发
  eth1 10.0.0.18 用于LAN数据转发
VIP   暂无  

 

 

 

 

 

 

 

 

具体的网卡参数配置:

复制代码
DEVICE=eth0
HWADDR=00:0c:29:a4:65:08
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
DNS2=8.8.8.8
DNS1=114.114.114.114
IPV6INIT=no
USERCTL=no
IPADDR=192.168.1.17
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
eth0
复制代码
复制代码
DEVICE=eth1
HWADDR=00:0c:29:a4:65:12
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
IPADDR=10.0.0.17
NETMASK=255.255.255.0
~                       
eth1
复制代码

 

配置调度器#

Master

vim /etc/keepalived/keepalived.conf

复制代码
! Configuration File for keepalived

global_defs {
   notification_email {
    zy5724@163.com
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_01
}
                                                     
vrrp_instance VI_1 {
    state MASTER                       #备份服务器上MASTER为BACKUP
    interface eth0        
    lvs_sync_daemon_inteface eth2    #心跳线的网卡
    virtual_router_id 51
    priority 100                        #备份服务上优先级要低于100,如改为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      192.168.1.29/24                   #注意,这是是模拟外网IP。
    }
}
#
virtual_server 192.168.1.29 80 {
    delay_loop 6              
    lb_algo wrr                
    lb_kind DR                
    nat_mask 255.255.255.0
    persistence_timeout 50        #会话保持  
    protocol TCP                

    real_server 192.168.1.17 80 {
        weight 1              
        TCP_CHECK {
        connect_timeout 8       
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }

    real_server 192.168.1.18 80 {
        weight 1              
        TCP_CHECK {
        connect_timeout 8       
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
}
主调度器配置文件
复制代码

BACKUP

复制代码
! Configuration File for keepalived

global_defs {
   notification_email {
    zy5724@163.com
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_02
}
                                                     
vrrp_instance VI_1 {
    state BACKUP               #备份服务器上MASTER为BACKUP
    interface eth0
    lvs_sync_daemon_inteface eth2
    virtual_router_id 51
    priority 90                #备份服务上优先级要低于100,如改为90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
      192.168.1.29/24             #注意,这是是模拟外网IP。
    }
}
#
virtual_server 192.168.1.29 80 {
    delay_loop 6              
    lb_algo wrr                
    lb_kind DR                
    nat_mask 255.255.255.0
    persistence_timeout 50     
    protocol TCP                

    real_server 192.168.1.17 80 {
        weight 1              
        TCP_CHECK {
        connect_timeout 8       
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }

    real_server 192.168.1.18 80 {
        weight 1              
        TCP_CHECK {
        connect_timeout 8       
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
}
备用调度器的配置文件
复制代码

 

启动keepalived,查看LVS情况

 

 

配置RealServer#

RS1

ifconfig lo:17 192.168.1.29 netmask 255.255.255.255 up
route add -host 192.168.1.29 dev lo
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce 
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore 
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

RS2

ifconfig lo:18 192.168.1.29 netmask 255.255.255.255 up
route add -host 192.168.1.29 dev lo
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce 
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore 
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

 

访问http://192.168.1.29,可以发现实现了高可用和负载均衡。

posted @   头痛不头痛  阅读(245)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
主题色彩