LVS—DR模式+keepalived实现负载均衡集群

本文介绍了如何使用LVS-DR模式和keepalived搭建高可用负载均衡集群。首先解释了LVS和VIP的概念,然后详细阐述了DR模式的工作原理及实验环境配置。接着,通过健康检查工具ldirectord实现了服务器状态自动检测。最后,通过配置keepalived实现了主备负载均衡器之间的故障切换,确保了服务的持续性。
摘要由CSDN通过智能技术生成

负载均衡集群的实现

一.简介

1.LVS

  • LVS(Linux Virtual Server),意即Linux虚拟服务器,是一个虚拟的服务器集群系统
  • 宗旨是使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.
  • 一般来说,LVS集群采用三层结构,其主要组成部分为:

    A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(可称之为虚拟IP地址)上的。

    B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

    C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

2.VIP

  • VIP为调度器和服务器组共享,调度器配置的VIP是对外可见的,用于接收虚拟服务的请求报文

二.LVS—DR模式

  • DR模式原理图:

  • DR模式的数据传输过程

        当客户端请求VIP时,会将请求先发给Director(调度器),调度器发现请求的是一组集群服务,根据调度算法将这一请求转发给RealServer,注意在转发的过程中,仅仅是修改了数据报文中的MAC地址(所以这也是为什么我们要求DR和RS必须在同一个物理网络内,就是为了保证可以通过修改MAC地址而进行数据报文的转发。)当RealServer处理请求,响应数据,发送响应数据给客户端,按理说此时的数据包的源IP为RIP,目标IP为CIP,虽然能找到客户端,但是客户端是不收该数据包的,因为并没有请求该RIP ,现在的做法就是进行IP欺骗,即就是修改源 IP 为 VIP,但是不可以将VIP设置在出口网卡上,否则会响应客户端的arp request,造成client/gateway arp table紊乱,以至于整个load balance都不能正常工作。要在lo接口上配置VIP,并将此 VIP 屏蔽,但是出去时候的数据包被路由转换,转换后的 IP不再是 VIP,所以要重新设置路由。

  • 特点

DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。DR模式是互联网使用比较多的一种模式。

1.实验环境

主机名 ip 组成部分
server1 172.25.14.1 负载调度器LB
server2 172.25.14.2 RealServer
server3 172.25.14.3 RealServer
  • rhel6.5
  • iptables and selinux  disabled
  • VIP:172.25.14.100  
  • 网络yum源http://172.25.14.250/rhel6.5
  • server2,server3开启httpd服务

 

配置步骤:

1)配置yum仓库


[root@server1 ~]# vim /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.14.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.14.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0
[root@server1 ~]# yum clean all

2)安装ipvsadm

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

3)添加调度策略

[root@server1 ~]# ipvsadm -A -t 172.25.14.100:80 -s rr  ##-A表示添加虚拟主机,-t表示tcp连接,-s表示负载均衡工作模式为轮询模式
[root@server1 ~]# ipvsadm -a -t 172.25.14.100:80 -r 172.25.14.2:80 -g  ##-a表示往一条记录中添加真实的服务主机,-g直连模式,-r表示指定真实主机的ip
[root@server1 ~]# ipvsadm -a -t 172.25.14.100:80 -r 172.25.14.3:80 -g  
[root@server1 ~]# /etc/init.d/ipvsadm save    ##保存添加的策略
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]
[root@server1 ~]# ipvsadm -l    ##查看调度策略
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.14.100:http rr
  -> server2:http                 Route   1      0          0         
  -> server3:http                 Route   1      0          0         

 

此时虽然调度器添加策略成功,但是因为调度器与后端服务器不能通信,虽然server1确实调度了,但是主机中不存在这个虚拟ip

172.25.14.100,所以不能发挥调度作用

4)在调度器中添加虚拟ip 172.25.14.100/24

[root@server1 ~]# ip addr add 172.25.14.100/24 dev eth0

5)在真实主机server2与server3添加虚拟主机ip172.25.14.100,使调度器可以与其通信

server2:

[root@server2 ~]# ip addr add 172.25.14.100/32 dev eth0     ##/32是为了让客户不能直接访问后端服务器
[root@server2 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:38:17:dc brd ff:ff:ff:ff:ff:ff
    inet 172.25.14.2/24 brd 172.25.14.255 scope global eth0
    inet 172.25.14.100/32 scope global eth0          ##虚拟ip添加成功
    inet6 fe80::5054:ff:fe38:17dc/64 scope link 
       valid_lft forever preferred_lft forever

server3:

[root@server3 ~]# ip addr add 172.25.14.100/32 dev eth0
[root@server3 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:31:6f:ca brd ff:ff:ff:ff:ff:ff
    inet 172.25.14.3/24 brd 172.25.14.255 scope global eth0
    inet 172.25.14.100/32 scope global eth0              ##虚拟ip添加成功
    inet6 fe80::5054:ff:fe31:6fca/64 scope link 
       valid_lft forever preferred_lft forever

6)测试:

此时,调度器与两台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值