lvs + keepalived 实现高可用负载均衡

本文详细介绍了在四台虚拟机环境下,使用LVS+Keepalived实现负载均衡和高可用集群的配置过程。包括安装相关服务、添加VIP地址、配置调度算法、进行ARP抑制、设置健康检查及高可用模块等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lvs + keepalived 配置过程

实验环境

四台虚拟机
server1与server4为lvs负载均衡调度主机
server2与server3为apache主机

LVS负载均衡配置

server1上:
1.安装相关服务

[root@server1 ~]# yum insatll ipvsadm -y

2.添加VIP地址,并将VIP地址与后台apache主机相关联,查看并保存配置,启动服务

[root@server1 ~]# ip addr add 172.25.7.100/24 dev eth0
[root@server1 ~]# ipvsadm -A -t 172.25.7.100:80 -s rr(rr轮叫算法)
[root@server1 ~]# ipvsadm -a -t 172.25.7.100:80 -r 172.25.7.2:80 -g
[root@server1 ~]# ipvsadm -a -t 172.25.7.100:80 -r 172.25.7.3:80 -g
[root@server1 ~]# /etc/init.d/ipvsadm save

server2与server3上:
3.在回环接口lo上配置VIP,由于lo接口上由arp广播响应,需要进行arp抑制

[root@server2 ~]# ip addr add 172.25.7.100/32 dev lo
[root@server2 ~]# /etc/init.d/httpd start

4.安装相关服务进行arp抑制

[root@server2 ~]# yum install -y arptables_jf
[root@server2 ~]# arptables -A IN -d 172.25.7.100 -j DROP丢弃
[root@server2 ~]# arptables -A OUT -s 172.25.7.100 -j mangle --mangle-ip-s 172.25.7.2 伪装(arp应用于二层,只是不将100广播,当别人询问有100吗,不回应。但是可以正常的接收包封包,传输)
[root@server2 ~]# /etc/init.d/arptables_jf save

客户端上:
5.进行测试实验
在这里插入图片描述

LVS健康检查

server1上:
1.停止lvs服务,安装ldirectord服务

[root@server1 ~]# /etc/init.d/ipvsadm stop

[root@server1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

[root@server1 ~]# yum install -y ldirectord-3.9.5-3.1.x86_64.rpm 

2.配置ldirectord服务,对配置文件进行修改

[root@server1 ~]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
[root@server1 ~]# vim /etc/ha.d/ldirectord.cf

# Sample for an http virtual service
virtual=172.25.7.100:80
        real=172.25.7.2:80 gate
        real=172.25.7.3:80 gate
        fallback=127.0.0.1:80 gate ##当所有的node挂掉之后本机上
        service=http
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
        #receive="Test Page"
        #virtualhost=www.x.y.z

[root@server1 ~]# /etc/init.d/ldirectord restart

3.安装httpd服务并编写测试页面,当server2与server3都停止服务时,将调用server1上的httpd服务
客户端上:
4.进行实验测试
在这里插入图片描述

高可用集群High-Avaliability

server1:
1.安装keepalived服务与其他必须服务

[root@server1 ~]# tar zxf keepalived-1.4.3.tar.gz
[root@server1 ~]yum install openssl-devel libnl3-devel ipset-devel iptables-devel libnfnetlink-devel
yu
No package libnl3-devel available. 可以不要
No package ipset-devel available. 可以不要
No package libnfnetlink-devel available.

[root@server1 ~]# yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm -y

2.进入keepalived目录进行源码编译

[root@server1 ~]# cd keepalived-1.4.3
[root@server1 keepalived-1.4.3]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV

Use IPVS Framework       : Yes
Use VRRP Framework       : Yes

[oot@server1 keepalived-1.4.3]# make
[oot@server1 keepalived-1.4.3]# make install

3.制作软链接

[root@server1 keepalived]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/  启动脚本
[root@server1 keepalived]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@server1 keepalived]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[root@server1 keepalived]# ln -s /usr/local/keepalived/sbin/keepalived /bin/
[root@server1 keepalived]# chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived 

4.对keepalived配置文件进行修改

global_defs {
#当keepalived有动作时发邮件给本机
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict    #当参数不被禁止掉时,每次加载keepalived都会给火墙中写入访问vip的包全部丢弃
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

#高可用模块
vrrp_instance VI_1 {
    state MASTER  #主
    interface eth0
    virtual_router_id 7  #每个人的路由id要不同
    priority 100  #优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.7.100
    }
}


#负载均衡(LVS)模块
virtual_server 172.25.7.100 80 {
    delay_loop 6
    lb_algo rr  #轮叫的调度算法
    lb_kind DR  #LVS模式
    #persistence_timeout 50  #持续链接
    protocol TCP

    real_server 172.25.7.2 80 {
        weight 1 #权重
        TCP_CHECK{
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 172.25.7.3 80 {
        weight 1
        TCP_CHECK{
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

server4:
5.同样进行上述配置与操作,并安装lvs服务
server2与server3:
6.分别添加VIP

[root@server2 ~]# ip addr add 172.25.60.100 dev eth0
[root@server3 ~]# ip addr add 172.25.60.100 dev eth0

客户端:
7.进行实验测试
在这里插入图片描述
在这里插入图片描述
server1为master,优先级高,所以当server1与server4都正常服务时,默认在server1上进行负载均衡调度,可以看到此时端口访问的mac地址正好为server1的mac地址。

当停止server1上的keepalived时:
在这里插入图片描述
在这里插入图片描述
可以看到此时发生了地址转移,VIP转移到了server4上。同时端口访问的mac地址为server4上的mac地址。此时后台服务器通过server4来调度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值