WEB服务的LVS负载均衡
实验说明:负载均衡,从字面意义来理解是多个后台服务器来支撑一个访问的服务正常运行,也就是说单个重负载的节点分担到多台设备上并行处理,减少用户等待的相应时间,也就是我们说的集群技术,但负载均衡不等于群集,这种技术主要针对企业中WEB服务器和FTP服务器等关键应用实验原理:
LVS的全称Linux vitual system,
LVS工作在一台server上提供Directory(负载均衡器)的功能,本身并不提供服务,只是把特定的请求转发给对应的realserver(真正提供服务的主机),从而实现集群环境中的负载均衡。
LVS的核心组件ipvs工作在kernel中,是真正的用于实现根据定义的集群转发规则把客户端的请求转发到特定的realserver。而另一个组件ipvsadm是工作在用户空间的一个让用户定义ipvs规则的工具。故我们只要在server上装了ipvsadm软件包就可以定义ipvs规则,而在linux kernel的2.6版本之后kernel是直接支持ipvs的。
lvs 三种模型 (NAT DR TUN)
NAT 的架构的特点
工作原理:基于NAT机制实现。当用户请求到达director之后,director将请求报文的目标地址(即VIP)改成选定的realserver地址,同时将报文的目标端口也改成选定的realserver的相应端口,最后将报文请求发送到指定的realserver。在服务器端得到数据后,realserver将数据返给director,而director将报文的源地址和源端口改成VIP和相应端口,然后把数据发送给用户,完成整个负载调度过程。
特点:
1,所有的realserver和director要在同一个网段内
2,RIP是私有地址,仅用于集群节点之间进行通信
3,director同时处理请求和应答数据包
4,realserver的网关要指向DIP
5,可以实现端口映射
6,readlserver可以是任意操作系统
7,director很可能成为系统性能瓶颈
TUN架构的优缺点
工作原理:这种方法通过ip隧道技术实现虚拟服务器。当用户请求到达director之后,director将请求报文的目标地址(即VIP)改成选定的realserver地址.然后,调度器采用ip隧道技术将用户请求发送到某个realserver,而这个realserver将直接相应用户的请求,不再经过director。此外,对realserver的地域位置没有要求。和director在不在同一网段都可以。
特点:
1,realserver和director可以不在一个物理网络中,可以跨越互联网
2,RIP一定不能是私有地址(因为要用到隧道传输)
3,director仅处理入站请求
4,realserver的网关不能指向DIP
5,不支持端口映射
6,支持ip隧道功能的操作系统才能作为realserver
DR架构的优缺点(生产环境用的最多)
工作原理:基于直接路由来实现。当用户请求到达director之后,director将请求报文的目标地址(即VIP)改成选定的realserver地址,还要改写请求报文的mac地址,将请求发送到指定mac的realserver,而realserver将响应直接返回给客户端,不经过director。这个方式是三种调度中性能最好的,也是我们生产环境中使用最多的。
特点:
1,集群节点和director必须在一个物理网络内
2,RIP可以使用公网地址或私有地址
3,director仅处理入站请求
4,集群节点网关不指向director,故出站不经过director
5,不支持端口映射
6,大多数操作系统可以作为realserver,要支持隔离arp广播
7,director服务器的压力比较小
实验环境:RHEL5.5
实验所需安装包:http安装包 位于光盘server目录内 ipvsadm-1.24-10.i386.rpm 位于光盘Cluster目录内
实验前的准备:创建5台机器 分别为ROUTER LVS RS1 RS2 client 全部关闭防火墙!!
实验拓扑图如下
http://yushantao.blog.运维网.com/attachment/201305/28/975462_1369748788wppF.png
如图 要实现客户机访问
客户机访问http服务时是通过LVS服务器由两台服务器提供服务,客户机访问时只需要输入一个虚拟出来的IP地址就可以访问到了
在client中IP配置如下:
http://yushantao.blog.运维网.com/attachment/201305/28/975462_1369748791Ezvw.png
客户机的作用只起到访问服务并且验证作用 所以不做过多配置
ROUTER IP配置如下:
eth0网卡IP配置
http://yushantao.blog.运维网.com/attachment/201305/28/975462_1369748793Np6u.png
eth1网卡IP配置
http://yushantao.blog.运维网.com/attachment/201305/28/975462_1369748797n7u3.png
其他配置:
echo 1 > /proc/sys/net/ipv4/ip_forward 开启网卡转发功能
LVS的IP配置
http://yushantao.blog.运维网.com/attachment/201305/28/975462_1369748799Ks9j.png
LVS的其他设置:
rpm -ivh /mnt/Cluster/ipvsadm-1.24-10.i386.rpm 安装包后就可以试用ipvsadm命令了
ifconfig eth0:1 192.168.19.250 开启一个虚拟网卡地址
ipvsadm -A -t 192.168.19.250:80 -s rr //详看 man ipvsadm
ipvsadm -a -t 192.168.19.250:80 -r 192.168.19.3 –g
ipvsadm -a -t 192.168.19.250:80 -r 192.168.19.4 –g
至此LVS配置完成
RS1的IP配置
http://yushantao.blog.运维网.com/attachment/201305/28/975462_1369748801GtrT.png
RS1的其他配置
安装HTTP服务
rpm -ivh /mnt/Server/httpd-2.2.3-43.el5.i386.rpm
vim /var/www/html/index.html
i am rs1
保存退出
ifconfig lo:1 192.168.19.250 netmask 255.255.255.255 broadcast 192.168.19.255 up
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
通过设置arp_ignore使RS服务器忽略收到的ARP广播,使网络中虽然LVS和RS全部配置了VIP,但是客户端在使用ARP查找目标服务器时,只有LVS能回应ARP广播,RS沉默。
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
通过设置 arp_announce的值来决定RS处理完LVS转给它来自客户端的请求后数据包的封装。2是忽略源IP,只选择一个合理的源IP来封装,所以会忽略192.168.19.3这个本应该封装的eth0地址,而是将VIP封装为源地址(将受到的数据包的源和目标对换)。保证了数据包的合法性和有效性
RS2的IP配置
http://yushantao.blog.运维网.com/attachment/201305/28/975462_1369748803s0Hg.png
其他配置:
安装HTTP服务
rpm -ivh /mnt/Server/httpd-2.2.3-43.el5.i386.rpm
vim /var/www/html/index.html
i am rs2
保存退出
ifconfig lo:1 192.168.19.250 netmask 255.255.255.255 broadcast 192.168.19.255 up
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
至此,所有配置已经完成,用client测试效果
http://yushantao.blog.运维网.com/attachment/201305/28/975462_13697488067WwV.png
让我们再看看LVS服务器上数据流向
http://yushantao.blog.运维网.com/attachment/201305/28/975462_1369748807svCl.png
关于LVS的算法有
1 rr算法,如上述实验所做,缺点是数据包的流向是平均分配的,不能做一些需要输入用户名和密码的网站,当然 hao123还是可以用这种算法实现的,当群中有的机器性能好,有的性能坏,坏的扛不住
2 wrr基于权重的rr算法,缺点是新加的RS不会分担旧RS的负载。
如RS1 负载100
RS2 负载100
RS3(new) 1 RS3永远比旧RS少负担100
3 lc 最少链接新加入的RS会主动承担负载,lvs会将新的请求全部分给新RS,直到新RS的负载和旧的大致相等的时候在分发
4 wlc基于权重的lc
5 lblc 尽可能让同一个访问分到同一个RS上,CDN常用,可以提高命中
6 sh 基于源IP的hash算法,保证同一个源IP的请求分到同一台RS上。主要用在会话连接中,如输入账号密码,如果用rr,两次请求就会切换到不同的RS上,就会需要重新输入账号密码,除非用cookice。
dh基于目标IP的hash算法
页:
[1]