一种组建跨机房服务器集群的方法及节点服务器与流程

文档序号:17454825发布日期:2019-04-20 03:09阅读:423来源:国知局
一种组建跨机房服务器集群的方法及节点服务器与流程

本发明属于通信领域,尤其涉及一种组建跨机房服务器集群的方法及节点服务器。



背景技术:

近两年,新技术(互联网、移动互联网、穿戴式设备等)已经不满足于自己的领域,开始大举正面进军传统行业。互联网从本质上来说,是通过技术的手段,解决了信息不对称的问题。它本质上解决的是“沟通”的问题,它把原来要跨地域、跨时间、跨语言无法沟通的状态都拉平了。互联网也因此极大地释放了效率。互联网带来的变化在于,沟通效率的极速提升。这种提升,用消灭中间环节的方式,重构商业价值链。

业界并不认为互联网单独能改变整个行业的重构,而是有四股力量,这四股力量包括移动、社交化、云、大数据,这四股力量交集在一起,改变了消费者的行为,形成了消费者推动的生态系统,这个生态系统进一步改变企业做业务和行业重构的方式。

目前IT行业主要在互联网入口的抢占上竞争相当激烈。互联网入口就是超过用户需求的产品,像PC时代的门户型网站,Web 2.0时代的博客,到现在的移动互联网时代的微信。

支撑一个超过用户需求的产品,需要强大的云端来支撑。建设一个强大的云端,需要搭建一个稳定的服务器集群。服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。

搭建服务器集群,需要充分了解TCP/IP体系结构和协议,配置一个合适的协议栈。例如,传输协议是协议栈最底层的协议,它负责从物理网络环境接收消息,将接收到的消息传递到协议栈中上层相邻的协议,以及将协议栈中上层协议传递下来的消息发送到物理网络。传输层协议主要包括UDP、TCP、TUNNEL。UDP通常用于集群中的节点服务器分布于LAN内的情况,使用IP multicast向集群发送消息,使用UDP datagram向单个的节点服务器发送unicast消息。当集群中的节点服务器分布于WAN时,路由器会丢弃IP multicast报文,因此UDP不适用于组建跨机房服务器集群。因此现有技术无法实现将云服务的节点服务器拓展到WAN环境,实现不同地区的节点服务器接入。



技术实现要素:

本发明的目的在于提供一种组建跨机房服务器集群的方法及节点服务器,旨在解决现有技术无法实现将云服务的节点服务器拓展到WAN环境,实现不同地区的节点服务器接入的问题。

第一方面,本发明提供了一种组建跨机房服务器集群的方法,所述方法包括:

第一节点服务器配置成员信息,所述成员包括本机房的其它节点服务器和其它机房的接口服务器;

第一节点服务器通过传输层TCP协议分别向所述成员发送Ping包;

第一节点服务器通过传输层TCP协议接收第二节点服务器发送的包含成员视图的回包;

第一节点服务器从所述回包中获取成员视图;

第一节点服务器根据所有成员发送的回包中获取的成员视图判断本节点服务器是否为组长,如果不是,则第一节点服务器向组长发送加入服务器集群的消息;如果是,则第一节点服务器等待其他节点服务器加入,并更新成员视图;

第一节点服务器向服务器集群内的所有成员发送成员视图更新事件。

第二方面,本发明提供了一种组建跨机房服务器集群的方法,所述方法包括:

第二节点服务器通过传输层TCP协议接收Ping包,所述Ping包是由第一节点服务器通过传输层TCP协议分别向其成员发送的,所述成员是由第一节点服务器配置的,所述成员包括第一节点服务器所在的机房的其它节点服务器和其它机房的接口服务器;

第二节点服务器获取本节点服务器的物理地址;

第二节点服务器将本节点服务器的物理地址和成员视图封装在回包中;

第二节点服务器通过传输层TCP协议向第一节点服务器发送包含成员视图的回包,以使第一节点服务器加入服务器集群,或更新成员视图,并向服务器集群内的所有成员发送成员视图更新事件。

第三方面,本发明提供了一种节点服务器,所述节点服务器包括:

配置模块,用于配置成员信息,所述成员包括本机房的其它节点服务器和其它机房的接口服务器;

第一发送模块,用于通过传输层TCP协议分别向所述成员发送Ping包;

第一接收模块,用于通过传输层TCP协议接收第二节点服务器发送的包含成员视图的回包;

第一获取模块,用于从所述回包中获取成员视图;

判断模块,用于根据所有成员发送的回包中获取的成员视图判断本节点服务器是否为组长;

第二发送模块,用于当所述判断模块判断本节点服务器不是组长时,向组长发送加入服务器集群的消息;

更新模块,用于当所述判断模块判断本节点服务器是组长时,等待其他节点服务器加入,并更新成员视图;

第三发送模块,用于向服务器集群内的所有成员发送成员视图更新事件。

第四方面,本发明提供了一种节点服务器,所述节点服务器包括:

第二接收模块,用于通过传输层TCP协议接收Ping包,所述Ping包是由第一节点服务器通过传输层TCP协议分别向其成员发送的,所述成员是由第一节点服务器配置的,所述成员包括第一节点服务器所在的机房的其它节点服务器和其它机房的接口服务器;

第二获取模块,用于获取本节点服务器的物理地址;

第二封装模块,用于将本节点服务器的物理地址和成员视图封装在回包中;

第四发送模块,用于通过传输层TCP协议向第一节点服务器发送包含成员视图的回包,以使第一节点服务器加入服务器集群,或更新成员视图,并向服务器集群内的所有成员发送成员视图更新事件。

在本发明中,由于节点服务器之间采用传输层TCP协议进行传输,因此实现了将云服务的节点服务器拓展到WAN环境,实现了不同地区的节点服务器接入,动态扩展了云端服务节点,提高了服务器同时在线容量。

附图说明

图1是服务器集群体系结构示意图。

图2是本发明实施例中待组建的跨机房服务器集群的物理架构图。

图3是本发明实施例一提供的组建跨机房服务器集群的方法流程图。

图4是本发明实施例二提供的节点服务器结构示意图。

图5是本发明实施例三提供的节点服务器结构示意图。

具体实施方式

为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

请参阅图1,是三个节点服务器的服务器集群体系结构示意图。协议栈中传输层协议(如TCP)基于物理网络之上,通道(Channel)基于协议栈之上,应用(Application)基于通道之上。

服务器集群中成员可以进行点对点、点对组的通信,所有通信通过通道完成。每个成员创建通道时,要给通道配置一个协议栈(Protocol Stack)。通道基于协议栈之上。

协议栈包括下列协议:

TCP:用基于UDP的多播(Multicast)协议来发送消息

TCPPING:通过传输层TCP协议向其它成员发送报文段(Segment),尝试ping通对方

MERGE2:合并子组,或在一个子组分离时去除子组

FD:基于心跳(Heartbeat)消息的错误检测协议,当某个成员失败时会生成通知

pbcast.NAKACK:确保消息的可靠和FIFO顺序,消息可靠性保证了一个消息会被收到,否则接收者会要求重传,FIFO保证了从发送者发过来的所有消息会以相同顺序到达接收方

UNICAST:单播

pbcast.STABLE:将已被所有成员收到的消息删除

pbcast.GMS:成员协议,负责成员的加入/离开并更新新的成员视图

FRAG2:将巨大的消息打碎分割成若干个小的发送,并在接收端重新组装回去,适用于多播和单播协议

pbcast.STATE_TRANSFER:状态传输,确保状态可以正确地从一个成员传输到其他的成员

协议栈中各层协议之间形成双向链表,即每层协议有上层协议(up_protocol)和下层协议(down_protocol),可以双向传递消息。

请参阅图2,本发明实施例以待组建的跨机房服务器集群具有4个不同的机房,即4个不同的互联网数据中心(Internet Data Center,IDC):IDC1、IDC2、IDC3和IDC4,为例。其中,IDC1具有多台节点服务器,如121.201.96.190、121.201.96.191、121.201.96.192等;IDC2具有多台节点服务器,如218.17.160.100、218.17.160.101、218.17.160.102等;IDC3具有多台节点服务器,如61.174.9.250、61.174.9.251、61.174.9.252等;IDC4具有多台节点服务器,如120.31.134.50、120.31.134.51、120.31.134.52等。每个机房指定一台节点服务器作为接口服务器,接口服务器配置了本机房的其它节点服务器的信息,同时对其它机房的所有节点服务器可见。

这12台节点服务器通过图3所示的本发明实施例一提供的组建跨机房服务器集群的方法进行组建。

实施例一:

请参阅图3,本发明实施例一提供的组建跨机房服务器集群的方法包括以下步骤:

S101、第一节点服务器配置成员信息,所述成员包括本机房的其它节点服务器和其它机房的接口服务器;

在本发明实施例一中,如果第一节点服务器是接口服务器,则本机房的其它节点服务器是指其它非接口服务器的节点服务器;如果第一节点服务器不是接口服务器,则本机房的其它节点服务器包括本机房的接口服务器和其它非接口服务器的节点服务器。

例如:结合图2,

1)接口服务器1的配置:

a)bind_port:7800

b)initial_hosts:

121.201.96.192:7800,(本节点服务器ip:port)

218.17.160.100:7800,61.174.9.252:7800,120.31.134.50:7800,(其它机房的接口服务器ip:port)

121.201.96.190:7800,121.201.96.191:7800(IDC1其它节点服务器的ip:port)

2)非接口服务器的节点服务器的配置:选择一台作为举例,如121.201.96.190这台。

a)bind_port:7800

b)initial_hosts:

121.201.96.190:7800,(本节点服务器ip:port)

121.201.96.192:7800,218.17.160.100:7800,61.174.9.252:7800,120.31.134.50:7800(本机房的接口服务器和其它机房的接口服务器的ip:port)

121.201.96.191:7800,(IDC1其它节点服务器的ip:port)

3)接口服务器2的配置:

a)bind_port:7800

b)initial_hosts:

218.17.160.100:7800,

121.201.96.192:7800,61.174.9.252:7800,120.31.134.50:7800,

218.17.160.101:7800,218.17.160.102:7800

4)接口服务器3的配置:

a)bind_port:7800

b)initial_hosts:

61.174.9.252:7800,

121.201.96.192:7800,218.17.160.100:7800,120.31.134.50:7800,

61.174.9.250:7800,61.174.9.251:7800

5)接口服务器4的配置:

a)bind_port:7800

b)initial_hosts:

120.31.134.50:7800,

121.201.96.192:7800,218.17.160.100:7800,61.174.9.252:7800,

120.31.134.51:7800,120.31.134.52:7800

S102、第一节点服务器通过传输层TCP协议分别向所述成员发送Ping包;

S103、第二节点服务器通过传输层TCP协议接收所述Ping包;

S104、第二节点服务器获取本节点服务器的物理地址;

S105、第二节点服务器将本节点服务器的物理地址和成员视图封装在回包中;

S106、第二节点服务器通过传输层TCP协议向第一节点服务器发送包含成员视图的回包;

在本发明实施例一中,回包具体包括如下信息属性:

a)Address sender:发送者的所在节点地址

b)view:视图对象

id:视图编号

Add ress[]members:成员列表

Address creator:视图创建者

c)String logical_name:发送者的所在节点逻辑名称

d)Collection<PhysicalAddress>physical_addrs:发送者加入集群时能收集到的其它成员的地址(含有物理地址)

S107、第一节点服务器通过传输层TCP协议接收第二节点服务器发送的包含成员视图的回包;

S108、第一节点服务器从所述回包中获取成员视图;

S109、第一节点服务器根据所有成员发送的回包中获取的成员视图判断本节点服务器是否为组长,如果不是,则执行S110,如果是,则执行S111;

S110、第一节点服务器向组长发送加入服务器集群的消息;

S111、第一节点服务器等待其他节点服务器加入,并更新成员视图;

S112、第一节点服务器向服务器集群内的所有成员发送成员视图更新事件。

在本发明实施例一中,S101具体可以包括以下步骤:

第一节点服务器在通道层发起连接事件,交给组成员协议(Group Membership Protocol,GMS)层处理,GMS协议说明:Handles joins/leaves/crashes(suspicions)and emits new views accordingly.处理加入/离开/崩溃(怀疑),和发送相应的新视图;

第一节点服务器在GMS层处理所述连接事件,发出查找成员事件给发现层(Discovery层);

第一节点服务器在发现层处理查找成员事件;

第一节点服务器在发现层配置成员信息,所述成员包括本机房的其它节点服务器和其它机房的接口服务器。

在本发明实施例一中,S102具体可以包括以下步骤:

第一节点服务器在发现层向所述成员通过传输层TCP协议发起请求事件;

第一节点服务器在发现层将请求事件封装在通用消息(Event.MSG)中向下传递给传输层;

第一节点服务器在传输层通过传输层TCP协议分别向所述成员发送请求事件。

在本发明实施例一中,S103具体为:第二节点服务器在传输层通过传输层TCP协议接收所述请求事件。

在本发明实施例一中,S104具体可以包括以下步骤:

第二节点服务器在发现层处理请求事件;

第二节点服务器在发现层获取本节点服务器的物理地址。

在本发明实施例一中,S105具体为:第二节点服务器在发现层将本节点服务器的物理地址和成员视图封装在回包中向下传递给传输层。

在本发明实施例一中,S106具体为:第二节点服务器在传输层通过传输层TCP协议向第一节点服务器发送包含成员视图的回包。

在本发明实施例一中,S107具体为:第一节点服务器在传输层通过传输层TCP协议接收第二节点服务器发送的包含成员视图的回包。

在本发明实施例一中,S108具体为:第一节点服务器在发现层接收传输层向上传递的所述回包,并向上传递给GMS层,直至GMS层收到所有成员发送的回包。

在本发明实施例一中,S109具体包括以下步骤:

第一节点服务器在GMS层根据所有成员发送的回包中获取的成员视图选举组长;具体为:第一节点服务器在GMS层根据所有成员发送的回包中获取的成员视图统计成员视图创建者,创建的成员视图最多的创建者选举为组长;

判断本节点服务器是否为组长,如果不是,则执行S110,如果是,则执行S111。

在本发明实施例一中,所述更新成员视图具体包括以下步骤:

组长整合所有成员发送的回包中的视图成员列表,生成集群最新成员列表;若配置的成员中不含有部分成员,则将部分成员加入动态成员列表中,生成包括动态成员列表和配置的成员的集群最新成员列表。

组长产生一个新视图,包含所述集群最新成员列表。

在本发明实施例一中,由于节点服务器之间采用传输层TCP协议进行传输,因此即使服务器集群中的成员分布于WAN,也能组建服务器集群,动态扩展了云端服务节点,提高了服务器同时在线容量。

实施例二:

请参阅图4,本发明实施例二提供的节点服务器包括:配置模块11、第一发送模块12、第一接收模块13、第一获取模块14、判断模块15、第二发送模块16、更新模块17和第三发送模块18。

配置模块11,用于配置成员信息,所述成员包括本机房的其它节点服务器和其它机房的接口服务器;

在本发明实施例二中,如果第一节点服务器是接口服务器,则本机房的其它节点服务器是指其它非接口服务器的节点服务器;如果第一节点服务器不是接口服务器,则本机房的其它节点服务器包括本机房的接口服务器和其它非接口服务器的节点服务器。

第一发送模块12,用于通过传输层TCP协议分别向所述成员发送Ping包;

第一接收模块13,用于通过传输层TCP协议接收第二节点服务器发送的包含成员视图的回包;

第一获取模块14,用于从所述回包中获取成员视图;

判断模块15,用于根据所有成员发送的回包中获取的成员视图判断本节点服务器是否为组长;

第二发送模块16,用于当所述判断模块判断本节点服务器不是组长时,向组长发送加入服务器集群的消息;

更新模块17,用于当所述判断模块判断本节点服务器是组长时,等待其他节点服务器加入,并更新成员视图;

第三发送模块18,用于向服务器集群内的所有成员发送成员视图更新事件。

本发明实施例二中,所述配置模块11具体包括:

第一发起模块,用于在通道层发起连接事件,交给GMS层处理;

第一处理模块,用于在GMS层处理所述连接事件,发出查找成员事件给发现层;

第二处理模块,用于在发现层处理查找成员事件;

配置子模块,用于在发现层配置成员信息,所述成员包括本机房的其它节点服务器和其它机房的接口服务器;

所述第一发送模块12具体包括:

第二发起模块,用于在发现层向所述成员通过传输层TCP协议发起请求事件;

第一封装模块,用于在发现层将请求事件封装在通用消息中向下传递给传输层;

第一发送子模块,用于在传输层通过传输层TCP协议分别向所述成员发送请求事件。

本发明实施例二中,所述判断模块15具体包括:

选举模块,用于在GMS层根据所有成员发送的回包中获取的成员视图选举组长;具体为:在GMS层根据所有成员发送的回包中获取的成员视图统计成员视图创建者,创建的成员视图最多的创建者选举为组长;

判断子模块,用于判断本节点服务器是否为组长。

在本发明实施例二中,第一接收模块13具体用于在传输层通过传输层TCP协议接收第二节点服务器发送的包含成员视图的回包。

在本发明实施例二中,第一获取模块14具体用于在发现层接收传输层向上传递的所述回包,并向上传递给GMS层,直至GMS层收到所有成员发送的回包。

在本发明实施例二中,所述更新模块17具体用于组长整合所有成员发送的回包中的视图成员列表,生成集群最新成员列表;组长产生一个新视图,包含所述集群最新成员列表。

在本发明实施例二中,由于节点服务器之间采用传输层TCP协议进行传输,因此即使服务器集群中的成员分布于WAN,也能组建服务器集群,动态扩展了云端服务节点,提高了服务器同时在线容量。

实施例三:

请参阅图5,本发明实施例三提供的节点服务器包括:第二接收模块21、第二获取模块22、第二封装模块23和第四发送模块24,其中,

第二接收模块21,用于通过传输层TCP协议接收Ping包,所述Ping包是由第一节点服务器通过传输层TCP协议分别向其成员发送的,所述成员是由第一节点服务器配置的,所述成员包括第一节点服务器所在的机房的其它节点服务器和其它机房的接口服务器;

第二获取模块22,用于获取本节点服务器的物理地址;

第二封装模块23,用于将本节点服务器的物理地址和成员视图封装在回包中;

第四发送模块24,用于通过传输层TCP协议向第一节点服务器发送包含成员视图的回包,以使第一节点服务器加入服务器集群,或更新成员视图,并向服务器集群内的所有成员发送成员视图更新事件。

在本发明实施例三中,回包具体包括如下信息属性:

a)Address sender:发送者的所在节点地址

b)view:视图对象

id:视图编号

Add ress[]members:成员列表

Address creator:视图创建者

c)String logical_name:发送者的所在节点逻辑名称

d)Collection<PhysicalAddress>physical_addrs:发送者加入集群时能收集到的其它成员的地址(含有物理地址)

在本发明实施例三中,第二接收模块21具体用于在传输层通过传输层TCP协议接收请求事件,所述请求事件是由第一节点服务器在传输层通过传输层TCP协议分别向其成员发送的。

在本发明实施例三中,第二获取模块22具体用于在发现层处理请求事件,在发现层获取本节点服务器的物理地址。

在本发明实施例三中,第二封装模块23具体用于在发现层将本节点服务器的物理地址和成员视图封装在回包中向下传递给传输层。

在本发明实施例三中,第四发送模块24具体用于在传输层通过传输层TCP协议向第一节点服务器发送包含成员视图的回包。

在本发明实施例三中,由于节点服务器之间采用传输层TCP协议进行传输,因此即使服务器集群中的成员分布于WAN,也能组建服务器集群,动态扩展了云端服务节点,提高了服务器同时在线容量。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1