节点服务器的服务器集群技术

节点服务器的服务器集群技术,第1张

集群技术的出现和IA架构服务器的快速发展为社会的需求提供了新的选择。它价格低廉,易于使用和维护,而且采用集群技术可以构造超级计算机,其超强的处理能力可以取代价格昂贵的中大型机,为行业的高端应用开辟了新的方向。

集群技术是一种相对较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益。

21世纪,在世界各地正在运行的超级计算机中,有许多都是采用集群技术来实现的。

集群是由一些互相连接在一起的计算机构成的一个并行或分布式系统。这些计算机一起工作并运行一系列共同的应用程序,同时,为用户和应用程序提供单一的系统映射。从外部来看,它们仅仅是一个系统,对外提供统一的服务。集群内的计算机物理上通过电缆连接,程序上则通过集群软件连接。这些连接允许计算机使用故障应急与负载平衡功能,而故障应急与负载平衡功能在单机上是不可能实现的。

服务器集群系统通俗地讲就是把多台服务器通过快速通信链路连接起来,从外部看来,这些服务器就像一台服务器在工作,而对内来说,外面来的负载通过一定的机制动态地分配到这些节点机中去,从而达到超级服务器才有的高性能、高可用。

集群的优点

高可伸缩性:服务器集群具有很强的可伸缩性。随着需求和负荷的增长,可以向集群系统添加更多的服务器。在这样的配置中,可以有多台服务器执行相同的应用和数据库操作。

高可用性:高可用性是指,在不需要操作者干预的情况下,防止系统发生故障或从故障中自动恢复的能力。通过把故障服务器上的应用程序转移到备份服务器上运行,集群系统能够把正常运行时间提高到大于999%,大大减少服务器和应用程序的停机时间。

高可管理性:系统管理员可以从远程管理一个、甚至一组集群,就好象在单机系统中一样。

硬件用路由器,软件嘛,操作系统用WIN2003serverenterprise企业版,推荐一并安装R2升级包,所有机器组局域网,用一台千兆网卡做域控,架设流媒体服务器,其他机做为域成员加入进来,内网IP各用各的,外网用端口映射到一个IP,用域控做网络流量负载平衡,域控机器配置要强,如果你网络流量大,建议用专业级服务器,至强+2Gb+SCSI硬盘之类,看你环境要求了,如果必要可以上双至强,再用一台512mb内存的p420G以上机做备份域控,这样主域控上下线或重启或出故障不影响域内成员正常工作,备份域控凑合就可以了求采纳

为什么集群?

通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况下,如何正确架构Redis呢?

首先,无论我们是使用自己的物理主机,还是使用云服务主机,内存资源往往是有限制的,scale up不是一个好办法,我们需要scale out横向可伸缩扩展,这需要由多台主机协同提供服务,即分布式多个Redis实例协同运行。

其次,目前硬件资源成本降低,多核CPU,几十G内存的主机很普遍,对于主进程是单线程工作的Redis,只运行一个实例就显得有些浪费。同时,管理一个巨大内存不如管理相对较小的内存高效。因此,实际使用中,通常一台机器上同时跑多个Redis实例。

方案

1Redis官方集群方案 Redis Cluster

Redis Cluster是一种服务器Sharding技术,30版本开始正式提供。

Redis Cluster中,Sharding采用slot(槽)的概念,一共分成16384个槽,这有点儿类pre sharding思路。对于每个进入Redis的键值对,根据key进行散列,分配到这16384个slot中的某一个中。使用的hash算法也比较简单,就是CRC16后16384取模。

Redis集群中的每个node(节点)负责分摊这16384个slot中的一部分,也就是说,每个slot都对应一个node负责处理。当动态添加或减少node节点时,需要将16384个槽做个再分配,槽中的键值也要迁移。当然,这一过程,在目前实现中,还处于半自动状态,需要人工介入。

Redis集群,要保证16384个槽对应的node都正常工作,如果某个node发生故障,那它负责的slots也就失效,整个集群将不能工作。

为了增加集群的可访问性,官方推荐的方案是将node配置成主从结构,即一个master主节点,挂n个slave从节点。这时,如果主节点失效,Redis Cluster会根据选举算法从slave节点中选择一个上升为主节点,整个集群继续对外提供服务。这非常类似前篇文章提到的Redis Sharding场景下服务器节点通过Sentinel监控架构成主从结构,只是Redis Cluster本身提供了故障转移容错的能力。

Redis Cluster的新节点识别能力、故障判断及故障转移能力是通过集群中的每个node都在和其它nodes进行通信,这被称为集群总线(cluster bus)。它们使用特殊的端口号,即对外服务端口号加10000。例如如果某个node的端口号是6379,那么它与其它nodes通信的端口号是16379。nodes之间的通信采用特殊的二进制协议。

对客户端来说,整个cluster被看做是一个整体,客户端可以连接任意一个node进行操作,就像操作单一Redis实例一样,当客户端操作的key没有分配到该node上时,Redis会返回转向指令,指向正确的node,这有点儿像浏览器页面的302 redirect跳转。

Redis Cluster是Redis 30以后才正式推出,时间较晚,目前能证明在大规模生产环境下成功的案例还不是很多,需要时间检验。

2Redis Sharding集群

Redis 3正式推出了官方集群技术,解决了多Redis实例协同服务问题。Redis Cluster可以说是服务端Sharding分片技术的体现,即将键值按照一定算法合理分配到各个实例分片上,同时各个实例节点协调沟通,共同对外承担一致服务。

多Redis实例服务,比单Redis实例要复杂的多,这涉及到定位、协同、容错、扩容等技术难题。这里,我们介绍一种轻量级的客户端Redis Sharding技术。

Redis Sharding可以说是Redis Cluster出来之前,业界普遍使用的多Redis实例集群方法。其主要思想是采用哈希算法将Redis数据的key进行散列,通过hash函数,特定的key会映射到特定的Redis节点上。这样,客户端就知道该向哪个Redis节点操作数据。

庆幸的是,java redis客户端驱动jedis,已支持Redis Sharding功能,即ShardedJedis以及结合缓存池的ShardedJedisPool。

Jedis的Redis Sharding实现具有如下特点:

1 采用一致性哈希算法(consistent hashing),将key和节点name同时hashing,然后进行映射匹配,采用的算法是MURMUR_HASH。采用一致性哈希而不是采用简单类似哈希求模映射的主要原因是当增加或减少节点时,不会产生由于重新匹配造成的rehashing。一致性哈希只影响相邻节点key分配,影响量小。

2为了避免一致性哈希只影响相邻节点造成节点分配压力,ShardedJedis会对每个Redis节点根据名字(没有,Jedis会赋予缺省名字)会虚拟化出160个虚拟节点进行散列。根据权重weight,也可虚拟化出160倍数的虚拟节点。用虚拟节点做映射匹配,可以在增加或减少Redis节点时,key在各Redis节点移动再分配更均匀,而不是只有相邻节点受影响。

3ShardedJedis支持keyTagPattern模式,即抽取key的一部分keyTag做sharding,这样通过合理命名key,可以将一组相关联的key放入同一个Redis节点,这在避免跨节点访问相关数据时很重要。

不难,硬件用路由器,软件嘛,操作系统用WIN2003 server enterprise 企业版,推荐一并安装R2升级包,所有机器组局域网,用一台千兆网卡做域控,架设流媒体服务器,其他机做为域成员加入进来,内网IP各用各的,外网用端口映射到一个IP,用域控做网络流量负载平衡,域控机器配置要强,如果你网络流量大,建议用专业级服务器,至强+2Gb+SCSI硬盘之类,看你环境要求了,如果必要可以上双至强,再用一台512mb内存的p4 20G以上机做备份域控,这样主域控上下线或重启或出故障不影响域内成员正常工作,备份域控凑合就可以了,按我上面的要求就行,当然,有钱可以用好的

如果你安全性要求高,建议路由前端用普通P4+512Mb内存机器架ISA2004 server组防火墙,配置的好效果比一般的硬件防火墙要好,完全不影响网络环境运行,域内成员可以裸奔不怕毒和黑

至于域内成员机,如果仅全力供应片源,当前主流家用机型就够用了

服务器建议用hp 360G系列,目前价位不算高,性价比还不错,售后很好,如果你对建网不怎么了解,可以让他们帮你装,买他们的服务器就是要利用他们的人力资源嘛

路由器可以选用飞鱼星4200以上机型,电信网通双WAN口,是可以提供150~250台机器的大型网吧专用的,内置参数非常丰富

另外再多罗嗦几句,板卡不要买七彩虹的,我上过当,七彩虹本身是咨讯公司,没有任何板卡生产能力,都是同德代工的,以为它的出货量大,就选了它,结果广告上的指标参数和实际产品根本不同,水份太多太多了,售后也很烂,特此建议……

楼下别再抄袭我了,每天都被抄走好几个200分最佳,实在是郁闷!

linux服务器集群平台的搭建比较简单,有专门的均衡软件,比如lvs,lvs是一个集群系统,由很多服务器组成,可以根据需要,把它门分为三层,一层是前端机,用于均衡,相当于公平为系统分配工作,二层是服务器群,比如web服务器群,DNS,mail群等,这些就是接待员,把均衡器分配的工作进行处理,第三层是存储设备,用于存储数据,相当于档案库。

知道这些后,要搭建就非常容易,有现成的软件,比如我有四台web服务器,2台数据库,1台前置机 ,安装linux系统,安装lvs软件,比如

heartbeat-214-9el5i386rpm

heartbeat-ldirectord-214-9el5i386rpm

libnet-114-3el5i386rpm

heartbeat-devel-214-9el5i386rpm

heartbeat-pils-214-10el5i386rpm

perl-MailTools-177-1el5noarchrpm

heartbeat-gui-214-9el5i386rpm

heartbeat-stonith-214-10el5i386rpm

当然还需要配置,你可以自己百度有关lvs集群的详细安装说明。希望能帮助你。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 节点服务器的服务器集群技术

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情