LVS介绍以及部署

LVS 是(Linux Virtual Server)

 

1.1  LVS 体系结构
LVS 建筑于实际的服务器集群之上,用户看不到提供服务的多台实际服务器,而只能看见一台
作为负载平衡器的服务器。实际的服务器通过高速局域网或地理上分散的广域网连接。实际服务器
的前端是一台负载平衡器,他将用户的请求调度到实际服务器上完成,这样看起来好像所有服务都
是通过虚拟服务器来完成的。Linux 虚拟服务器能够提供良好的可升级性、可靠性和可用性。用户 可以透明地增加或减少一个节点,可以对实际服务器进行监测,如果发现有节点失败就重新配置系
统。

 

1.2 LVS 调度算法
LVS 提供了十种调度算法:
可以透明地增加或减少一个节点,可以对实际服务器进行监测,如果发现有节点失败就重新配置系
统。

1.3 LVS 调度算法
LVS 提供了十种调度算法:

 

1.轮叫(Round Robin RR)
调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对
待每一台服务器,而不管服务器上实际的连接数和系统负载。


 

2.加权轮叫(Weighted Round Robin WRR)
调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保
证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态
地调整其权值。

 

3.最少链接(Least Connections LC)
调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如
果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。

 

4.加权最少链接(Weighted Least Connections WLC)
在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载
均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务
器的负载情况,并动态地调整其权值。

 

5.基于局部性的最少链接(Locality-Based Least Connections LBLC)
"基于局部性的最少链接" 调度算法是针对目标IP 地址的负载均衡,目前主要用于Cache 集群
系统。该算法根据请求的目标IP 地址找出该目标IP 地址最近使用的服务器,若该服务器是可用的
且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的
工作负载,则用"最少链接"的原则选出一个可用的服务器,将请求发送到该服务器。


 

6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication LBLCR
"带复制的基于局部性最少链接"调度算法也是针对目标IP 地址的负载均衡,目前主要用于
Cache 集群系统。它与LBLC 算法的不同之处是它要维护从一个目标IP 地址到一组服务器的映射,
而LBLC 算法维护从一个目标IP 地址到一台服务器的映射。该算法根据请求的目标IP 地址找出该目
标IP 地址对应的服务器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,
将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集群中选出一台服务器,将该
服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,
将最忙的服务器从服务器组中删除,以降低复制的程度。

 

7.目标地址散列(Destination Hashing DH)
"目标地址散列"调度算法根据请求的目标IP 地址,作为散列键(Hash Key)从静态分配的散列
表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

 

8.源地址散列(Source Hashing SH)
"源地址散列"调度算法根据请求的源IP 地址,作为散列键(Hash Key)从静态分配的散列表找
出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

 

9.最短期望延迟(Shortest Expected Delay Scheduling SED)
分配一个接踵而来的请求以最短的期望的延迟方式到服务器。

 

10.最小队列调度(Never Queue Scheduling NQ)
分配一个接踵而来的请求到一台空闲的服务器,此服务器不一定是最快的那台,如果所有服务
器都是繁忙的,它采取最短的期望延迟分配请求。

 

1.4 LVS 负载均衡方法

 

Virtual Server via NAT  NAT转化

Virtual Server via IP Tunneling  虚拟隧道

Virtual Server via Direct  Routing 路由选择

 

 

1.4.1  LVS-NAT 方式体系结构

 

Virtual Server via NAT 方法使用了报文双向重写的方法。

 

       客户通过访问虚拟服务器的IP地址时,请求报文到调度服务器,调度器根据算法从真实服务器后中选出一台服务器将报文的目标地址Virtual IP
Address 改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后
的报文发送给选出的服务器。同时,调度器在连接Hash 表中记录这个连接,当这个连接的下一个
报文到达时,从连接Hash 表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报
文传给原选定的服务器。当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源
端口改为Virtual IP Address 和相应的端口,再把报文发给用户。

 

1.4.2部署配置

 

IP 地址                      主机名         描述
192.168.130.130 Web-Master Director 分发器(VIP)
192.168.140.132 Web-Master Director 分发器(DIP)
192.168.140.133 Web-node1 Real Server Web 节点1
192.168.140.134 Web-node2 Real Server Web 节点2

192.168.130.131 Web-Client  测试客户端

 

1.4.3 设置主机名解析

 

vim /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.140.132 Web-node
192.168.140.133 Web-node1
192.168.140.134 Web-node2

 

1.4.4 节点1配置

 

[root@Web-node1 ~]# mount /dev/cdrom /mnt
[root@Web-node1 ~]# rpm -ivh /mnt/Server/httpd-2.2.3-31.el5.i386.rpm
[root@Web-node1 ~]# echo Web-node1 > /var/www/html/index.html
[root@Web-node1 ~]# /etc/init.d/httpd start
[root@Web-node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.140.133
NETMASK=255.255.255.0
GATEWAY=192.168.140.132 注意:默认网关设置为DIP
ONBOOT=yes
HWADDR=00:0c:29:7c:cf:ba
[root@Web-node1 ~]# /etc/init.d/network restart
2> Web-node2
[root@Web-node2 ~]# mount /dev/cdrom /mnt
[root@Web-node2 ~]# rpm -ivh /mnt/Server/httpd-2.2.3-31.el5.i386.rpm
[root@Web-node2 ~]# echo Web-node2 > /var/www/html/index.html
[root@Web-node2 ~]# /etc/init.d/httpd start
[root@Web-node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.140.134
NETMASK=255.255.255.0
GATEWAY=192.168.140.132 注意:默认网关设置为DIP
ONBOOT=yes
HWADDR=00:0c:29:5d:2d:90
[root@Web-node2 ~]# /etc/init.d/network restart
请用浏览器访问两个Web 几点,保证服务是正常运行。

1.4.5 节点2配置

 

mount /dev/cdrom /mnt
[root@Web-node2 ~]# rpm -ivh /mnt/Server/httpd-2.2.3-31.el5.i386.rpm
[root@Web-node2 ~]# echo Web-node2 > /var/www/html/index.html
[root@Web-node2 ~]# /etc/init.d/httpd start
[root@Web-node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.140.134
NETMASK=255.255.255.0
GATEWAY=192.168.140.132 注意:默认网关设置为DIP
ONBOOT=yes
HWADDR=00:0c:29:5d:2d:90
[root@Web-node2 ~]# /etc/init.d/network restart
请用浏览器访问两个Web 几点,保证服务是正常运行。

 

1.4.6 调度服务器配置

1> 打开IP_Forward

vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@Web-node ~]# sysctl -p

 

2> 绑定DIP 和VIP

 

[root@Web-node ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.140.132
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=00:0c:29:17:39:9c

 

3> 安装ipvsadm 软件包
[root@Web-node ~]# rpm -ivh /mnt/Cluster/ipvsadm-1.24-10.i386.rpm
4> 设置ipvsadm
[root@Web-node ~]# modprobe iptable_nat
[root@Web-node ~]# ipvsadm -A -t 192.168.130.130:80 -s rr
[root@Web-node ~]# ipvsadm -a -t 192.168.130.130:80 -r 192.168.140.133 -m
[root@Web-node ~]# ipvsadm -a -t 192.168.130.130:80 -r 192.168.140.134 -m
[root@Web-node ~]# service ipvsadm save
Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
[root@Web-node ~]# chkconfig ipvsadm on

 

注释:-t --tcp-service service-address 说明虚拟服务器提供的是tcp 的服务

 

            -a--add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。

            -r --real-server server-address 真实的服务器

 

            -m --masquerading 指定LVS 的工作模式为NAT 模式

 

 

1.4.7 LVS -NAT 方式集群测试

1> 手动效果测试
[root@Web-Client ~]# elinks http://192.168.130.130 发现访问的是Web-node1
[root@Web-Client ~]# elinks http://192.168.130.130 发现访问的是Web-node2

 

 

 

                                                                                                                           尊重原创http://www.unixhot.com

 

 

 

 

你可能感兴趣的:(集群,LVS,-NAT)