首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 冲浪宝典-> 邮件工具
linux操作系统下的集群原理及实战经历_linux教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

  一 集群和Linux上的集群解决方案

  集群系统(Cluster)主要解决下面几个问题:

  高可靠性(HA)

  利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。

  高性能计算(HP)

  即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。

  负载平衡

  即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。

  基于Linux的集群解决方案可谓百花齐放。在实际应用中,最常见的情况是利用集群解决负载平衡问题,比如用于提供WWW服务。在这里主要展示如何使用LVS(Linux Virtial Server)来实现实用的WWW负载平衡集群系统。

  二 LVS简介

  LVS是章文嵩博士发起和领导的优秀的集群解决方案,许多商业的集群产品,比如RedHat的Piranha,TurboLinux公司的Turbo Cluster等,都是基于LVS的核心代码的。在现实的应用中,LVS得到了大量的部署,请参考http://www.linuxvirtualserver.org/deployment.html。关于Linux LVS的工作原理和更详细的信息,请参考http://www.linuxvirtualserver.org

  三 LVS配置实例

  通过Linux LVS,实现WWW,Telnet服务的负载平衡。这里实现Telnet集群服务仅为了测试上的方便。

  LVS有三种负载平衡方式,NAT(Network Address Translation),DR(Direct Routing),IP Tunneling。其中,最为常用的是DR方式,因此这里只说明DR(Direct Routing)方式的LVS负载平衡。为测试方便,4台机器处于同一网段内,通过一交换机或者集线器相连。实际的应用中,最好能将虚拟服务器vs1和真实服务器rs1, rs2置于于不同的网段上,即提高了性能,也加强了整个集群系统的安全性。

  服务器的软硬件配置

  首先说明,虽然本文的测试环境中用的是3台相同配置的服务器,但LVS并不要求集群中的服务器规格划一,相反,可以根据服务器的不同配置和负载情况,调整负载分配策略,充分利用集群环境中的每一台服务器。

  这3台服务器中,vs1作为虚拟服务器(即负载平衡服务器),负责将用户的访问请求转发到集群内部的rs1,rs2,然后由rs1,rs2分别处理。client为客户端测试机器,可以为任意操作系统。 4台服务器的操作系统和网络配置分别为:


vs1: RedHat 6.2, Kernel 2.2.19 
vs1: eth0 192.168.0.1 
vs1: eth0:101 192.168.0.101 
rs1: RedHat 6.2, Kernel 2.2.14 
rs1: eth0 192.168.0.3 
rs1: dummy0 192.168.0.101 
rs2: RedHat 6.2, Kernel 2.2.14 
rs2: eth0 192.168.0.4 
rs2: dummy0 192.168.0.101 
client: Windows 2000 
client: eth0 192.168.0.200

  其中,192.168.0.101是允许用户访问的IP。
  虚拟服务器的集群配置
  大部分的集群配置工作都在虚拟服务器vs1上面,需要下面的几个步骤:

  重新编译内核。

  首先,下载最新的Linux内核,版本号为2.2.19,下载地址为:http://www.kernel.org/,解压缩后置于/usr/src/linux目录下。

  其次需要下载LVS的内核补丁,地址为:http://www.linuxvirtualserver.org/software/ipvs-1.0.6-2.2.19.tar.gz。这里注意,如果你用的Linux内核不是2.2.19版本的,请下载相应版本的LVS内核补丁。将ipvs-1.0.6-2.2.19.tar.gz解压缩后置于/usr/src/linux目录下。

  然后,对内核打补丁,如下操作:


[root@vs2 /root]# cd /usr/src/linux 
[root@vs2 linux]# patch -p1 < ipvs-1.0.6-2.2.19/ipvs-1.0.6-2.2.19. 
patch

  下面就是重新配置和编译Linux的内核。特别注意以下选项:


1 Code maturity level options---> 
* [*]Prompt for development and/or incomplete code/drivers 
2 Networking部分: 
[*] Kernel/User netlink socket 
[*] Routing messages 
<*> Netlink device emulation 
* [*] Network firewalls 
[*] Socket Filtering 
<*> Unix domain sockets 
* [*] TCP/IP networking 
[*] IP: multicasting 
[*] IP: advanced router 
[ ] IP: policy routing 
[ ] IP: equal cost multipath 
[ ] IP: use TOS value as routing key 
[ ] IP: verbose route monitoring 
[ ] IP: large routing tables 
[ ] IP: kernel level autoconfiguration 
* [*] IP: firewalling 
[ ] IP: firewall packet netlink device 
* [*] IP: transparent proxy support 
* [*] IP: masquerading 
--- Protocol-specific masquerading support will be built as modules. 
* [*] IP: ICMP masquerading 
--- Protocol-specific masquerading support will be built as modules. 
* [*] IP: masquerading special modules support 
* IP: ipautofw masq support (EXPERIMENTAL)(NEW) 
* IP: ipportfw masq support (EXPERIMENTAL)(NEW) 
* IP: ip fwmark masq-forwarding support (EXPERIMENTAL)(NEW) 
* [*] IP: masquerading virtual server support (EXPERIMENTAL)(NEW) 
[*] IP Virtual Server debugging (NEW) <--最好选择此项,以便观察LVS的调试信息 
* (12) IP masquerading VS table size (the Nth power of 2) (NEW) 
* IPVS: round-robin scheduling (NEW) 
* IPVS: weighted round-robin scheduling (NEW) 
* IPVS: least-connection scheduling (NEW) 
* IPVS: weighted least-connection scheduling (NEW) 
* IPVS: locality-based least-connection scheduling (NEW) 
* IPVS: locality-based least-connection with replication scheduling 
(NEW) 
* [*] IP: optimize as router not host 
* IP: tunneling 
IP: GRE tunnels over IP 
[*] IP: broadcast GRE over IP 
[*] IP: multicast routing 
[*] IP: PIM-SM version 1 support 
[*] IP: PIM-SM version 2 support 
* [*] IP: aliasing support 
[ ] IP: ARP daemon support (EXPERIMENTAL) 
* [*] IP: TCP syncookie support (not enabled per default) 
--- (it is safe to leave these untouched) 
< > IP: Reverse ARP 
[*] IP: Allow large windows (not recommended if <16Mb of memory) 
< > The IPv6 protocol (EXPERIMENTAL)
  上面,带*号的为必选项。然后就是常规的编译内核过程,不再赘述。
  在这里要注意一点:如果你使用的是RedHat自带的内核或者从RedHat下载的内核版本,已经预先打好了LVS的补丁。这可以通过查看/usr/src/linux/net/目录下有没有几个ipvs开头的文件来判断:如果有,则说明已经打过补丁。

  编写LVS配置文件,实例中的配置文件如下:


#lvs_dr.conf (C) Joseph Mack mack@ncifcrf.gov 
LVS_TYPE=VS_DR 
INITIAL_STATE=on 
VIP=eth0:101 192.168.0.101 255.255.255.0 192.168.0.0 
DIRECTOR_INSIDEIP=eth0 192.168.0.1 192.168.0.0 255.255.255.0 192.168.0. 255 
SERVICE=t telnet rr rs1:telnet rs2:telnet 
SERVICE=t www rr rs1:www rs2:www 
SERVER_VIP_DEVICE=dummy0 
SERVER_NET_DEVICE=eth0 
#----------end lvs_dr.conf------------------------------------

  将该文件置于/etc/lvs目录下。

  使用LVS的配置脚本产生lvs.conf文件。该配置脚本可以从http://www.linuxvirtualserver.org/Joseph.Mack/configure-lvs_0.8.tar.gz 单独下载,在ipvs-1.0.6-2.2.19.tar.gz包中也有包含脚本configure的使用方法:


[root@vs2 lvs]# configure lvs.conf

  这样会产生几个配置文件,这里我们只使用其中的rc.lvs_dr文件。修改/etc/rc.d/init.d/rc.local,增加如下几行:


echo 1 > /proc/sys/net/ipv4/ip_forward 
echo 1 > /proc/sys/net/ipv4/ip_always_defrag 
# 显示最多调试信息 
echo 10 > /proc/sys/net/ipv4/vs/debug_level

  配置NFS服务。这一步仅仅是为了方便管理,不是必须的步骤。假设配置文件lvs.conf文件放在/etc/lvs目录下,则/etc/exports文件的内容为:


/etc/lvs ro(rs1,rs2)

  然后使用exportfs命令输出这个目录:


[root@vs2 lvs]# exportfs

  如果遇到什么麻烦,可以尝试:


[root@vs2 lvs]# /etc/rc.d/init.d/nfs restart 
[root@vs2 lvs]# exportfs

  这样,各个real server可以通过NFS获得rc.lvs_dr文件,方便了集群的配置:你每次修改lvs.conf中的配置选项,都可以即可反映在rs1,rs2的相应目录里。 修改/etc/syslogd.conf,增加如下一行: kern.* /var/log/kernel_log。这样,LVS的一些调试信息就会写入/var/log/kernel_log文件中。
  Real Server的配置
  Real Server的配置相对简单,主要是是以下几点:

  配置telnet和WWW服务。telnet服务没有需要特别注意的事项,但是对于www服务,需要修改httpd.conf文件,使得apache在虚拟服务器的ip地址上监听,如下所示:


Listen 192.168.0.101:80

  关闭Real Server上dummy0的arp请求响应能力。这是必须的,具体原因请参见 ARP problem in LVS/TUN and LVS/DR关闭dummy0的arp响应的方式有多种,比较简单地方法是,修改/etc/rc.d/rc.local文件,增加如下几行:


echo 1 > /proc/sys/net/ipv4/conf/all/hidden 
ifconfig dummy0 up 
ifconfig dummy0 192.168.0.101 netmask 255.255.255.0 broadcast 192.168. 0.0 up 
echo 1 > /proc/sys/net/ipv4/conf/dummy0/hidden 
再次修改/etc/rc.d/rc.local,增加如下一行:(可以和步骤2合并) 
echo 1 > /proc/sys/net/ipv4/ip_forward

  四 LVS的测试

  好了,经过了上面的配置步骤,现在可以测试LVS了,步骤如下:

  分别在vs1,rs1,rs2上运行/etc/lvs/rc.lvs_dr。注意,rs1,rs2上面的/etc/lvs目录是vs2输出的。如果您的NFS配置没有成功,也可以把vs1上/etc/lvs/rc.lvs_dr复制到rs1,rs2上,然后分别运行。确保rs1,rs2上面的apache已经启动并且允许telnet。

  然后从client运行telnet 192.168.0.101,如果登录后看到如下输出就说明集群已经开始工作了。(假设以guest用户身份登录)

  [guest@rs1 guest]$-----------说明已经登录到服务器rs1上。

  再开启一个telnet窗口,登录后会发现系统提示变为:

  [guest@rs2 guest]$-----------说明已经登录到服务器rs2上。

  然后在vs2上运行如下命令:


[root@vs2 /root]ipvsadm

  运行结果应该为:


IP Virtual Server version 1.0.6 (size=4096) 
Prot LocalAddress:Port Scheduler Flags 
-> RemoteAddress:Port Forward Weight ActiveConn InActConn 
TCP 192.168.0.101:telnet rr 
-> rs2:telnet Route 1 1 0 
-> rs1:telnet Route 1 1 0 
TCP 192.168.0.101:www rr 
-> rs2:www Route 1 0 0 
-> rs1:www Route 1 0 0

  至此已经验证telnet的LVS正常。然后测试一下WWW是否正常:用你的浏览器查看http://192.168.0.101/是否有什么变化?为了更明确的区别响应来自那个Real Server,可以在rs1,rs2上面分别放置如下的测试页面(test.html):


我是real server #1 or #2

  然后刷新几次页面(http://192.168.0.101/test.html),如果你看到“我是real server #1”和“我是real server #2”交替出现,说明www的LVS系统已经正常工作了。

  但是由于Internet Explore 或者Netscape本身的缓存机制,你也许总是只能看到其中的一个。不过通过ipvsadm还是可以看出,页面请求已经分配到两个Real Server上了,如下所示:


IP Virtual Server version 1.0.6 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port       Forward Weight ActiveConn InActConn
TCP 192.168.0.101:telnet rr
-> rs2:telnet Route 1 0 0
-> rs1:telnet Route 1 0 0
TCP 192.168.0.101:www rr
-> rs2:www Route 1 0 5
-> rs1:www Route 1 0 4

  或者,可以采用linux的lynx作为测试客户端,效果更好一些。如下运行命令:


[root@client /root]while true; do lynx -dump 
http://10.64.1.56/test.html; sleep 1; done

  这样,每隔1秒钟“我是realserver #1”和“我是realserver #2”就交替出现一次,清楚地表明响应分别来自两个不同的Real Server。


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·25m的hotmail免费邮箱申请方法
·用C#下的Raw Socket编程实现网络封包监视-.NET教程,C#语言
·Java JDBC连接的一个例子-JSP教程,Java技巧及代码
·Java Swing入门基础-JSP教程,Java技巧及代码
·Java用户界面本地化实例探索-JSP教程,Java技巧及代码
·有数据绑定、排序、查找功能的ListView(一)-.NET教程,数据库应用
·有线电视3信号放大器特点及常见故障分析
·[ASP.NET]使用C#开发Socket通讯-.NET教程,C#语言
·Session 详解-ASP教程,ASP应用
·ASP.net 2005 Treeview 无限分类非地递归终极解决方案-.NET教程,Asp.Net开发
最新文章
·做google月入一万rmb提示交流_网赚技巧
·英文视频:google adsense技巧视频教程_网赚技巧
·专访51auto创始人:5句话融到4000多万_站长访谈
·站长访谈—sen:骨灰级站长的10年网络生涯_站长访谈
·站长访谈:天涯—曾经的hacker,现在的我_站长访谈
·个人网站如何才能成功?_站长心得
·网站如何获得成功?确定目标是关键_站长心得
·blog广告新创意:review me_站长心得
·利用dns技术解决internet南北互访_站长心得
·googleadsense常用技巧总结_google推广
相关主题
  • linux操作系统上摄像头的使用小技巧_linux教程
  • linux下mysql的一点基本用法_数据库教程
  • linux攻略 dns服务器安装配置方法详细介绍_linux教程
  • linux学习(远程控制跟ip地址配置)_linux教程
  • linux系统下如何加载u盘或移动硬盘_linux教程
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭