基于Linux的服务器群集方案


群集是用两个或更多的系统通过网络一起(Clustering)() 工作 提供相同服务或实现相同目的 在外面看来 整个群 集表现为一个单一的系统 群集用来提高服务的稳定性高( 可用性 或扩大网络服务的处理能力可扩展性 主要包括)() 个方面 科学计算 负载均衡和高3(Scientific Computing) 可用性系统 用于科学计算的群集技术(High-Availability) 如等要求有千兆级的网络带宽及应用程序的并行(Beowulf) 编程用 等 应用面也较窄 由于条件所限 我(PVMMPI) 们主要研究了负载均衡和可用性技术在服务器群中的应Web 用 并结合两种技术的优势 设计了一种同时具有负载均衡 能力 可扩展性和高可用性的解决方案 系统体系结构设计1 图群集方案示意图1 该群集系统主要由主 备份负载均衡服务器 实际服务 器 局域网和串行线路组成如图(1) 负载均衡服务器是外界访问整个群集系统的唯一入口 它配置有两个地址 一个是申请到的合法供访IPIP,Internet 问群集系统 另一个是内部 和内部机群连接在同一个IP 上 由负载均衡服务器根据适当的策略和算法将来自LAN 的请求转发给实际服务器 扩充群集系统的服务器Internet 数目主要是在负载均衡服务器上加入相应的请求转发规则 具有极强的可扩展性 备份负载均衡服务器监测主负载均衡服务器的运行情 况 并且在主负载均衡服务器发生故障时实施任务接管 当 主负载均衡服务器的故障修复后 重新接管回请求分配的任 务 我们将主 副负载均衡服务器用串型线相连 专门传输 故障监测信号 克服了用其它方案用同一网络同时处理数据 和检测信号时可能出现的单点故障问题(SPOF) 同时 在负载均衡服务器上运行的故障监测程序 对实 际服务器本身或运行于其上的服务进程进行监测 并在实际 服务器发生故障时取消该服务器在转换规则表中的对应项 目 停止对它转发客户的请求 当实际服务器的故障得到修 复以后再将其加入转发表中 通过以上措施 大大提高了系统的可靠性 提供不间断 服务的能力 实际服务器真正对客户的请求提供服务 如WWW 等FTPTelnet 应该指出 主 备份负载均衡服务器也可以同时作为实 际服务器的成员提供网络服务 各实际服务器之间采用内容 同步技术保持服务内容的一致性 工作原理2 负载均衡机制2.1 请求转换协议2.1.1 下有种网络请求转换协议 它们是网络地址转Linux3 换 隧道和直接路由 负责将客户对负载均衡服务器的请IP 求转发给实际服务器 网络地址转换(1)NAT(Network Address Translation) 用户通过负载均衡服务器提供的和端口访问 负载均IP 衡服务器接收来自客户的连接请求 并根据特定算法将请求 转发给群集系统中的实际服务器 转发时 将请求包的目的 目的端口地址改写成实际服务器的对应地址 同时维护IP/ 作者简介 姚耀文 男 副教授 主研方向 分布式计(1946) 算系统 茹建斌 缪炯烨 硕士 收稿日期 2000-09-01 基于的服务器群集方案Linux 姚耀文 茹建斌 缪炯烨 华南理工大学计算机系 广州 510640 摘要 集群技术是提高服务器系统计算能力 可扩展性和可用性的一种重要方法 提出一种基于集群方案 并对其原理和构建过程进Linux 行了讨论 关键词 群集技术 负载均衡 可用性 可扩展性 Linux A Scheme of Linux-based Server Cluster YAO YaowenRU JianbinMIAO Jiongye (Dept.of Computer Science & Engineering,South China University of Technology,Guangzhou 510640) AbstractCluster technology is an important approach to get high computing capability,scalability and availability.This paper introduces a Linux-based cluster method.The mechanism and realization are also discussed. Key wordsClusterLoad balanceAvailabilityScalabilityLinux 第27卷 第4期 Vol.27 4 计 算 机 工 程 Computer Engineering 2001年4月 April 2001 工程应用技术与实现 中图分类号 TP393.02 文章编号 1000 3428(2001)04 0139 03 文献标识码 A 139 实际服务器1 实际服务器3实际服务器2 客户机 Internet 主负载均衡服务器 rsync LAN Mon 192.168.1.2 Fake 备份负载均衡服务器 HeatBeat RS232 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.1 Mon 202.38.212.22 一张连接表 记录所有已经建立的连接 进一步的数据包传 输将根据该连接表进行 当连接终止或超时后 从连接表中 删除响应记录 负载均衡服务器也负责实际服务器对客户端 请求的回应的转发 只需要负载均衡服务器具有合法NAT 的地址 其它服务器是通过它进行地址转换而被访问 可IP 以使用保留如IP(:192.168.*.*) 优点 基于 仅需要一个合法的 实际服务器可为任TCP/IPIP 何操作系统 缺点 可扩展性有限 当并发连接数比较大时 负载均衡服务 器成为系统的瓶颈 各连接分享负载均衡服务器的带宽 隧道(2)IP(IP Tunneling) 隧道也称为封装 即用包封装包将它应用在IPIPIPIP 群集技术中 由负载均衡服务器在请求到达时先选定实际服 务器 生成新的头然后用它封装请求 并将请求转发给IP 实际服务器 而实际服务器则去掉封装的头并根据实际IP 请求包的源地址直接响应客户端 不再经过负载均衡服务IP 器的转发 用这种方法时也在负载均衡服务器中维护一张活 动连接表 作用和中相同NAT 优点 负载均衡服务器只处理请求 不转发实际服务器的响 应 大幅度减轻负载均衡服务器的负荷 负载均衡服务器和实际服 务器可以在不同局域网中 缺点 实际服务器必须支持隧道技术IP 直接路由(3)(Direct Routing) 实际服务器和负载均衡服务器互连的网络设备取相同的 地址 它们的设备都要配置成该地址 用户IPLoopbackIP 请求包到达后 负载均衡服务器选择实际服务器 并根据实 际服务器的地址修改请求包的地址 然后将数据MACMAC 包发出到内部的总线网 和该地址相同的实际服务器MAC 会接受该请求包 实际服务器将响应结果直接送回客户端 无需再次参与Load Balancer 优点 和隧道技术一样 并且不用包封装的开销IPIP 缺点 必须修改内核禁止的负载均衡服务器和loopbackARP 实际服务器必须在同一广播网络内 结论 根据我们的经验 容易配置 使用灵活NAT 要求较低 而隧道和直接路由效率高 配置较难 对操作IP 系统有一定要求 其中直接路由技术还要求给操作系统用补 丁禁止ARP 负载平衡算法2.1.2 下现有种负载平衡算法 分别是循环轮转法Linux4 带权重的循环轮转法 最少连接数法和带权重的最少连接数 法 此外 还提供了添加用户自定义算法的方法 使Linux 用户能够根据需要编写平衡算法模块 并加载该算法 循环轮转法用循环轮换的方法则将(1)(Round-Robin) 来自外部的请求依次分配给不同的服务器 对所有服务器平 等对待 类似于扑克牌的发牌方式 带权重的循环轮转法比较(2)(Weighted Round-Robin) 各个服务器的配置情况 并给每台服务器的处理能力指定一 整数类型的权重该整数量值用来标志相应服务器处理用户, 请求的能力 在轮换过程中 处理能力大的服务器将被给予 较多的请求 一段较长时间内各服务器处理的请求数趋向于 各自权重的比例 该算法仍然是静态的 有可能导致负载动 态失衡 最少连接数法请求到达时根据(3)(Least-Connection) 当前各台实际服务器处理的连接数目 将请求分配给连接数 最少的服务器 是一种动态算法 适合集群中实际服务器性 能接近的情况 带权重的最少连接数法(4)(Weighted Least-Connection) 在最少连接数法中加入服务器处理能力因素 权重的使 用和带权重的循环轮转相同 结论 种算法中 带权重的最小连接数法既考虑了当4 前请求处理分配的动态情况 又包含了各台服务器的处理能 力这一因素 因此是者中最优的 实验的结果也证明了这4 一点 因此建议用这种算法 但是 这种算法并没有考虑到 不同类型的请求所耗用的服务器资源和网络带宽不同 比 如 单纯的请求和一个大文件的下载显然是不同HTMLFTP 的 进一步的算法改进应当将不同的类型请求分别赋予权 重 才比较全面 可用性措施2.2 可用性是指当群集系统中的一个系统发生故障时 集群 软件迅速反应 将该系统的任务分配到集群中其它正在工作 的系统上执行 提供永不停机的服务 常(Non-stop)Linux 用的可用性技术包括故障监测和任务接管两个方面 在负载均衡服务器上运行监视各实际服务器Mon(fping. 代理及其服务 等代monitor)(HTTP.monitorFTP.Monitor 理的状态 若某台实际服务器失败 或服务进程失败 则) 自动移去向该服务器转发请求的规则 当该服务器的故障排 除后 负载均衡服务器会自动检测到 并重新加入规则 提 供服务 我们用编写了一个触发过程供的侦错代理PerlMon 调用 以自动完成添加 删除故障节点的过程 为了避免负载均衡服务器单点失败 指定一台服务器作 为备份负载均衡服务器 在主 备份负载均衡服务器上同时 运行代理 由备份负载均衡服务器侦听主负载均Heartbeat 衡服务器通过串行线发来的类似于的周期性"I'm Live" 消息 如果超过特定的时间没有该消息到达 则Heartbeat 认为主负载均衡服务器失败 备份负载均衡服务器的 代理自动激活软件包中的接管软件HeartbeatHeartbeatIP 用欺骗的方法接管主负载均衡服FakeFakeIP(IP Spoofing) 务器的地址 新请求将根据寻址到备份负载均衡服务IPIP 器 由它请求分配的任务 当主负载均衡服务器故障排除 正常运转后重新发送周期性消息 备份负载均衡Heartbeat 服务器检测到该消息时自动停止的运行 欺骗停止FakeIP 主负载均衡服务器重新负责请求分配工作 内容同步技术2.3 各实际服务器的服务内容如 站点内容必(WebFTP) 须保持同步才具有实际应用价值 最简单的方法是用相rcp 互之间定时复制 但这种大量复制文件的做法会导致网络拥 塞 我们试用了 它使用循环校验算法 可以在服务Rsync 器之间仅复制存储块或文件视配置而定的不同部分 大大() 提高了复制的效率 减少了传输量 的校验算法还支Rsync 持磁盘故障后的数据恢复 实现过程3 硬件平台3.1 用一台赛扬机器作500(256MB RAM,7200R/s Harddisk) 为主负载均衡服务器 一台作为备份负P200(64MB RAM) 140 载均衡服务器 其他台机作为实际服务器 同时 也将3PC 主 备份负载均衡服务器作为实际服务器图(1) 在实现故障检测的过程中使用串行线作为主 备份负载 均衡服务器间的检测线路 该线路可以自己制作 接线顺序 如下 将其连接在串口上 如图12 图串行线接线图2 软件平台3.2 操作系统均安装 在主 备份负载均RedHat Linux6.2 衡服务器上安装软件包 具体的安装和配置过程Heartbeat 解包后的文档里有详细描述Readme 负载均衡服务器的配置3.2.1 用自带的设置各服务器的角色Redhat Linux6.2ipvsadm 和请求转发协议及算法 用封装 带权重的最少连接法IP 负载均衡服务器也作为实际服务器 ipvsadm -A -t 202.38.212.22:80 -s wls ipvsadm -A -t 202.38.212.22 -R 127.0.0.1 ipvsadm -a -t 202.38.212.22:80 -R 192.168.1.3 -i -w 1 ipvsadm -a -t 202.38.212.22:80 -R 192.168.1.4 -i -w 2 ipvsadm -a -t 202.38.212.22:80 -R 192.168.1.5 -i -w 2 ipvsadm -a -t 202.38.212.22:80 -R 192.168.1.2 -i -w 2 触发程序3.2.2 Mon 实际服务器失效 重新加入时被激活 自动配置转Mon 发规则的核心程序可为 #!/usr/bin/perl # mon.alert : alert/trigger for mon. use Getopt::Std; getopts ("s:g:h:t:l:P:V:R:W:F:u"); $ipvsadm = "/sbin/ipvsadm"; $protocol = $opt_P; $virtual_service = $opt_V; $remote = $opt_R; if ($opt_u) { $weight = $opt_W; if ($opt_F eq "nat") { $forwarding = "-m"; } elsif ($opt_F eq "tun") { $forwarding = "-i"; } else { $forwarding = "-g"; } if ($protocol eq "tcp") { system("$ipvsadm -a -t $virtual_service -r $remote -w $ weight $forwarding"); } else { system("$ipvsadm -a -u $virtual_service -r $remote -w $ weight $forwarding"); } } else { if ($protocol eq "tcp") { system("$ipvsadm -d -t $virtual_service -r $remote"); } else { system("$ipvsadm -d -u $virtual_service -r $remote"); }}; 将该程序放在下并在文件中/usr/lib/mon/alert.dmon.cf 的 子项调用它即可完成自动配置转发的过alertupalert 程 的配置3.2.3 Heartbeat 接管软件已经包含在中无须单独安IPfakeheartbeat 装 首先在主 备份负载均衡服务器上创建/etc/ha.d/ ha. 文件如下conf keepalive 2 认为主负载均衡服务器失效的时间期限秒deadtime 10 # () hopfudge 1 udpport 1001 使用串行口udp ttyS0 # 主负载均衡服务器的node PriLBS #hostname 备份负载均衡服务器的node SecLBS #hostname 文件的内容/etc/ha.d/haresourceslvs1.domain.com 10.0.0.3 lvs mon 内容同步 的配置3.2.4 rsync 在各服务器之间使用将要同步复制的内容共享Samba 主目录 在中设好权限等选项 并加(www)/etc/rsyncd.conf 入 [sambawww] path = /public_html/samba 在各服务器的中加入一行 /etc/services rsync 873/tcp 在中加入/etc/inetd.conf:rsync stream tcp nowait root / usr/bin/rsync rsyncd --daemon 结论4 下正在进行的的项目很多 我们所采用的LinuxCluster 技术都是开放源码的技术 用这种思路构建的群集技术具有 性能价格比方面的优势 但至今仍然是不成熟的 如各种/ 可扩展性和可用性措施的协同与商业化的技术相比Cluseter 还不完美 有必要进行进一步的研究 参考文献 可扩展并行计算技术 结构与编程北京1 Hwang Kai,Xu Zhiwei.().: 机械工业出版社 ,2000 2 Linux High-availability Project Document.http://www.linux-ha. org 3 Linux Scalability Project Document.http://www.citi.umich.edu/ projects/linux -scalability 针针针针25 9 9 25 2 TD 3------------2 RD 3 3 RD 2------------3 TD 2 4 RTS 7------------8 CTS 5 5 CTS 8------------7 RTS 4 7 GND 5------------5 GND 7 6 DSR 6------------4 DTR 20 8 DCD 1------------1 DCD 8 20 DTR 4------------6 DSR 6 局域网 主负载 ttyS0ttyS0 备份负载 均衡 服务器 均衡 服务器 141
还剩2页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 20 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

qiailin

贡献于2011-03-04

下载需要 20 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf