LVS-负载均衡集群部署
简介:LVS是一种集群技术,采用IP负载均衡技术和基于内容请求分发技术,调度器具有很好的吞吐量,将请求均衡的转移到不同服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能,高可用的虚拟服务器,整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务端的程序,
为此,在设计师需要考虑系统的透明性,可伸缩性,高可用性和管理性,一般来说,LVS集群采用三层 结构,体系结构如下所示:
LVS主要组成部分:
*负载调度器(Load balancer /Directory).它是整个集群对外面的前端机,负责将客户请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(也就是虚拟IP地址)上的
*服务器池(server pool/Realserver)是一组真正执行客户请求的服务器,执行的服务一般有WEB,MAIL,FTP和DNS等
*共享存储(shared storage)它为服务器池提供了一个共享的存储区,这样很容易使得服务器池有相同的内容,提供相同的服务,
LVS负载均衡 方式:
(1)LVS/NAT:一种最简单的方式,所有的RealServer只需要将自己的网关指向Directory即可,客户端可以是任意操作系统,但此方式下,一个Directory即可.客户端可以是任意的操作系统,但此方式下,Directory也可以兼为一台RealServer比较有限,在LVS/NAT的方式下,Directory也可以兼为一台RealServer.LVS/NAT的体系结构如图所示:
(2)IP隧道(IPTUNnel):简称TUN模式,采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的internet连接直接回应客户机,而不再经过负载均衡调度器,服务器节点分散在互联网中不要位置,具有独立的公网IP地址,通过专用IP隧道与负载均衡调度器相互通信.
(3)直接路由(Direct Routing)简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络,负载均衡调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道,
以上三种,NAT方式只需要一个公网IP地址,从而成为最易用的一种负载均衡模式,安全性也比较好,许多硬件负载设备就是采用这种方式,相比较而言,DR模式和TUN模式的负载能力更加强大,使用范围更广,但节点的安全性要稍差一些,
负载均衡 调度算法:
*轮询:将收到的访问请求按照顺序轮询轮流分配给集群中的个节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
*加权轮询:根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点负载情况,并动态调整其权重,这样可以保证处理能力强的服务器承担更多的访问流量,
*最少连接:根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数量最少的节点,如果所有的服务器节点性能相近,采用这种方式可以更好的均衡负载
*加权轮询:在服务器节点的性能差异较大的情况下,可以为真实服务器自动调取权重,权重较高的节点将承担更大的比列的活动连接负载
------------------------------------------------------------------------------------------------------------------------------------
LVS-NAT模式
实验环境:
Server:LVS-分配器:
外网IP------Eth0:192.168.1.1
内网IP------Eth1:192.168.2.128
Web-server1
内网IP:192.168.2.51
Web-server2
内网IP:192.168.2.52
在LVS上开启路由转发功能
[root@localhost ~]# vim /etc/sysctl.conf #开启自动生效
root@localhost ~]# sysctl –p #让配置立即生效
配置LVS NAT模式集群并安装LVS管理工具:ipvsadm
[root@localhost ~]# yum localinstall -y /media/cdrom/Packages/ipvsadm-1.26-2.el6.x86_64.rpm [A1]
添加一个虚拟服务:VIP地址 :192.168.1.1,服务端口:80
[root@localhost ~]# ipvsadm -A -t 192.168.1.1:80 -s rr[A2]
[A1]因配置文帝yum源,可采用这种方式安装ipvsadm软件
[A2]-A:添加一个虚拟服务
-t:表示TCP的服务 VIP:PORT
-s:制定调度算法 rr表示route-robin
添加虚拟服务后端的real server地址:
[root@localhost ~]# ipvsadm -a -t 192.168.1.1:80 -r 192.168.2.51 -m
[root@localhost ~]# ipvsadm -a -t 192.168.1.1:80 -r 192.168.2.52 -m
查看:
[root@localhost ~]# ipvsadm -L –n
[A1]-a:表示添加real server
-r:制定real server的ip地址
-m:表示masquerade也就是NAT方式LVS
保存:
[root@localhost ~]# /etc/init.d/ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [确定]
总结:
1:配置网络环境,添加网卡eth1
2:开启路由转发功能
3:安装配置LVS NAT
ipvsadm -A -t 192.168.1.1:80 -s rr
ipvsadm -a -t 192.168.1.1:80 -r 192.168.2.51 -m
ipvsadm -a -t 192.168.1.1:80 -r 192.168.2.52 –m
后端web-server1:192.168.2.51
web-server2:192.168.2.52上面配置
配置web-server 192.168.2.51的ip和网关
Web-2.51: eth0: vmnet1 :192.168.2.51 网关:192.168.2.128
Web-2.52: eth0: vmnet1 :192.168.2.52 网关:192.168.2.128
[root@localhost ~]# vim /etc/sysconfig/networkscripts/ifcfg-eth0
[root@localhost ~]# /etc/init.d/network restart
测试两台web服务能否ping通?
接下两台服务器都安装httpd并启动
[root@localhost ~]# yum install -y httpd
[root@localhost ~]# /etc/init.d/httpd start
创建一个默认测试网页
[root@localhost ~]# echo "server 192.168.2.51" >>/var/www/html/index.html
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
[root@localhost ~]# /etc/init.d/httpd restart
在web 2.52上安装httpd(配置与上述一样)
[root@localhost ~]# yum install -y httpd
[root@localhost ~]# /etc/init.d/httpd start
创建一个默认测试网页
[root@localhost ~]# echo "server 192.168.2.52" >>/var/www/html/index.html
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
root@localhost ~]# /etc/init.d/httpd restart
测试LVS-NAT模式
通过elinks浏览器 realserver是否正常:
[root@localhost ~]# elinks 192.168.2.51 --dump
server 192.168.2.51
[root@localhost ~]# elinks 192.168.2.52 --dump
server 192.168.2.52
通过elinks浏览器访问VIP,测试分发器是否正常
查看LVS NAT集群请求状态
[root@localhost ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.1:80 rr
-> 192.168.2.51:80 Masq 1 0 2
-> 192.168.2.52:80 Masq 1 0 2
查看LVS分发情况
[root@localhost ~]# ipvsadm -L -n --stats
查看速率