Linux 2.6 内核上一步一步配置LVS(Linux Virtual Server)
Linux Virtual Server(LVS)的方法,网上虽然是能搜到很多,但无外外乎是那几个版本。这些版本大都只是写了如何这样,而没有为什么这样配置,还有很多 基础性的东西是默认读者已知了,就没有讲明白。
最近成功在学校机房配置了一台调度器(Director)、两台(Real Server)的集群,用一台客户机来访问。我的配置有比较高的可实现性,所有计算机都在同一个局域网内,不用配置网关。如果这样的LVS配置成功 了,之后配置更有有实用性的集群也不难了。
本文参考了LVS中文站点上的《LVS在Fedora Core5上的配置指南(以Linux、FreeBSD、Solaris系统为 RealServer)》(http://zh.linuxvirtualserver.org/node/272),原文是一篇HOW TO性质的文章,并没有对一些原理进行阐述。本文在此基础上对一些细节的部分进行了说明(甚至是很基础的地方,这些地方对于理解整个LVS系统有着重要的 作用),并进行了一些改动,使得更具可实现性(所有机器都在同一网段),文中亦会说明要如何将其改为可真正派上用场的集群服务。
我假设你在此之前已经读过了LVS的基本介绍,知道其用途和基本原理。如果你还没有看过,请看一下LVS的官方站点 (http://www.linuxvirtualserver.org,http://zh.linuxvirtualserver.org)。本文所 述采用的是通过直接路由实现虚拟服务器(VS/DR)的方法,这里先引述官方站点对此的介绍,并标出重点、加上注释。
注释1:VIP地址为调度器和服务器(RealServer)把共享,那会不会引起IP冲突?答案是:不会。正因为后面所说的,“调度器配置的VIP地址 是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的”。在调度器上,VIP 与其局域网内IP对外都是可见的;在服务器上,对外可见的是其在局域网上的IP(调度器调度的时候使用的IP),而在服务器上,VIP的性质就像是平常我 们所熟知的127.0.0.1的性质一样,它是一个loopback device,他只在网络层之上可见(包括网络层),这样的loopback device用来模拟网络适配器的行为。就算没有装网卡,127.0.0.1与VIP的这样IP都是可用的。
那为什么要在服务器上还放上一个VIP呢?
因为当只修改了MAC地址的链路层帧发到服务器的链路层时(详情请见注释2),要想再向上提交到应用层去让HTTP等服务器程序处理,必须再经过网络层、 传输层等,而要通过这些层是要经过目标IP的检测的。
就像你要去参加一个婚礼,到门口,接待人员问你要参加谁的婚礼,人家这里明明举行的是李湘跟王老五的婚礼,你说你要参加谢霆锋跟张柏芝的婚礼,接待人员一 定是不让你进去的。
那我就是又要说我要参加谢霆锋跟张柏芝的婚礼,以要进入李湘跟王老五的婚礼现场,怎么办?那就在李湘跟王老五的婚礼现场里安排一个自己人,你到时候对他 说:“我要参加谢霆锋跟张柏芝的婚礼”,他会意地笑一声,就会帮你在李湘跟王老五的婚礼现场安排座位,让你在里面享受各种服务。
服务器里的VIP就有这个自己人的性质,他对外不可见,当请求包到达网络层以上的部分里,就可以看到VIP,从而一路上去,到达应用层,享用HTTP等服 务。
原理如图(IPVS有没有到网络层?)
注释2:在这里可能有人会产生疑问,修改MAC地址就能让请求包发往Real Server上吗,不用改目标IP地址?答案是:是的。因为交换机是一个链路层的设备,链路层的传送单位是帧,他可不管网络层的包里放的是什么IP地址 (网络层的ipv4包已经被封装在帧里)。当Direcotr把存有客户机的请求包的那帧的MAC地址改成某台Real Server的之后,就发出去,到交换机之后,交换机查找MAC地址与端口的对应表(端口MAC地址对应拥有些MAC地址的计算机),将这一帧发往与帧上 MAC地址对应的端口,之后就发到计算机的链路层,如果MAC地址与网卡上的匹配,再向上层发送,直至应用层。
现在俺们来一步一步地在局域网内配置LVS。
四台计算机按如上方式插在交换机上,分别按如下的方式配置四台计算机。
Client
当重启时,上面的配置将会失效。如果要长期保留这个配置,请更改/etc/sysconfig/network-scripts/ifcfg-eth0文 件。具体步骤请参考DIRECTOR的配置。
Director
首先安装IPVSADM,就是LVS的管理工具。REDHAT的用户可以到rpm.pbone.net上搜索ipvsadm,找到和自己系统对应的安装 包,在安装文件夹里执行如下命令:
*.rpm代表rpm安装包的文件名。
当IPVSADM安装完成后,就可以配置DIRECTOR了,使用如下命令:
每一行的命令信息可以查看IPVSADM的MAN。如果是要配置流媒体的服务器的话,应该打开UDP的包转发。
下面配置网卡:
首先新建配置文件/etc/sysconfig/network-scripts/ifcfg-eth0:0如下:
上面配置的是DIRECTOR的虚拟IP。
配置文件/etc/sysconfig/network-scripts/ifcfg-eth0如下:
上面配置的是DIRECTOR的真实IP。
再执行下面的命令以使上面对网络的配置生效
RS1(RealServer1)的配置
Linux Realserver 配置的关键之一在于关闭 arp,这要配置/etc/sysctl.conf如下
在/etc/sysconfig/network-scripts/ifcfg-eth0 中配置 ip 地址和网关。
新建VIP 的网卡配置文件为/etc/sysconfig/network-scripts/ifcfg-lo:0。
再执行下面的命令以使上面对网络的配置生效
RS2(RealServer2)的配置
Linux Realserver 配置的关键之一在于关闭 arp,这要配置/etc/sysctl.conf如下
在/etc/sysconfig/network-scripts/ifcfg-eth0 中配置 ip 地址和网关。
新建VIP 的网卡配置文件为/etc/sysconfig/network-scripts/ifcfg-lo:0。
再执行下面的命令以使上面对网络的配置生效
至此,一个LVS就配置好了,我们只要分别在Director,RS1,RS2的/var/www/html/文件夹下分别放入三个内容不同的名为 index.htm的文件,然后在Client的浏览器中输入http://192.168.11.200,回车,不停的刷新,就会发现,有时看到的是放 在RS1上的index.htm,有时看到的是RS2上的index.htm,而不会看到director上的index.html。因为发现 198.168.11.200的80端口的http请求报文都被转发到到rs1或rs2上。
大功告成!
- 最新评论