LVS(Linux Virtual Server)负载均衡集群
LVS集群系统是由3个部分组成:前端是负载均衡层,中间是服务器群组层,底端是数据共享存储层.
负载均衡层:位于集群的最前端,由一台或多负载调度器(Director Server)组成.LVS核心模块IPVS就安装在调度器上.它的主要作用就是将用户的请求分发给服务器群组层.同时监控服务器群组层的健康状况,在真实服务器不可用时将其从LVS中剔除,在恢复时重新加入.
服务器群组层:由一组实际提供服务的机器组成.此层的服务器也称为真实服务器(Real Server)
共享存储层:为所有真实服务器提供共享存储空间和内容一致性的存储区块.
从整个LVS集群架构来看,负载均衡层是整个LVS的核心.所以一般会为负载均衡层的调度器做一个备份,当主服务器宕机时辅助服务器自动切换为主服务器进行处理用户请求的分发工作.一般所用的是keepalived.
IPVS实现负载均衡的三种方式: NAT,TUN,DR.
NAT :网络地址转换,当用户请求到达调度器时,调度器将包的目标IP地址和端口号替换成真实服务器的IP地址和端口号,并将包发送给选定的真实服务器,真实服务器回复用户请求的时候也要经过调度器将包的源IP地址和端口号更改成虚拟IP地址,之后再将包发给用户.
在此方式下,用户与真实服务器的通信都必须经过调度器,所以当访问量大的时候调度器将会有很大压力.
TUN :隧道,当用户请求到达调度器时,调度器同样将包的IP和端口替换成真实服务器的IP和端口,并将包转发给真实服务器,但是真实服务器回复用户请求的时候会通过隧道直接回复给用户而不再通过调度器,此外TUN模式下不会对真实服务器的位置有要求,可以和调度器同一网段,也可以在独立的网络中.
DR :直连路由,这种方式与前两种一样,但是它收到用户的请求包更改的不再是IP与端口而是MAC地址,而真实服务器回复的时候也不用经过调度器,直接回复给用户请求.
DR是三种方式中性能最好的,但是要求调度器与真实服务器在同一个网络中.
调度算法:
轮叫调度,加权轮叫调度,最少连接调度,加权最少连接调度.这四种比较常用
基于局部性的最少连接,带复制的局域局部性的最少连接,目标地址散列,源地址散列.这四种不常见.
轮叫调度:也称为1:1调度,将用户请求按顺序的分配给真实服务器.
加权轮叫调度:更具服务器的性能好坏可以为服务器增加调度权值,权值高的服务器会处理更多的请求.
最少连接调度:此算法会动态的将网络请求调度到建立连接数最少的真实服务器上.
加权最少连接调度:同样为服务器增加调度权值.
今天只演示LVS的NAT方式
实验环境:
一台LVS Director Server eth0-192.168.18.53
eth0:1-192.168.19.51 #虚拟IP地址
两台WEB Real Server eth0-192.168.18.51
eth0-192.168.18.52
Director Server操作
1.安装IPVS
#光盘中Cluster目录中有安装包
[root@localhost ~]# yum install -y ipvsadm
2.设置虚拟IP地址
[root@localhost~]#ifconfig eth0:1 192.168.19.51 netmask 255.255.255.0 broadcast 192.168.19.255 up
3.开启转发功能
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
4.设置IPVS
[root@localhost ~]# ipvsadm -C
[root@localhost ~]# ipvsadm -A -t 192.168.19.51:80 -s rr
[root@localhost ~]# ipvsadm -a -t 192.168.19.51:80 -r 192.168.18.51 -m
[root@localhost ~]# ipvsadm -a -t 192.168.19.51:80 -r 192.168.18.52 -m
#查看命令ipvsadm -ln
[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.19.51:80 rr
-> 192.168.18.52:80 Masq 1 0 0
-> 192.168.18.51:80 Masq 1 0 0
Real Server操作
仅需要将服务打开,并且网关指向Director Server即可.
测试:
当用户在浏览器输入虚拟IP的时候则会出现真实服务器的页面.如果想查看具体通过哪个真实服务器提供服务可以在Director Server中使用ipvsadm -lnc命令查看当前连接.