您的位置:首页 > 其它

LVS负载均衡概念及DR模型的配置

2018-02-28 11:44 120 查看
一、负载均衡的分层结构

第一层:负载调度器,这是访问整个集群系统的唯一入口,对外使用所有服务器共有的VIP地址。通常会配置主、备两台调度器实现热备份。
第二层:服务器池,集群所提供的应用服务由服务器池承担,其中的每个节点具有独立的RIP地址,只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载均衡器的容错机制会将其隔离,等待错误排除后再重新纳入服务器池。
第三层:共享存储,为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个集群的统一性。


二、负载均衡的工作模式
1、NAT模式(网络地址转换):这是一种外网和内网地址映射的技术,在这种工作模式下,数据的进出都要经过LVS负载均衡器。LVS需要作为真实服务器(Real Server)的网关。当数据包到达LVS时,LVS要做目标地址转换(DNAT),将目标IP改为真实服务器(Real Server)的IP。真实服务器接到数据包后进行处理,在响应时,源IP地址是真实服务器自身IP,而目标地址则直接定义为客户端的IP。然后真实服务器把响应数据包发送给LVS进行中转,LVS会做源地址转换(SNAT),把数据包的源IP地址改为VIP。在客户端看来,这个数据包就是LVS直接发送给它的,客户端感知不到真实服务器(Real Server)的存在。



2、Tunnel模式(IP隧道模式):隧道模式就是,把客户端发来的数据包,封装一个新的IP头标记(仅目的IP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项。

3、DR模式(直接路由模式):这种模式下客户端发来的请求也是由LVS接收,但是真实服务器在返回响应数据包时直接返回给客户端,不经过LVS。当用户发送请求时,源IP是client_IP,目标地址是LVS_VIP,当LVS将数据包转发给真实服务器处理后,返回时的源IP是Real_IP,目标IP是client_IP,因为客户端没有请求Real_IP,这样直接返回的数据包是不被客户端接收的,所以还是需要使用VIP来响应请求。DR模式下,LVS服务器需要配置一个VIP和DIP,真实服务器需要配置RIP和VIP(和调度服务器的VIP一致),但是真实服务器的VIP是隐藏的(因为会造成地址冲突),不会应答广播,只在响应客户端的时候作为源地址使用。当请求到达LVS服务器时,LVS会将目标的MAC地址改为某台真实服务器的MAC地址,该请求数据包就会被转发到相应的真实服务器来处理,此时的源IP和目标IP都没变。当真实服务器发送响应数据包时,只需要直接返回到客户端即可(因为此时源地址是VIP,目标地址是client_IP),不需要再经过LVS服务器。



三、LVS的负载调度算法(举四个比较常用的算法)
1、轮询:将收到的请求访问按照顺序轮流分配给集群中的各节点,均等地对待每一台服务器,而不管服务器实际的连接数和负载。

2、加权轮询:根据实际服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重。这样可以保证处理能力强的服务器承担更多的访问流量。
3、最少连接:根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。如果所有的服务器节点性能差不多,采用这种方式可以更好地负载均衡。
4、加权最少连接:在服务器节点性能差异较大的情况下,可以为真实服务器自动调整权重,权重较高的节点将承担更大比例的活动连接负载。
注意:在配置LVS负载均衡时,rr表示轮询算法、wrr表示加权轮询、lc表示最少连接、wlc表示加权最少连接。
四、DR模式的配置
实验环境:CentOS6.8虚拟机三台,其中一台调度器和两台web服务器
调度器IP:192.168.200.101(eth0)/VIP:192.168.200.102(eth0:0)
web1IP:192.168.200.103(eth0)/VIP:192.168.200.102(lo:0)
web2IP:192.168.200.104(eth0)/VIP:192.168.200.102(lo:0)

步骤一:LVS调度器安装ipvsadm管理工具
[root@localhost ~]# yum -y install ipvsadm
步骤二:配置调度器IP
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0
[root@localhost network-scripts]# vim ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.200.101
NETMASK=255.255.255.0
GATEWAY=192.168.200.1
DNS1=202.106.0.20

[root@localhost network-scripts]# vim ifcfg-eth0:0
DEVICE=eth0:0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.200.102
NETMASK=255.255.255.0
GATEWAY=192.168.200.1
DNS1=202.106.0.20
[root@localhost network-scripts]# ifup eth0:0
步骤三:配置sysctl.conf参数
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
[root@localhost ~]# sysctl -p
步骤四:配置负载策略
[root@localhost ~]# service ipvsadm stop //清除原有的策略
[root@localhost ~]# ipvsadm -A -t 192.168.200.102:80 -s rr //创建虚拟服务器,针对VIP为192.168.200.102,端口为80的集群提供分流服务
[root@localhost ~]# ipvsadm -a -t 192.168.200.102:80 -r 192.168.200.103:80 -g -w 1 //添加web服务器,-a表示添加真实服务器,-t指定VIP及端口,-r指定web服务器IP及端口,-w表示权重
[root@localhost ~]# ipvsadm -a -t 192.168.200.102:80 -r 192.168.200.104:80 -g -w 1 //-g表示DR模式,-m表示NAT模式,-i表示TUN模式
[root@localhost ~]# service ipvsadm save //保存策略
步骤五:配置web服务器IP地址(两个节点步骤一样,只是eth0端口的IP不同,VIP都一样)
[root@localhost network-scripts]# vim ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.200.103
NETMASK=255.255.255.0
GATEWAY=192.168.200.1
DNS1=202.106.0.20
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# cat ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.200.102
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup l0:0
[root@localhost ~]# route add -host 192.168.200.102 dev lo:0 //也可以把此语句添加到rc.local文件
步骤六:调整sysctl.conf参数
[root@localhost ~]# vim /etc/sysctl.conf
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
[root@localhost ~]# sysctl -p

步骤七:测试
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.200.102:80 rr
-> 192.168.200.103:80 Route 1 0 0
-> 192.168.200.104:80 Route 1 0 0

也可以在两台web服务器上部署httpd服务,编写两个不同的页面,然后在浏览器上对VIP进行访问,刷新浏览器会发现轮询的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LVS 负载均衡