如何去建立Linux企业集群

集群不只是一个高可用服务器对,因为集群中的所有节点可以共享进程负载,当一个节点关闭后,所有登陆到该节点的用户不会受到影响,他们可以再次登陆连接到一个正在运转的集群节点上。


10.1 建立一个Linux企业集群的步骤

要建立一个Linux企业集群,你需要做以下一些事情,每一件事情都是本章的描述要点:

确定你要使用哪个NAS服务器

理解内核Netfilter和内核数据包路由的基本原理

学习如何克隆一台Linux机器

确定你的集群命名方案

学习如何将统配置改变应用到所有集群节点

使用一个独立的物理网络建立一个Linux虚拟服务器网络地址转换(LVS-NAT)集群

建立一个LVS直接路由(LVS-DR)集群

安装软件自动移除失效的集群节点

安装软件监视集群

学习如何监视集群节点的性能

学习如何在集群节点和服务器上使用自动化工具更新软件包

确定你要使用哪个统一用户账号认证方法

安装一个支持集群的打印系统

安装一个高可用批处理作业系统

购买集群节点

NAS服务器

如果你的集群将运行传统的依赖于正常的Unix封闭仲裁方法(将在第16章中详细讨论)的关键应用程序,网络附加存储(NAS)服务器将是你集群中最大的性能瓶颈,因为所有文件系统I/O操作将通过NAS服务器进行。

你可以使用本书描述的技术[1]在便宜的硬件上建立你自己的高可用NAS服务器,但是企业级集群应该建立在顶级的NAS设备上,在写操作提交到磁盘之前,即使NAS系统崩溃或电源失效也能够保证提交写操作到永久性RAM(NVRAM)缓存中,并能够保证缓存的完整性。

注意:出于测试目的,你可以使用一个Linux服务器作为NAS服务器,(参考第16章了解关于异步网络文件系统(NFS)操作和为什么你可以在测试环境而不是生产环境仅使用异步NFS的讨论)

内核Netfilter和内核数据包路由

在你建立集群负载调度器之前,需要理解如何改变通过Linux内核传递的数据包的命运,改变通过内核数据包的命运的能力允许你建立一个集群负载调度器,由它分配到跨所有集群节点的入站请求,命令行的工具有iptables、route和ip实用程序,在使用它们建立企业级集群之前,你应该先熟悉这些工具的用法。(参考第2章获取关于这些工具的更多的信息)

克隆一台Linux机器

第4、5章描述了一个使用软件SystemImager克隆Linux机器的方法,它不真实地建立集群节点。

集群命名方案

要使克隆过程自动化,每个节点应该以一个常用字符串跟一个连续的集群节点号开始,例如:第一个集群节点主机名应该是clonode1,第二个应该是clnode2,以此类推。

将系统配置改动应用到所有节点

集群管理员需要知道如何自动地应用系统配置改动到所有集群节点,可以使用SystemImager软件包中的updateclient命令来完成,在集群进入正式生产前,在黄金客户端上使用updateclient命令实际应用一次改动到所有集群节点上。(参考第5章获取更多信息)

建立一个LVS-NAT集群

建立一个Linux虚拟服务器网络地址转换(LVS-NAT)集群将有助于你理解Linux虚拟服务器(LVS)软件是如何工作的,并可以帮助你确保负载调度器为入站连接请求分配集群内的节点。(参考第11章中关于负载均衡的介绍和第12章中关于LVS-NAT的介绍)

建立一个LVS-DR集群

只要你知道如何建立LVS-NAT集群,你就可以将其转换为Linux虚拟服务器直接路由(LVS-DR)集群,将在第13章中详细描述,在关键应用上,基于LVS-DR的企业级集群比LVS-NAT集群更优秀,有以下几个原因:

LVS-DR集群更容易管理,可以在集群网络之外通过telnet或ssh连接到集群节点上管理LVS-DR集群节点,在LVS-NAT集群中,物理网线或VLAN配置阻止你直接连接到集群节点。

LVS-DR集群不用通过中间机器(负载调度器)直接从集群节点向客户端计算机发送应答。

LVS-DR集群负载调度器允许出故障,不会使所有集群节点变得不可用,相比之下,如果主/备LVS-NAT集群负载调度器同时崩溃,整个LVS-NAT集群就无法使用了。在LVS-DR集群中,如果主/备LVS集群负载调度器同时崩溃,集群节点仍然可以作为独立的或分散的服务器使用(参考第13章了解如何建立LVS-DR集群的详细信息),然而,实际上,这是一个管理上的卖点而不是LVS-DR集群的“特色”。

注意:Linux企业集群应该通过防火墙保护避免受到来自外部的黑客攻击,如果你没有用防火墙保护你的集群节点,或如果你的集群必须连接到因特网上,到集群节点的shell访问应该被完全限制,你可以通过建立一个独立的网络(或VLAN)完全限制到集群节点的shell访问,该网络只用于连接管理机到集群节点,这个完全独立的网络常常叫做管理网络。[2]

安装软件移除失效的集群节点

本书中,我们将使用ldirectord软件包(包括在CD-ROM中)自动从集群中移除失效的节点,第15章将讨论如何安装和配置ldirectord。

作为集群管理员,你可能还想知道如何手动从集群中移除失效节点,而不影响到当前已经登陆到系统的用户,我们将在第19章中看到如何做。

安装软件监视集群节点

你不能每天通过每个集群节点的日志文件来进行监视,你需要监视软件在某个集群节点出现故障时发送email消息、电子页面或文本消息给管理员的功能。

有许多开源的软件可以完成这个任务,第17章描述了一个使用简单网络管理协议(SNMP)和Mon软件包进行监视的方法,SNMP和Mon软件包一起允许你监视集群节点,并在超过了你指定的阀值时发出警告。

监视集群节点的性能

除了监视集群节点的问题之外,你可能还想监视每个运行的集群节点是否正确地分担工作负载,Ganglia软件包就是做这件事的非常优秀的工具,第18章将描述如何使用Ganglia以及一些Ganglia从所有集群节点收集的性能量度(如系统平均负载)。

管理人员和操作人员可以使用Ganglia创建的web页面实时观察集群上的进程负载情况,在将集群放如生产环境的那天起,这个是你查看集群工作的最重要的工具了。

更新集群节点和服务器上的软件

在发现软件安全漏洞时你还需要一个自动下载并安装补丁的方法,附录D中描述的自动化工具Yum就是做这个事情的,在生产环境中使用之前,你要学习如何使用Yum或其他自动升级实用程序,确定已经建立了一个能够继续发展并能适应改变的系统。

你还需要考虑一些细微的问题,如SystemImager updateclient命令可能会覆盖软件包注册信息或存储在集群节点磁盘上的软件包(RPM)清单(要解决这个问题,你可能想将软件安装在一个节点上 -- SystemImager 黄金客户端 -- 然后使用updateclient命令更新剩下的集群节点)。

统一用户账号管理

你可能需要某种统一的集群用户账号管理方法,参考第1、19章中关于账号管理方法如NIS、LDAP、Webmin、OPIUM(OSCAR软件包的一部分)或一个拷贝每个集群节点本地的/etc/passwd文件存储到一个中央服务器的cron作业的讨论。(无论你选择哪个方法,你还需要判断这个方法是否能够准确地集中管理组和主机信息)

安装打印系统

你将需要安装一套允许你在一个地方控制所有来自集群的打印作业的打印系统,第19章将简要第讨论LPRng软件包在集群环境中基于这个目的的使用。

安装高可用批处理作业调度系统

如果你的批处理作业调度系统不是高可用的,即使你建立了一套高可用集群也不会改善系统的可靠性,我们将在第18章中看到如何建立一个无单点故障的批处理作业调度系统。

购买集群节点

建立用于支撑科学研究的集群往往包括成千个节点,一般在大型的研究机构的数据中心(参考http://clusters.top500.org/),对于运行在这些集群上的应用程序,没有限制它们能够使用的CPU周期的数量,因为越多的周期可用,就可以完成更多的工作,相反,企业集群有应用程序可以使用的进程周期数量的上限,企业工作负载有峰值消耗期限,相对低系统活动周期过程中进程,在峰值期间可能需要两倍、三倍或更多。然而,某些时候并不是越多的工作进程就意味着完成越多的工作,因为外部因素(如使用集群的用户数量和能力)将决定这个限制。

因此Linux企业集群要有一个理想的节点数量,是由使用它的组织的需求和构建、维护、支持成本决定的,在这一小节中,我们将看到两个基本的找到最佳节点数量的设计思想:集群性能和单点故障的影响。

规划容量和集群性能

应用程序有1/4的时候是在消耗它们的空闲时间:等待用户输入、等待CPU、等待文件系统I/O或等待网络I/O。在你建立集群时,最重要的是要减少其中的应用程序等待CPU的时间,通过将用户分散在多个集群节点上,你还可以减少多个CPU绑定进程竞争CPU时间片的可能性。
大多数组织能够购买足够数量的集群节点来消除CPU性能瓶颈,建立集群不能帮助你预防其他第三方的性能瓶颈,因此,第二个集群设计思想(单点故障的影响)是规划合理的容量,在大多数组织中这比性能更重要。

其他性能和设计思想

在这里非常简单地讨论一下,我们省去两个值得考虑的性能问题:单个节点(基于应用程序的配置文件或运行在每个集群节点上的应用程序)上可以容纳的用户会话数量的上限,以及运行在集群上不同应用程序的多种配置文件之间潜在的巨大差异。在第16、18章中将对这个主题进行更详细的讨论。但是在集群环境中进程上限不见了,集群文件系统或后端数据库的性能变得日益重要。(注意后端数据库可能也运行在集群上,参考第20章中“集群Zope”的一个例子。)

规划容量和单点故障的影响

对大多数组织更有效的第二个设计思想是单点故障和执行例行(规划好的)维护对业务的影响,在你决定购买多少集群节点时,企业或用户团体中单点故障对业务的影响可能是考虑设计唯一最重要的因素。

购买比CPU峰值需要的节点数量更多的节点可能比较有意义,因为对最终用户来说,多余的节点会减少单个节点失效带来的影响,同时这样还使集群维护变得更容易(集群管理员在维护时可以从集群中移除一个节点,集群仍然有足够的处理能力继续完成作业)。

假设你的预算允许你购买比你需要的更多的节点以满足CPU处理需求,你需要检查横跨集群节点的工作负载,并判断单点故障对业务的影响(例如:有多少用户会受到影响,有多少用户会话会受到影响),然后你要提供管理每个额外集群节点所有权的总体成本,并解释购买额外节点的好处。

从Unix转换传统应用程序到Linux上

如果你正在从一个Unix操作系统转换到一个Linux企业集群,在转换过程中使用Linux集群会有一个额外的好处,在你测试和开发新的Linux集群时,你可以让集群节点成为现有Unix服务器的NFS客户端(假设你现有的Unix服务器能够成为一个NFS服务器),虽然这个服务器不能在生产环境作为一个非常好的NFS服务器,但是它足以胜任在测试期间为提供访问生产数据文件的能力,这个服务器将解决封闭访问,使得测试使用活数据测试Linux集群成为可能,即使它们还是运转在旧的系统上。[4]

[1]本书描述的建立高可用服务器的技术,但是建立NFS服务器已经超出本书的范围,然而,第4章对在备份NAS服务器上同步数据进行了简要的描述。(另一个使用开源软件同步数据的方法是drdb项目,查看http://www.drbd.org/

[2]参考Evan Marcus和Hal Stern编写的《高可用性蓝图》一书中关于管理网络的论述。

[3]CPU和内存需求、磁盘I/O、网络带宽等。

[4]注意如果你的应用程序与转换endian问题进行竞争,这将不能工作,例如:Sparc硬件使用大endian字节排序,而Intel硬件使用小endian字节排序,要学习关于endian转换问题的更多信息,请查看Gulliver的游历或IBM的“Solaris到Linux移植指南”(http://www106.ibm.com/developerworks/linux/library/l-solar)。



本章小结

建立一个集群允许你排除CPU性能瓶颈,并改善你的用户应用程序的可靠性和可用性。经过仔细规划和测试,你能够建立一个运行关键应用不出现单点故障的Linux企业集群,规划合适的硬件容量(也就是说节点的正确数量),即使在正常的业务时间你也可以对集群进行维护,不会对最终用户造成任何影响。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux Flink集群是指基于Linux操作系统并使用Flink框架来构建的集群计算环境。Flink是一种流式处理引擎,用于处理大规模的数据流。Linux作为操作系统,具有良好的稳定性和可靠性,能够提供高效的系统资源管理和任务调度能力。 在一个Linux Flink集群中,通常包含一个主节点和多个工作节点。主节点负责协调整个集群的工作,包括任务的调度、资源的分配和监控等。工作节点是真正执行计算任务的节点,它们从主节点接收任务,并按照任务的要求进行计算和处理。 Linux Flink集群的搭建需要注意以下几点。首先,需要保证所有节点上已经安装并配置好了Linux操作系统。其次,需要在集群中选择一台作为主节点,并在该节点上安装Flink框架,并通过配置文件指定其他工作节点的地址和角色。然后,需要在所有工作节点上安装并配置好Flink框架。最后,需要确保主节点和工作节点之间可以相互通信,以便进行任务的分发和结果的传递。 在Linux Flink集群中,可以通过Flink的API或者命令行工具提交和管理任务。Flink提供了丰富的功能和算子,可以支持各种数据处理需求,包括流式处理、批处理和机器学习等。此外,Flink还提供了容错机制和故障恢复能力,保证了系统的可靠性和稳定性。 总结来说,Linux Flink集群提供了一个高效、稳定和可靠的计算环境,可以用于处理大规模的数据流。它充分发挥了Linux操作系统的优势,同时利用了Flink框架的各种功能和算子,为用户提供了一个强大而灵活的数据处理平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值