LVS-DR模式+Keepalived

  1. Keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅是双机热备。优点:keepalived对lvs负载调度器实现热备切换,提高可用性,对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

  2. 基于lvs+keepalived实现的lvs群集结构中,至少包含两台热备的负载调度器。使用keepalived构建lvs群集时,也需要用到ipvsadm管理工具,但是大部分工作会由keepalived自动完成,不需要手动执行ipvsadm(除了查看和监控群集以外)。

  3. LVS群集是针对Linux内核开发的一个负载均衡项目,基于IP地址虚拟化应用VIP,为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决办法。可使用ipvsadm管理工具。通过整合多台相对廉价的普通服务器,以同一个地址对外提供相同的服务。

  4. 负载均衡的直接路由工作模式。简称DR工作模式,负载调度器仅作为客户机的访问入口,各节点服务器与调度器位于同一个物理网络,节点服务器直接回应客户机的请求,而不再经过负载调度器。

  5. Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(Health Checking)功能–判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入集群。
    在这里插入图片描述

  6. 配置信息
    LVS-DR-MASTER 192.168.88.161 CentOS6.5_x64
    LVS-DR-BACKUP 192.168.88.162 CentOS6.5_x64
    LVS-DR-VIP 192.168.88.160
    WEB1 192.168.88.163 CentOS6.5_x64
    WEB2 192.168.88.164 CentOS6.5_x64

  7. 分别在master和backup上安装lvs(LVS采用dr模式)和keepalived软件包
    安装keepalived(master和backup上都要安装)

yum -y install keepalived ipvsadm

启动keepalived:

[root@ localhost ~]# service keepalived start
Starting keepalived:                                       [  OK  ]
[root@ localhost ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.200.100:https rr persistent 50
  -> 192.168.201.100:https        Masq    1      0          0         
TCP  10.10.10.2:connlcli rr persistent 50
  -> 192.168.200.2:connlcli       Masq    1      0          0         
  -> 192.168.200.3:connlcli       Masq    1      0          0         
TCP  10.10.10.3:connlcli rr persistent 50
  -> 192.168.200.4:connlcli       Masq    1      0          0         
  -> 192.168.200.5:connlcli       Masq    1      0          0         
[root@ localhost ~]# 

配置主Keepalived:

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id LVS_R1
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.88.160
    }
}

virtual_server 192.168.88.160 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
!    persistence_timeout 50
    protocol TCP

    real_server 192.168.88.163 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.88.164 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

service keepalived restart

备keepalived配置文件配置信息:备用服务器可以有多台,配置时候基本相同只要修改路由器名称,热备状态,优先级就可以了。

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id LVS_R1
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.88.160
    }
}

virtual_server 192.168.88.160 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
!    persistence_timeout 50
    protocol TCP

    real_server 192.168.88.163 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
    real_server 192.168.88.164 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}
service keepalived restart

通过ip命令查看(ifconfig看不到),实际状态为MASTER的主服务器上将为eth0自动添加VIP地址。在主上:

ip addr show eth0

在这里插入图片描述

  1. 节点web服务器配置
    使用DR模式的时候,节点服务器也需要配置vip地址,并且调整内核的ARP响应参数以阻止更新VIP的MAC地址,避免发生冲突。
[root@ localhost ~]# cd /etc/sysconfig/network-scripts/
[root@ localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@ localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.88.160
NETMASK=255.255.255.255
ONBOOT=yes
[root@ localhost network-scripts]# ifup lo:0
[root@ localhost network-scripts]# ifconfig lo:0
lo:0      Link encap:Local Loopback  
          inet addr:192.168.88.160  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:65536  Metric:1

添加VIP本地访问路由(将访问VIP的数据限制正在本地,避免通信紊乱)

vim /etc/sysctl.conf

最下面添加

#lvs use
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

注意:
arp_announce为2时:只向该网卡回应与该网段匹配的ARP报文。
arp_ignore为1:只响应目的IP地址为接收网卡上的本地地址的arp请求
其主要是实现禁止响应ARP的请求。

[root@ localhost ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

安装httpd,创建网页测试lvs集群

yum -y install httpd
vim /var/www/html/index.html
<h1>LVS-web1.test</h1>
service httpd start

Web2和web1做同样的操作即可。
测试:
在外面直接访问虚拟ip地址,则可以访问到对应节点上的网站信息,当主调度器坏掉的时候,会自动切换到备用的调度器上面,网站访问量根据权重和算法来计算。
查看负载分配情况可以执行下面命令
在这里插入图片描述
在这里插入图片描述
测试调度器:
将主keepalived停掉之后,继续访问http://192.168.88.160
,页面不受影响。
查看vip是否转移:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值