实验说明:负载均衡,从字面意义来理解是多个后台服务器来支撑一个访问的服务正常运行,也就是说单个重负载的节点分担到多台设备上并行处理,减少用户等待的相应时间,也就是我们说的集群技术,但负载均衡不等于群集,这种技术主要针对企业中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服务时是通过LVS服务器由两台服务器提供服务,客户机访问时只需要输入一个虚拟出来的IP地址就可以访问到了 在client中IP配置如下:
客户机的作用只起到访问服务并且验证作用 所以不做过多配置 ROUTER IP配置如下: eth0网卡IP配置
eth1网卡IP配置
其他配置: echo 1 > /proc/sys/net/ipv4/ip_forward 开启网卡转发功能 LVS的IP配置
LVS的其他设置: echo 1 > /proc/sys/net/ipv4/ip_forward 开启转发功能 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配置
RS1的其他配置 安装HTTP服务 rpm -ivh /mnt/Server/httpd-2.2.3-43.el5.i386.rpm vim /var/www/html/index.html i am rs1 保存退出 echo 1 > /proc/sys/net/ipv4/ip_forward 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服务 rpm -ivh /mnt/Server/httpd-2.2.3-43.el5.i386.rpm vim /var/www/html/index.html i am rs2 保存退出 echo 1 > /proc/sys/net/ipv4/ip_forward 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测试效果
让我们再看看LVS服务器上数据流向
|