lvs群集在企业网中的应用(1)

一:群集的概念

      群集由通过输入/输出系统互联的若干服务器构成。这些服务器连接到存储介质中,由分布资源管理软件(DRM) 进行管理。其组成部分处在不断的改进之中:刀片式服务器,快速InfiniBand I/O技术和更为复杂的DRM软件,这些部分组合在一起,使得群集成为IT经理们的实用工具。

     主要的应用

服务器群集技术最主要的应用即在于网络负载平衡的功能。 网络负载平衡使用两台或更多台一起工作的主机计算机组成的群集,为服务器提供了高可用性和高伸缩性。Internet 客户端使用一个 IP 地址或一组地址访问群集。客户端无法区别群集和单一服务器。服务器应用程序并不表明它们是在群集上运行的。但是,网络负载平衡群集与运行单个服务器应用程序的单个主机有很大的区别,因为即使在某个群集主机发生故障的情况下,它也可以提供不间断服务。群集对客户端请求的响应也比单个主机快。

如果某个主机发生故障或脱机,则网络负载平衡通过将传入的网络通信重定向到工作的群集主机,从而带来了高可用性。连到脱机主机的现有连接将丢失,但是 Internet 服务仍然是可用的。在多数情况下(例如,就 Web 服务器而言),客户端软件可以自动重试失败的连接,而且客户端在接收响应时,只有数秒钟的延迟。 网络负载平衡通过在分配给网络负载平衡群集的一个或多个虚拟 IP 地址(群集 IP 地址)间分配传入的网络通信,从而带来了可变化的性能。然后,群集中的主机同时对不同的客户端请求甚至来自同一客户端的多个请求做出响应。例如,Web 浏览器可以从网络负载平衡群集中的不同主机获得所有单张网页中的多幅图像。这就提高了处理速度,并缩短了对客户端做出响应的时间。

网络负载平衡使得单个子网上的所有群集主机可以同时检测群集 IP 地址的传入网络通信。在每个群集主机上,网络负载平衡驱动程序充当群集适配器驱动程序和 TCP/IP 堆栈间的过滤器,以便在主机间分配通信。

    群集的算法与原理

网络负载平衡采用一种完全分布式的算法,根据传入客户端的 IP 地址和端口,以统计方式将其映射到群集主机。此进程的发生不需要主机间进行任何通信。当发现到达的数据包时,所有主机同时执行这种映射,以快速确定哪个主机应当处理这个程序包。这种映射一直保持不变,直到群集主机数发生更改时为止。与集中式负载平衡应用程序相比,网络负载平衡筛选算法处理数据包的效率更高,因为前者必须修改和重新传送数据包。

网络负载平衡通过以下方式,控制从 Internet 客户端到群集中选定主机的 TCP 和 UDP 通信的分配:配置好网络负载平衡后,群集中的所有主机都接收传到群集 IP 地址的传入客户端请求。网络负载平衡筛选传到指定 TCP 和 UDP 端口的传入数据报,之后这些数据报才会到达 TCP/IP 协议软件。网络负载平衡在 TCP/IP 内管理 TCP 和 UDP 协议,从而逐个端口地控制其操作。

在多播模式下,网络负载平衡可以提供 Internet 组管理协议 (IGMP) 支持,限制交换流。除了指定端口的 TCP 和 UDP 通信以及多播模式中的 IGMP 通信,网络负载平衡不控制任何传入 IP 通信。它并不筛选其他 IP 协议(例如,ICMP 或 ARP),但是下述情况除外。请注意,当使用群集 IP 地址时,应当会看到来自特定点对点 TCP/IP 应用程序(例如 ping)的重复响应。如果需要,这些应用程序可以将专用 IP 地址用于每个主机,以避免这种操作。

为了协调其操作,网络负载平衡主机在群集内周期性地交换检测信号(详细信息,请参阅Internet 组管理协议 (IGMP))。IP 多播允许主机监控群集状态。当群集状态更改时(例如当主机发生故障、离开或加入群集时),网络负载平衡将调用称作“聚合”的过程,在该过程中,主机交换数量有限的消息,以确定群集的新的一致状态,并为主机指定最高主机优先级,即作为新的默认主机。当所有群集主机在正确的新群集状态下取得一致后,它们将在 Windows 事件日志中记录聚合的完成。完成这个过程一般用不了 10 秒种。

在聚合过程中,其余主机继续处理传入的网络通信。对工作主机的客户端请求不受影响。完成聚合后,将以故障主机为目标的通信重新分发给仍在工作的主机。经过负载平衡后的通信将在仍在工作的主机间得到重新划分,以便尽可能好地实现特定 TCP 或 UDP 端口的新的负载平衡。

如果向群集添加了一个主机,则聚合允许该主机接收自己那份经过负载平衡的通信。群集的扩展不影响正在进行的群集操作,而且其实现过程对 Internet 客户端和服务器应用程序都是透明的。但是,当选择了“客户端相似性”时,它可能影响跨多个 TCP 连接的客户端会话,因为可能会将客户端重映射到连接间的不同群集主机。有关相似性的详细信息,请参阅网络负载平衡和状态可控的连接。

网络负载平衡假定,主机在群集内正常工作的时间与它同其他群集主机交换检测信号的时间一样长。如果在多次检测信号交换中,其他主机都没有接收到来自任何成员的响应,则它们将启动聚合,重新分发本来应由失败主机处理的负载。

 

二,LVS

       LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,可以实现LINUX平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。

简介

      LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。章文嵩博士目前工作于中国国家并行与分布式处理重点实验室,主要从事集群技术、操作系统、对象存储与数据库的研究。

     宗旨

使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.

很好的可伸缩性(Scalability)

很好的可靠性(Reliability)

很好的可管理性(Manageability)。

可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。

实验案例:利用lvs高可用性网络实现LB群集

实验拓扑

2012-10-12_110811

操作细则

real server 1:

先配置eth0地址为192.168.145.200
对arp内核参数进行调整 调整后才能加载虚拟端口IP
[root@mail ~]# echo "net.ipv4.conf.eth0.arp_announce = 2">>/etc/sysctl.conf
[root@mail ~]# echo "net.ipv4.conf.all.arp_announce = 2">>/etc/sysctl.conf
[root@mail ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1">>/etc/sysctl.conf
[root@mail ~]# echo "net.ipv4.conf.all.arp_ignore = 1">>/etc/sysctl.conf
[root@mail ~]# sysctl –p         使内核配置生效

配置lo:0地址

 2012-10-10_163950
[root@mail ~]# route add  -host 192.168.145.101 dev lo:0特定路由
[root@mail ~]# vim /etc/httpd/conf/httpd.conf
设置监听端口为80 此处为默认配置
[root@mail html]# cd /var/www/html/
[root@mail html]# echo "jx1" > index.html

第二台
[root@mail ~]# scp 192.168.145.200:/etc/sysctl.conf /etc/ 拷贝文件因为使用了客户端工具所以可以方便拷贝
[root@mail ~]# sysctl -p
[root@localhost html]# route add -host 192.168.145.101 dev lo:0
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# echo "jx2" > index.html
[root@localhost html]# ifconfig
2012-10-10_164012

derictor

[root@mail ~]# mkdir /mnt/cdrom/
[root@mail ~]# mount /dev/cdrom /mnt/cdrom/
[root@mail ~]# cd /mnt/cdrom/Cluster
[root@mail Cluster]# rpm -ivh ipvsadm-1.24-10.i386.rpm
[root@station Cluster]# service ipvsadm save  
[root@station Cluster]# service ipvsadm start
[root@station Cluster]# ipvsadm -A -t 192.168.145.101:80 -s rr 设置调度算法
[root@station Cluster]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.200 -g
[root@station Cluster]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.201 -g
测试图

2012-10-10_180925

刷新一次后

2012-10-10_180946

2012-10-10_181141

NFS (实现共享网络资源)
[root@mail ~]# mkdir /public
[root@mail ~]# vim /etc/exports

2012-10-10_205758
[root@mail ~]# service nfs start
[root@mail ~]# chkconfig nfs on
[root@mail ~]# exportfs -rv导出共享资源
[root@mail ~]# cd /public/
[root@station public]# touch index.html
2012-10-10_211643

然后进入server删除文件
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# rm index.html
[root@localhost html]# mount 192.168.145.202:/public /var/www/html/挂载
第二台server同样配置
测试图
2012-10-10_211104

测试自动挂载
[root@station ~]# umount /var/www/html/
[root@station ~]# mount -a
[root@station ~]# mount
[root@station ~]# vim /etc/auto.master

2012-10-10_214534
[root@station ~]# cp -p /etc/auto.misc /etc/auto.nfs
[root@station ~]# vim /etc/auto.nfs
2012-10-10_215549
[root@station ~]# service autofs restart
另一台同样配置

测试

2012-10-10_215322

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文出自 “心欲无痕” 博客,谢绝转载!

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