相关申请
本申请涉及并要求享有2019年8月6日提交的no.16/532,677、2019年8月6日提交的no.16/532,727和2019年8月6日提交的no.16/532,764的美国非临时专利申请,和2018年8月7日提交的no.62/715,361、2018年8月7日提交的no.62/715,367、2018年8月9日提交的no.62/716,562、2018年8月10日提交的no.62/717,194和2018年8月27日提交的no.62/723,373临时专利申请的优先权,因此,出于所有目的,通过引用将其整体并入本文,如同在此充分阐述。
背景技术:
发明领域
总体上,本发明的实施例涉及服务器集群内的服务器之间的通信的系统和方法,并且更具体地涉及可以与通过公用互联网通信的服务器一起操作的通信系统和方法。
相关背景
互联网(internet)是通过互联网服务提供商或isp访问的广域网(wan)。互联网服务提供商与云计算提供商一起,在分配稀有公共ipv4网络地址方面一直在不懈地努力。ipv4地址是32位整数值。它们最经常以点十进制表示法编写,它由地址的四个八位字节组成,分别用十进制数字表示并用句点分隔(例如11.22.333.444)。
为了使所有这些isp125和云计算公司及其客户端共享相同的ipv4网络地址,如图1所示,内部网络或局域网(lan)110通过网络地址转换(“nat”)路由器120连接到公用互联网130。nat路由器通过将传输控制协议(“tcp”)或用户数据报协议(“udp”)内部端点临时映射到希望通过公用互联网分别连接到外部可访问的ipv4地址上的tcp或udp外部端点(在此也称为端口)进行通信的内部设备,从而允许在任意数量的内部设备之间共享一个ipv4地址,使用该ipv4地址路由器通过isp连接到互联网。
除了保留公共ipv4网络地址外,nat路由器还提供基本的安全性。虽然nat路由器会临时为其希望在互联网上发起流量的局域网中的设备临时提供对互联网的访问,但是默认情况下,它将不允许来自互联网的设备向lan内的设备发起流量。这方面(通常称为防火墙)增加了配置网络服务的复杂性,该网络服务通过位于nat路由器后面的互联网(例如,高可用性服务器集群)进行交互。
服务器集群是一组松散或紧密连接的计算机,它们协同工作,因此在许多方面,它们可以被视为单个系统。集群的组件通常通过lan相互连接,每个节点都运行自己的操作系统实例。通常部署集群是为了提高相对于单台计算机的性能和可用性,而通常比具有类似速度或可用性的单台计算机更具成本效益。而且由于大多数集群都在lan内运行,因此它们可以自由通信,从而避免了公用互联网交互所带来的安全隐患。
出于两个原因,传统的集群软件打算部署在控制良好的lan上。首先并如上所述,供应商认为lan上的软件比提供通过公用互联网对其软件或服务的直接访问更为安全或至少更安全。其次,传统集群软件运行所需的各个第4层(tcp和udp)通信通道是多种多样的,并且在lan内部更易于管理。例如,下面是用于microsoftwindows服务器故障转移集群(wsfc)的网络端口的列表。
这些不同的标准需要专用的互连通道才能启用服务器集群操作。为了通过公用互联网供应商跨多个lan跨集群,主要使用专用虚拟专用网或vpn(如图2和3所示),以确保安全,并在服务器之间提供不受限制的第3层网络路径以支持各种所需的第4层通信通道集。
vpn是一种安全的隧道(tunnel),通信和数据可以通过该隧道在两点之间安全地流动。回想一下,互联网是一个数据包交换网络(packet-switchednetwork),这意味着发送方和接收方之间没有单一的,不间断的连接。相反,在发送信息时,它将信息分解成小包,并同时通过许多不同的路径发送到同一位置,然后在接收端进行重组。这与诸如电话系统的电路交换网络(circuit-switchnetwork)相反,该电路交换网络在进行呼叫和电路交换之后,将网络的一部分划分为单个连接。
互联网上传输的每个数据包均携带信息,以将其定向到其位置以及如何使用。例如,某些数据包可用于使用超文本传输协议(http)来形成网站,而其他数据包可使用互联网消息访问协议(imap)来访问电子邮件。当然,每个数据包都需要知道发送到哪个地址以及谁是发送者。传输控制协议(tcp)和互联网协议(ip)是用于分解和重组数据包的最常见协议集。
tcp/ip模型分为四个层,解决了将数据分解为数据包,通过互联网发送数据并在目的地将其重组的问题。这些层包括应用程序、传输、互联网和网络访问层。网络访问层负责将二进制数据转换为网络信号。这包括将计算机友好的数据转换为网络友好的信号的计算机或调制解调器上的网卡。互联网层提供逻辑寻址、路径确定和转发。
应用程序层包括各种协议,这些协议管理与应用程序的交互、数据转换、编码、对话控制以及系统之间的通信协调。有许多应用程序协议,其中更常见的是http、imap、文件传输协议(ftp)、简单邮件传输协议(smtp)、域名服务(dns)等。
传输层与数据的端到端传输有关,并在主机之间建立逻辑连接。该层中可用的两种协议是tcp和用户数据报协议(udp)。tcp是一种面向连接和可靠的,使用窗口控制数据段的有序流动和递送,而udp只是简单地传输数据,不需要额外开销,从而提供更快的数据传输。
在vpn中,源服务器205的每个数据包210被vpn服务器215加密,然后被封装220在常规ip数据包内以进行传输。普通ip数据包在隧道的另一端具有目标地址。因此,当数据包通过互联网移动时,无法读取数据包的真实地址,因此只能访问隧道地址。
在接收端,计算机或vpn客户端230剥离外部ip数据包220并解密内部数据包210。基于该信息,内部数据包被传递到目的地250。该过程需要多个l4通信信道310来影响数据的安全传送,并且这些层是有代价的。vpn协议本质上是传输协议和加密标准的组合。
尽管在有限的应用中用途广泛,但仍需要将第4层通信信道的数量减少到每对服务器一个。这样的改进将允许通过公用互联网直接进行服务器到服务器的通信,而无需使用vpn或专用的专用网络,并且无需任何特殊配置即可支持nat路由器的遍历。这种直接的服务器到服务器通信对于促进分布式(公用互联网)服务器集群体系结构至关重要。现有技术的这些和其他缺陷通过本发明的一个或多个实施例解决了。
本发明的其他优点和新颖特征将部分地在下面的描述中阐述,并且在阅读以下说明书后,本领域技术人员可以清楚地了解本发明,或者可以通过实施本发明来了解。借助于所附权利要求中特别指出的实例、组合、组合物和方法,可以实现和获得本发明的优点。
技术实现要素:
服务器集群是一组共同工作的服务器,以提供可靠的高可用性计算资源。支持一个或多个应用程序,集群可以使用户确信应用程序始终可用。尽管传统的集群是在局域网内形成的,但对于分散在很远距离但仍通信耦合的集群的需求仍在不断增长。本发明提供了对普通且昂贵的vpn类型的连接的替代。
中间注册服务器可促进使用单个安全用户数据报协议(udp)跨公用互联网进行服务器集群通信。本发明的中间注册服务器及其相关的方法,也能够使集群内的服务器和隔离在防火墙后面的服务器能够识别集群组中的对等(peer)服务器,即使它们位于不同的位置。使用共享给服务器集群对等组的每个成员的外部地址注册表,单个服务器可以使用单个udpdtls隧道建立直接安全信道。
本发明的一种机器实现的方法包括:服务器使用用户数据报协议(udp)信道向中间注册服务器发送报告消息,其中,所述报告消息与udp外部端点和udp内部端点相关联。中间注册服务器通过udp信道与服务器进行通信,可以确认服务器的udp外部端点以及有关服务器内部端点的信息。有了这些信息,中间注册服务器就可以使用外部地址注册表在对等组、服务器标识、udp外部端点和udp内部端点之间记录和共享。
本发明的方法通过udp外部端口在服务器和中间注册服务器之间建立安全连接或隧道,并且其中udp信道是单个udp信道。此安全连接是数据报传输层安全性(dtls)会话,该会话允许通过用户数据报协议安全地共享数据。还可以在服务器和中间注册表之间建立多个信道或安全连接。这样做,中间注册服务器使用cookie值、标识对等组的预共享密钥以及使用该预共享密钥加密的注册数据,将每个附加安全连接作为与服务器的逻辑连接进行关联。
本发明的方法的另一个特征包括中间注册服务器向服务器发送外部地址注册表状态消息,以确认服务器在外部地址注册表中的udp信道的列表以及由注册服务器在对等组中注册的其他服务器的列表。该列表包括对等组中每个服务器的注册数据,以实现服务器之间的直接通信,例如服务器标识,udp信道,udp外部端点,预共享密钥等。状态消息还包括基于预共享密钥的对等组中每个服务器的成员身份状态以及对等组中任何服务器的成员身份状态的任何更改。
本发明的方法的另一个特征是能够通过邀请将其他服务器添加到集群中。在这种情况下,中间注册服务器从服务器接收创建邀请组的请求,其中邀请组与一次性私钥(otpk)关联。接收到中间注册服务器后,便形成一个链接到otpk的邀请组。尽管对等组的单个服务器可能已经发起了形成邀请组的请求,但是形成的邀请组与对等组的每个成员相关联。
一旦形成邀请组,则中间注册服务器通过新的udp信道与附加服务器建立新的安全连接,该服务器以前被标识为可能希望加入对等组的服务器。在形成邀请组之前,otpk已与附加服务器共享。中间注册服务器使用otpk从附加服务器接收注册数据,该数据将其标识为与邀请组相关联。此后,中间注册服务器将来自附加服务器的注册数据发送到对等组的随机选择成员,并将使用对等组的随机选择成员的注册数据发送给附加服务器以建立安全通道,并且确认附加服务器作为对等组成员的可行性。如果确认该附加服务器值得成为对等组的成员身份,则与该附加服务器共享对等组的预共享密钥,从而将该附加服务器建立为对等组的成员。
本发明可以作为机器可执行代码格式的指令存储在非暂时性机器可读存储介质上,该指令在由至少一台机器执行时使机器执行上述方法。
本公开中和以下详细描述中描述的特征和优点并非包括一切。鉴于附图、说明书和权利要求书,许多附加特征和优点对于相关领域的普通技术人员将是显而易见的。此外,应该注意的是,说明书中使用的语言主要是出于可读性和指导目的而选择的,并且并非被选择来描绘或限制本发明的主题;必须参考权利要求以确定本发明的主题。
附图的简要说明
通过参考以下结合附图对一个或多个实施例的描述,本发明的前述和其他特征和目的以及实现它们的方式将变得更加明显,并且将最好地理解本发明本身,其中:
图1示出了网络环境的高级描述,其中一个或多个局域网与公用互联网交互;
图2是虚拟专用网络配置的高级图;
图3是代表性的服务器故障转移配置,用于使用虚拟专用网络通信信道通过公用互联网进行服务器故障转移通信;
图4是根据本发明的一个实施例的服务器集群中的服务器的高级系统图,示出了内部逻辑组件及其通过公用互联网使用单个udp安全信道与集群中其他服务器的通信关系;
图5是根据本发明的一个实施例的与中间注册服务器通信的服务器集群的两个服务器的简化系统架构图;
图6示出了根据本发明的一个实施例的服务器集群中的两个服务器与中间注册服务器之间的通信信道以及外部和内部端点信息;
图7是通过使用本发明的中间注册服务器的一个实施例建立的udp和dtls封装的隧道在服务器集群中的两个服务器之间的通信的逻辑表示;
图8是根据本发明的一个实施例的用于在中间注册服务器中建立服务器集群对等组注册表的通信示意图;
图9是本发明的一个方法实施例的用于在中间注册服务器中建立和维护组注册表的流程图;
图10是根据本发明的一个实施例的用于在中间注册服务器中建立邀请组并将附加服务器添加到现有服务器集群对等组中通信示意图;和
图11是本发明的一个方法实施例的用于在中间注册服务器中建立邀请组并将附加服务器添加到现有服务器集群对等组的方法流程图,
附图仅出于说明的目的描绘了本发明的实施例。本领域技术人员在不脱离本文所述的本发明的原理下,可以从以下讨论中容易地认识到采用本文所示的结构和方法的替代实施例。
具体实施方式
中间注册服务器可促进使用单个安全用户数据报协议(udp)跨公用互联网进行服务器集群通信。本发明的中间注册服务器及其相关的方法,能够使集群内的服务器和隔离在防火墙后面的服务器能够识别集群组中的对等服务器,即使它们位于不同的位置。使用共享给服务器集群对等组的每个成员的外部地址注册表,单个服务器可以使用单个udp隧道建立直接安全信道。
服务器集群可用于确保任务关键型应用程序的高可用性,并在服务器之间传递专有信息以进行故障恢复(主集群中一台或多个服务器发生故障)。本发明的一个或多个实施例在不使用虚拟专用网(vpn)或诸如ipsec的二级网络安全技术的情况下,在诸如公用互联网之类的不受信任的网络上创建服务器集群的操作配置。本发明还使得能够通过执行网络地址转换(nat)的路由器通信连接的互联网上的服务器集群,而无需任何特殊配置。
在本发明的服务器集群环境中使用的灵活的服务器到服务器的通信方式促进了服务器集群与在地理位置上的远程服务器(在逻辑上的远程网络上)的操作,仅使用具有nat路由器的标准互联网连接,而没有使用vpn或其他任何经过特殊配置的网络。与当前使用多个端口在单个服务器对之间建立安全通信隧道的系统不同,本发明使用单个udp端口建立地理上的远程服务器连接。通过合并两种不同类别的消息,服务器之间的所有数据都通过单个信道进行传输。一类消息用于通信,另一类消息是“管道路由器”,其运行方式与tcp非常类似。在udp下构建并封装了一个新的tcp栈。vpn连接打开了安全专用通信隧道中计算机之间的每个端口,而本发明打开并在单个专用udp外部端口上进行通信。
下面参考附图详细描述本发明的实施例。尽管已经以一定程度的特征描述和说明了本发明,但是应该理解,本公开仅通过示例的方式进行,并且本公开仅通过示例的方式进行,并且本领域技术人员可以在不脱离本发明的精神和范围的情况下对部件的组合和布置进行多种改变。
提供参考附图的以下描述以帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。它包括各种具体细节以帮助理解,但这些仅被视为示例性的。因此,本领域普通技术人员将认识到,在不脱离本发明的范围和精神的情况下,可以对这里描述的实施例进行各种改变和修改。此外,为了清楚和简明,以下描述中省略了对公知功能和结构的描述。
在以下描述和权利要求中使用的术语和名词不限于书面含义,而是仅由发明人使用以使得能够清楚和一致地理解本发明。因此,对于本领域技术人员来说显而易见的是,提供本发明的示例性实施例的以下描述仅用于说明目的,而不是为了限制由所附权利要求及其等同物限定的本发明的目的。
术语“基本上”是指所述特征、参数或值不需要精确地实现,而是可以实现为那些可能会以不排除所述特征意图提供的效果的量的偏差或变化,包括例如公差、测量误差、测量精度限制和本领域技术人员已知的其他因素。
相同的编号始终指代相同的元件。在附图中,为了清楚起见,可放大某些线、层、组件、元件或特征的尺寸。
这里使用的术语仅用于描述特定实施例的目的,而不是用于限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”也旨在包括复数形式,除非上下文中另有特别说明。因此,例如,对“组件表面”的引用包括对一个或多个这样的表面的引用。
如本文所用,对“一个实施例”的任何引用旨在结合该实施例描述的特定元件、特征、结构或特性包括在至少一个实施例中。在说明书中各处出现的短语“在一个实施例中”不一定都指的是同一实施例。
如这里所使用的,术语“包括”、“包含”、“构成”、“具有”、“含有”或其任何其他变型旨在涵盖非排他性的包含。例如,包括元件列表的过程、方法、产品或装置不一定仅限于那些元件,而是可以包括未明确列出的或者这种过程、方法、产品或装置固有的其他元件。此外,除非有相反的明确说明,否则“或”是指包含性的或不是排他性的。例如,以下任何一项表示满足条件a或b:a为真(或存在)且b为假(或不存在),a为假(或不存在)且b为真(或存在),且a和b均为真(或存在)。
为了本发明的目的,假定以下缩写词和术语代表:
ip-互联网协议。占据tcp和osi模型中的第3层。互联网协议负责确保将数据包发送到正确的目的地。
ipv4-互联网协议版本4,具有32位地址空间。
osi模型(opensystemsinterconnectionmodel)-开放系统互连模型,它是网络功能层的标准表征,使用七层而不是tcp模型的四层。
nat(networkaddresstranslation)-网络地址转换,一种用于将局域网连接到公用互联网的技术。nat使多个服务器(计算机)可以通过单个外部ipv4地址与公用互联网进行交互。
tcp(transmissioncontrolprotocol)-传输控制协议,一种面向流,可靠传递的数据传输协议。传输控制协议在应用程序和互联网协议之间的中间级别提供通信服务。它在互联网模型的传输层提供主机到主机的连接。应用程序不需要了解用于通过链接向另一主机发送数据的特定机制(例如所需的ip分段),以适应传输介质的最大传输单位。在传输层(osi模型中的第4层),tcp处理所有握手和传输详细信息,并通常通过网络套接字接口为应用程序提供网络连接的抽象化。
套接字(socket)-网络套接字是由主机名或ip地址和端口定义的端点实例,用于在计算机网络上的节点内发送或接收数据。套接字是网络软件或协议栈中端点的表示,并且在逻辑上类似于通过信道在两个节点之间的物理母连接,其中,该信道可视化为电缆,具有两个邮件连接器插入每个节点的套接字中。为了使网络上的两台计算机相互通信,它们必须知道彼此的端点实例(主机名/ip地址)才能交换数据。
隧道(tunnel)或隧道协议(tunnelingprotocol)(在本文中也称为信道)-在计算机网络中,隧道协议是一种通信协议,它允许数据从一个网络移动到另一个网络。它涉及允许通过称为封装的进程在公用网络(例如互联网)上发送专用网络通信。因为隧道涉及将流量数据重新打包为另一种形式(也许以加密为标准),所以它可以隐藏通过隧道运行的流量的性质。隧道协议通过使用数据包的数据部分(有效负载)来承载实际提供服务的数据包。隧道使用分层协议模型(例如osi或tcp/ip协议套件的分层协议模型),但是在使用有效负载来承载网络通常不提供的服务时,通常会违反分层协议。通常,传递协议在分层模型中的操作级别与有效负载协议相同或更高。
端口(port)-机器上的端口打开时,数据可以通过该端口流动。
udp(userdatagramprotocol)-用户数据报协议,是一种不必要按顺序的数据报传送协议,通过ip使用。udp使用具有最少协议机制的简单无连接通信模型。udp提供用于数据完整性的校验和,以及用于在数据报的源和目的地寻址不同功能的端口号。它没有握手对话,因此使用户程序暴露于底层网络的任何不可靠性。在osi模型中占据第4层。
lan(localareanetwork)-局域网
wan(wideareanetwork)-广域网,通常将远程站点彼此连接或连接到公用互联网的网络。公用互联网被视为wan。
vpn(virtualprivatenetwork)-虚拟专用网。第2层和/或第3层网络技术,允许通过wan(例如公用互联网)安全地扩展或桥接本地网络。
wsfc(microsoftwindowsserverfailoverclustering)-microsoftwindows服务器故障转移集群;允许服务器作为计算机集群一起工作的软件。
除非另外定义,否则这里使用的所有术语(包括技术和科学术语)具有与本发明所属领域的普通技术人员通常理解的含义相同的含义。将进一步理解,诸如在常用词典中定义的那些术语应被解释为具有与其在说明书的上下文中和相关领域的含义一致的含义,并且除非在本文中明确地如此定义,否则不应以理想化或过于正式的含义来解释。为简洁和/或清楚起见,可能未详细描述众所周知的功能或构造。
还应该理解,当一个元件被称为“接于”、“附接”、“连接”、“耦合”、“接触”、“安装”另一个元件时,它可以直接接于、附接、连接、耦合或接触其他元件,或者也可以存在中间元件。相反,当一个元件被称为例如“直接接于”、“直接附接”、“直接连接”、“直接耦合”或“直接接触”另一个元件时,不存在中间元件。本领域技术人员还将理解,对与另一特征“相邻”设置的结构或特征的引用可具有与相邻特征重叠或位于相邻特征之下的部分。
这里可以使用空间相对术语,例如“下面”,“底下”,“下方”,“外部”,“上面”等,以便于描述如图中所示的一个元件或特征与另一个元件或特征的关系。应当理解,除了图中所示的取向之外,空间相对术语旨在包括使用或操作中的装置的不同取向。例如,如果图中的装置被倒转,则被描述为在其他元件或特征“下方”或“下面”的元件将被“定向”在其他元件或特征之上。因此,示例性术语“下方”可以包括“上方”和“下方”的取向。装置可以以其他方式定向(旋转90度或在其他方位),并且相应地解释本文使用的空间相对描述。类似地,除非另有明确说明,否则本文使用术语“向上”、“向下”、“垂直”、“水平”等仅用于解释的目的。
介于集群中的多个服务器之间的中间注册服务器可以使用单个安全udp隧道进行直接的服务器到服务器通信。图4描绘了用于促进互联网上服务器集群通信的系统的高级架构。例如,可能存在一个用例,其中包含由特定组织拥有和运营的服务器的服务器集群位于该组织的数据中心中,而其他服务器则从云服务提供商(例如,amazonaws或microsoftazure)租用。为了创建所述的分布式服务器集群,仅需要在结合本发明的每个服务器上安装软件,并通过统一的udp信道将服务器连接在一起成为集群。其他集群软件(例如,microsoftwindows服务器故障转移集群)需要使用多个信道进行更为复杂的设置,并且包括配置和使用vpn。
lan内通过nat路由器连接到公用互联网的服务器不直接知道它是通过nat路由器连接的,也不知道nat路由器如何连接到公用互联网,或者不知道该nat路由器可能正在使用哪些公用互联网地址。服务器仅知道内部lan的寻址方案。nat路由器分配和管理内部端点地址,但在内部服务器和nat以外的网络(在大多数情况下是公用互联网)之间提供安全屏障(防火墙)。必须发现nat路由器的存在以及它如何在lan外部进行通信的特定细节,以促进互联网上服务器到服务器的通信。
本发明的开放实施例促进了nat路由器405的发现以及使用中间注册服务器(intermediaryregistryserver)410通过nat路由器的直接服务器到服务器通信。当被配置为这样做时,集群415内的每个服务器保持与中间注册服务器服务的周期性的最小接触,并且通过这样做从中间注册服务器接收其自身的明显外部地址和端口映射的报告以及它所在服务器集群中其他服务器的外部地址和端口映射。
使用中间注册服务器410,特定集群415中的服务器可以测试其是否通过nat路由器405连接到互联网420,并确定nat路由器是使用哪个公用互联网地址(在此也称为外部端点)。使用此信息,其他服务器可以使用该服务器的明显外部端点来发起通信。
中间注册服务器410不充当服务器到服务器通信的中继。而是,中间注册服务器测试通过nat路由器的连通性,向同一集群中的其他服务器报告一个服务器的存在,并在同一集群中的服务器之间共享观察到的外部端点。之后,使用此信息,集群中的每个服务器可以启动同一集群中其他服务器的端点发现。
本发明的一个实施例不是在服务器之间创建vpn隧道并为每个服务器打开所有端口,而是将任何两个服务器之间的所有通信合并为单个用户数据报协议数据报信道。通过这些udp数据报信道执行操作服务器集群所需的所有通信,并且不需要服务器之间的其他通信信道。相比之下,当前的集群软件比较使用许多不同的第4层通信信道,而很少关注合并或集成。这种做法既昂贵又效率低下。
udp通信信道不是本质上安全的。因此,本发明指定使用dtls协议为其udp数据报信道提供安全性,尽管公钥认证和会话密钥协商的任何类似方法都与本发明兼容,并且被认为在本发明的范围内。dtls允许信道两端的服务器使用公钥加密对另一个服务器进行身份验证,并对数据报有效载荷进行加密,以保护其内容免受不受信任网络上的闯入者的侵害。dtls与更常用的tls协议相似,但支持udp上的操作。
如图4所示,集群中的服务器425通信耦合到公用互联网420以及一个或多个客户端430。同样,通信耦合到公用互联网420的是中间注册服务器410、其他服务器445和集群415中的其他服务器。在每种情况下,服务器都位于一个或多个路由器405的后面,该路由器将服务器的外部端点从服务器中屏蔽出来。
集群中的每个服务器包括集群监视器440,该集群监视器440用于建立参与集群的所有可用服务器的通信,监视服务器可用性,通过其协调器提供虚拟同步,监视和同步集群服务的状态以及在集群服务成员之间中继命令。从服务器的集群监视器的角度来看,集群服务是参与命名服务器组的外部软件组件。因此,集群内的其他服务器415被视为提供集群服务。集群监视器还会通知参与同一集群或对等组的所有集群服务(其他服务器)彼此的存在以及对该组可能发生的任何更改。在每个服务器中,本地监视器组件充当集群服务。
请注意图4,集群监视器还包括:
ο组通信(groupcommunication)-组通信模块建立与集群中所有可用服务器的通信,监视服务器可用性和通信信道,并选择一个服务器作为集群协调器。
ο管道路由器和状态机(piperouterandstatemachine)-管道路由器和状态机在已建立的udp通信通道上提供了可靠的,有序的,面向流的消息信道。管道路由器和状态机管理管道套接字,包括侦听套接字和传出连接。管道状态机类似于大多数操作系统内核中的tcp模块,并且执行的功能大致相同。管道路由器和状态机在集群监视器组件中充当类似于tcp的私有软件组件。
οdtls会话管理器(sessionmanager)-dtls会话管理器负责通过单个udp信道与集群中的其他服务器建立经过身份验证的dtls会话。
ο注册表服务客户端(registryserviceclient)-注册表服务客户端管理与中间注册服务器的通信,包括nat配置发现、组注册和邀请。
ο集群服务状态机(clusterservicestatemachine)-集群服务状态机监视集群服务的可用性,处理对可用集群服务集的更改,并向当前在每个系统上运行的有效集群服务组件通知当前服务成员身份。
ο命令状态机(commandstatemachine)-命令状态机监视各种集群服务提交的中继命令的状态。该模块可确保中继命令的顺序一致,并将响应的可靠性发送回这些命令的发布者。
ο通信设置管理器(communicationsettingsmanager)-通信设置管理器维护有效集群的管理配置细节,包括系统列表、其网络地址、加密机密等。该管理器管理在有效集群中添加和删除系统的进程。
集群中的每个服务器还包括本地监视器450、健康监视器460、应用程序引擎470、主机引擎480以及处理器(机器)401和非暂时性存储介质402。本地监视器负责从用户界面接收请求并将请求转发到主机引擎、应用程序引擎和集群监视器。本地监视器及其所使用的其他子组件执行本发明的高可用性集群方面。本地监视器的功能包括:
ο客户端管理器(clientmanager)-客户端管理器处理传入的客户端请求,将请求传递给应用程序协调器或处理引擎,并维护客户端连接。
ο同步管理器(syncmanager)-同步管理器维护虚拟主机和应用程序的管理配置。当集群成员身份更改时,它还可以在系统之间同步配置。
ο应用程序协调器(applicationcoordinator)-应用程序协调器执行集群范围的管理命令,并维护与虚拟主机和托管应用程序有关的集群不变式。例如,如果系统发生故障,并且该系统正在托管特定的应用程序,则应用程序协调器将确保在另一个可用系统上重新启动该应用程序。
ο仲裁管理器(quorummanager)-仲裁管理器根据配置确定有效集群是否具有仲裁。如果没有仲裁,此管理器将关闭有效的应用程序。例如,如果同一集群的两个子组能够相互通信但无法彼此通信,则它们将形成两个独立的集群。仲裁管理器确保只有这些集群之一尝试启动应用程序。
ο分配管理器(allocationmanager)-分配管理器监视每个系统上有效的应用程序集,并根据配置的资源需求和可用性指导自动应用程序放置决策。
ο文件系统监视器(filesystemmonitor)-文件系统监视器监视应用程序的文件系统路径的可用性,并将状态信息报告给集群协调器。
ο处理引擎(processingengine)-处理引擎通过将请求转发到主机引擎,应用程序引擎和/或同步管理器来解析并执行客户端请求。
主机引擎480负责建立和维护虚拟主机和虚拟ip地址。它包括负责维护和管理虚拟主机的虚拟主机管理器,以及管理虚拟ip地址订阅的互联网地址管理器。集群中的每个服务器,除其他外,还包括本地监视器引擎、集群监视器引擎、主机引擎和应用程序引擎。主机引擎可操作以形成至少一个虚拟主机和相关联的虚拟互联网协议地址。为了本发明的目的,虚拟主机是在物理和虚拟服务器之上运行的逻辑实例容器,并且因此不包括操作系统。虚拟主机不是虚拟机。每个虚拟主机实例化并绑定到至少一个虚拟ip地址。服务器集群应用程序虚拟化包括至少一个应用程序实例化,该应用程序被配置为在每个服务器上一个或多个虚拟主机之一的顶部运行。因此,在故障转移后,虚拟主机将使用此实例中的安全udpdlts隧道与应用程序实例和虚拟ip地址一起迁移到另一个服务器。
应用程序引擎470负责建立和管理应用程序[sqlserver](即虚拟化应用程序)。应用程序引擎的功能包括:
ο数据库管理器(databasemanager)-数据库管理器维护和管理每个[sqlserver]应用程序实例的实例数据库文件。
ο实例管理器(instancemanager)-实例管理器维护和管理存储在磁盘上的实例配置。
ο集成管理器(integrationmanager)-集成管理器通过注册表和健康监视器处理实例注册。
健康监视器460负责监视应用程序状况并发信号通知故障转移或故障恢复事件。健康监控器的功能包括:
ο性能监视器(performancemonitor)-性能监视器监视系统以及相关应用程序进程的cpu、内存和i/o利用率。
ο服务观察器(servicewatcher)-服务观察器根据注册策略监视服务健康和引发事件。
ο警报措施处理器(alertactionprocessor)-警报措施处理器发送电子邮件和调用脚本以响应警报和应用程序条件。
中间注册服务器410(或模块)使用单个安全udp信道而不是更传统的vpn连接耦合地理上分离的服务器,以形成服务器集群。中间注册服务器包括几个模块,其功能包括:
ο成员身份列表管理器(membershiplistmanager)-成员身份列表管理器维护与之关联并与预共享密钥相关联的已知服务器,它们声称属于的对等组的列表,并通知同一对等组中的其他服务器对该组的更改。成员身份列表管理器还处理有关集群形成的邀请请求以及在指定对等组中添加新服务器的请求。
οdtls会话管理器(sessionmanager)-dtls会话管理器负责与充当客户端的服务器建立dtls会话。该管理器不用于身份验证,而是用于名义上的消息隐私。
ο连接日志管理器(connectionlogmanager)-连接日志管理器启用后,将维护以下日志:与中间注册服务器建立了联系的服务器,建立联系以及失去联系的服务器。该管理器可用于潜在的计量和计费目的。
ο配置管理器(configurationmanager)-配置管理器维护中间注册服务器的配置,包括它应该监听的地址和服务器黑名单。
本发明使得能够创建简化的地理集群,其中一个或多个服务器驻留在第一设施中(可能属于一个运营商),可以与位于地理位置上远程的设施中的其他服务器结合,以形成使用单个udpdlts信道在互联网上分布的服务器集群。这些服务器虽然不是并置的,也不是lan的一部分,但可以使用标准的互联网连接和nat路由器形成集群。
如图5所示,除其他功能外,具有集群监视器515和本地监视器520的第一服务器510在lan内与nat路由器525交互。在这种情况下,第一个服务器打开到路由器525的udp端口7981。路由器525管理此服务器以及lan中的其他服务器,但通过udp端口39876从外部将其表示为55.44.33.22。
类似地,第二服务器540(服务器2)通过udp端口7981与它的路由器555交互。第二个nat路由器555通过udp端口46789具有66.55.44.33的外部端点地址。
在第一路由器525和第二路由器555之间插入的是本发明的公用互联网560和中间注册服务器570。在该示例中,中间注册服务器知道第一服务器570和第二服务器540认为它们各自的路由器。相关领域的技术人员可以理解,在每个nat路由器后面可能存在多个服务器,并且还将多个其他nat路由器和服务器也耦合到互联网。此外,在中间注册服务器之间与最终局域网内的每个服务器之间可能会有多个nat路由器。如将在下文中描述的,基于每个服务器与相同的预共享密钥相关联,中间注册服务器将外部和内部端点信息传送到两个服务器。
在本发明的另一个实施例中,可以创建云到本地服务器集群。可以使用本文所述的技术将属于运营商的一个或多个服务器与从云托管提供商租用的一个或多个服务器组合以创建服务器集群。本发明使实体能够扩展和解决对附加能力的需求,而无需为附加硬件投入资源。
附加参考图6,可以更好地理解图5中所示的中间注册服务器的角色。本发明的中间注册服务器670通信地耦合到公用互联网660。在图6所示的示例中,主数据中心610和云备份集群640也通信地耦合到互联网。如相关领域的普通技术人员将认识到的,数据中心和云备份集群的图示说明了本发明的灵活性和可伸缩性。
在该示例中,主数据中心610包括两个代表性节点612、614或服务器,否则它们可以被认为可以代表或不代表主数据中心所容纳的集群中的两个节点。备份集群包括两个代表性的备份服务器642、644。本发明的一种应用是使包括备份和故障转移资源在内的集群技术能够在公用互联网660上分布而无需昂贵的vpn连接的能力。在图6所示的两种配置情况下,主节点612、614和备份服务器642、644通过nat路由器625、655连接到互联网660。每个路由器在lan周围形成防火墙,从而创建lan内的那些服务器或节点与互联网通信的信道以及网关,与该服务器或节点的任何外部连接都必须通过该网关。
从公用互联网的角度以及任何尝试到达每个相应lan内的服务器或节点的实体的角度来看,这些实体将对路由器的外部端点地址进行寻址。随后,路由器将使用消息中包含的信息来识别lan中的哪个服务器或节点来引导消息。在这种情况下,主数据中心610的外部端点地址是55.44.33.22。在主数据中心内部,节点1612的内部端点地址为10.1.100.101,节点2614的内部端点地址为10.1.100.102。当通信到达主数据中心时,nat路由器使用这些地址将其定向到正确的位置。
类似地,云备份集群640的外部端点地址是66.55.44.33。备份1642的内部端点地址是192.168.1.101,备份2644的内部端点地址是192.168.1.102。
本发明的中间注册服务器670也可通信地耦合到公用互联网660,并在其外部端点地址77.66.55.44下被识别。中间注册服务器670充当连接代理,以使位于lan内的服务器或节点能够彼此安全地通信,而没有专用vpn连接的成本和低效。本发明通过在有效对等列表680或注册表中为每个服务器或节点存储外部和内部端点信息来部分地实现这一点。
为了更好地理解中间注册服务器的作用,请考虑以下示例。假设节点2614希望将备份2644建立为故障转移服务器,以提供高可用性的应用程序服务。为此,备份2644和节点2614必须直接通信,但是它们位于不同的位置,并且只能通过互联网660进行通信。为了建立安全连接,节点2必须知道备份2的外部和内部端点地址。同样,备份2必须知道节点2的外部和内部端点地址才能接受和验证通信。
在正常情况下,节点2614将使用备份2的外部端点地址将消息定向到其nat路由器625。该消息将从10.1.100.102.7981发送到主数据中心的nat路由器625,其中7981是路由器和节点之间的端口。该消息中将包含标识备份2644和云备份集群的外部端点地址66.55.44.33的数据。使用该信息,主数据中心路由器625将把消息从55.44.33.22.32.39876发送到云备份集群路由器65566.55.44.33.46789。一旦云备份集群路由器655接收到该消息,它将把该消息转发到192.168.1.102.7982处的备份2644。不幸的是,端口和地址都是动态的。
中间注册服务器670向双方提供内部和外部端点信息,以便他们可以直接通信。再次参考图6,并且根据本发明,来自节点2614的,指向中间注册服务器670的消息再次来自55.44.33.22.39876,但是指向77.66.55.44.7982。类似地,从备份2644到中间注册服务器670的消息是从66.55.44.33.46789到77.66.55.44.46789。
在从节点2614和备份2644接收到消息之后,中间注册服务器670就其内部端点从每一方信息中响应和获取。它还将此信息与预共享密钥相关联。由于节点2614和备份2644是同一服务器集群系统的一部分,因此它们都具有相同的预共享密钥,并因此由中间注册服务器670关联为同一对等组的成员。预共享密钥是通过电子邮件、文件传输或类似机制与本发明分开共享的密码密钥。该密钥表示与集群的关联以及对等组的形成。作为对等组的成员,每个都在中间注册服务器670处接收对存储在外部端点注册表680中的另一个端点信息的访问。有了这样的信息,如下文所述,两者都可以发起与对方的直接安全通信。
图7呈现了由本发明的中间注册服务器启用的udp信道的逻辑描述。与图6一样,图7显示了通过udpdtls信道730在节点2614和备份2644之间的逻辑连接。通过udpdtls信道发送的消息至少有两种形式,分别用于不同的目的。这些包括:
·组通信协议消息(“成员身份消息”)由组通信管理器740管理的这些消息用于确定服务器集群的其他成员的响应性,以就当前哪些服务器可用以及哪个服务器是集群协调器达成组共识。这些消息不需要可靠地传递或以任何特定顺序传递,但是必须尽快传递,以便对通信丢失做出快速反应。
·管道消息。管道消息750提供类似于终端控制协议(tcp)消息的可靠传递,面向流的信道。管道消息在套接字会话上下文中运行,并使用类似于tcp的端口号进行多路复用和路由。管道套接字上的数据可靠且有序地传递,并承担所有更高级别的集群管理功能的流量。管道消息需要复杂的状态机来生成和处理。
使用预共享密钥,节点2614和备份2644建立可以交换管道消息750的安全信道730。例如,节点2710的套接字实例5333通过节点1的套接字端口映射760传输到备份2的套接字端口映射765,再到备份2720的套接字实例7777。由于每个节点可以具有多个实例,并且每个lan可以具有多个节点,所以节点2和备份2的通信管理器740管理管道及其与对等组的成员身份。
为了进一步帮助对本发明的理解,流程图描述了可用于根据本发明通过互联网在服务器集群中的服务器之间创建udpdtls消息传递的方法的例子。在以下描述中,将理解流程图图示的每个框以及流程图图示中的框的组合可以由计算机程序指令实现。这些计算机程序指令可以加载到计算机或以产生机器的其他可编程装置上,使得在计算机或其他可编程装置上执行的指令创建用于实现流程图框中指定的功能的方式。这些计算机程序指令还可以存储在计算机可读存储器中,该计算机可读存储器可以指示计算机或其他可编程装置以特定方式运行,使得存储在计算机可读存储器中的指令产生包括用于实现流程图框中指定的功能的方式的指令装置的制品。计算机程序指令也可以加载到计算机或其他可编程装置上,以使得在计算机或其他可编程装置上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机上执行的指令或其他可编程装置提供用于实现流程图框中指定的功能的步骤。
因此,流程图图示的框支持用于执行指定功能的装置的组合以及用于执行指定功能的步骤的组合。还将理解,流程图图示的每个框以及流程图图示中的框的组合可以由执行特定功能或步骤的专用基于硬件的计算机系统或专用硬件和计算机指令的组合来实现。
中间注册服务器和驻留在每个服务器上的集群监视器的中间客户端组件使用下面描述的简化的面向消息的系统进行通信,如图8和9所示。集群中的每个服务器都包含一个状态机,用于维持与中间注册服务器的联系。(另请参见图4b)通信系统具有以下描述的行为:
1.每个集群监视程序实例使用一个udp套接字与同一集群的其他服务器以及中间注册服务器910通信。通常,此udp套接字绑定到众所周知的udp端口。集群监视器实例可以选择使用绑定到伪随机端口的辅助udp套接字,以通过发现的端点与中间注册服务器和其他服务器通信。使用相同的套接字与其他服务器以及中间注册服务器进行通信有助于端点发现,因为大多数类型的nat路由器将对相同的内部地址和端口使用相同的外部地址映射。这允许中间注册服务器正确报告明显的外部端点。
2.与中间注册服务器的通信是通过udp端口进行的,通常认为传输是不可靠且无序的。
·因此,集群服务器可能需要重新传输请求930、940、945,直到接收到响应或由于与中间注册服务器失去联系而超时。按照设计,集群服务器将在重置会话990之前最多重试10次945。
·此外,每个集群服务器必须与中间注册服务器保持周期联系,否则中间注册服务器将认为服务器已丢失,并从注册表中删除其注册数据。
3.集群服务器接下来将与中间注册服务器建立dtls会话。集群服务器可以与中间注册服务器建立多个dtls会话,以支持冗余网络路径,并且将使用cookie值(在下面的步骤4中进行描述)来通知中间注册服务器两个会话属于同一逻辑集群服务器。
4.集群服务器将通过发送报告消息来与中间注册服务器确认960其当前已知的明显外部端点地址。该报告消息不包含其他数据。中间注册服务器将响应“状态”消息,其中包含:
·与集群服务器关联的cookie值(预共享密钥),该cookie值是在创建dtls关联时随机生成的,或者是从另一个dtls关联生成的,并在客户端随后将其自身注册到集群组时指定的。cookie值允许链接属于客户端的多个dtls关联;
·每个集群服务器用来与中间注册服务器通信的明显外部端点地址;和
·序列号,针对集群服务器为其发出注册的每个集群组。
5.为了根据需要在中间注册服务器的主机列表中创建或更新其条目950,集群服务器将发送注册消息965。中间注册服务器通过报告的组标识维护服务器列表。组标识基于一个加密密钥,该密钥在属于同一集群的所有服务器之间预先共享。注册消息包含:
·cookie值,由服务器作为状态消息的一部分返回(上面在步骤4中描述);
·服务器的主集群组的128位标识值;
·使用主集群组预共享密钥对包含服务器名称和内部端点地址的加密的加密数据blob;
·(可选的)集群服务器邀请组的128位标识值;和
·(可选的)使用一次通过密钥(在此也称为邀请密钥)对包含集群服务器的名称和已知的内部端点地址加密的加密数据blob。
6.注册消息将通过以下任一方式回复到980:
·来自中间注册服务器的状态消息(上面在步骤4中进行了描述)960,指示自上次请求注册以来,对等组成员身份尚未更改,或者
·对等列表消息,包括集群对等组的修订版号,以及集群组中所有其他已知对等的注册详细信息,包括其加密的blob。
7.对等列表消息向与中间注册服务器联系的特定对等组的所有服务器提供全部信息。每个服务器都具有对等组中所有其他服务器的明显的外部端点地址,并且可以尝试启动与每个服务器的直接通信。在本发明的一个实施例中,尝试从所有可能的方向进行通信,以支持遍历对称nat。
8.当集群组的组成发生更改时,中间注册服务器将向未受更改影响的所有注册组成员发送并更新状态消息,其中描述了新的对等列表,组成员的特定添加、更新和删除。
中间注册服务器还提供了使用中间注册服务器创建新集群并将服务器添加到现有集群的用例。为此,必须另外参考图10和11,如下所述首先必须建立邀请。
1.该过程开始于客户端发起的使用中间注册服务器使用otpk的dtls会话1110。
·现有组的客户端服务器请求1120创建与otpk相关的邀请组。
·此后,中间注册服务器创建1130,并将其与具有现有对等组/集群的邀请组相关联。
·现有集群或新集群的第一个服务器也可以向中间注册服务器注册可选的辅助邀请集群组(以上在步骤5中进行了描述)
·邀请组的集群组标识值是从一次性密钥(otpk)派生的,其是由服务器发起请求时随机生成的。该otpk用于加密blob,并与要添加到集群的每个新服务器共享。
2.为了使用中间注册服务器将新服务器加入现有集群,要加入的服务器(在本文中也称为附加服务器)将与中间注册服务器创建dtls关联,并发送1150rsvp消息,包括:
·目标邀请组的集群组标识;和
·加密的数据blob,将中继到随机选择的邀请集群组的成员。
3.中间注册服务器将通过以下方式响应:
·随机选择邀请集群组的注册成员;
·向邀请的注册成员发送邀请消息1160,包括请求(附加)服务器发送的加密数据块;和
·向请求(附加)客户端1170发送邀请消息,其中包括随机选择的注册成员的加密数据blob,该消息是该成员最后更新其组注册时由选定的注册成员提供的。
4.然后,所选注册成员和新服务器可以直接通信1175。如果邀请消息中的任何一个丢失,则发起方可以重新发送rsvp消息。邀请消息被发送到发起者和所选的注册成员,以支持遍历对称nat路由器并协商对等组1180中的成员身份。
5.此后,向附加服务器提供对等组(源集群)预共享密钥1190,该密钥使附加服务器能够将对等组作为集群的新成员加入1195。
通常,当网络服务器组件(例如“集群监视器”)打开udp套接字以从其对等方接收消息时,它将udp套接字绑定到与其协议和用例相关联的众所周知的端口。使用众所周知的端口可以使对等方提前知道服务将在哪个端口上接收消息,并允许网络故障排除工具快速对此类流量进行分类。执行端点发现时,将发现集群监视器使用的udp套接字的端口号,并且不再需要使用众所周知的端口。为了支持使用nat路由器进行可靠的端点发现,集群监视器组件可以改用绑定到伪随机端口的udp套接字,以使用中间注册服务器进程发现的端点与集群的中间注册服务器和外部服务器进行通信。某些nat路由器使用传出消息的内部udp源端口作为关联的外部端点地址映射的基础,并且如果同一nat路由器后面的两个服务器尝试使用相同的众所周知的udp端口进行外部通信,则nat路由器可能会为每个服务器选择不可预测且不一致的外部端点映射。使用伪随机端口,特定服务器上的本发明的集群监视器组件每次重新启动时将选择相同的端口,但是在不同服务器上运行的集群监视器组件将倾向于选择不同的端口。
本发明使得能够通过中间注册服务器促进的使用单个安全用户数据报协议(udp)的跨公用互联网的服务器集群通信。中间注册服务器使集群中的服务器能够跨不同的位置并通过防火墙识别集群中的对等服务器并与之安全通信。使用共享给服务器集群对等组的每个成员的外部地址注册表,各个服务器可以使用单个udp隧道建立直接的安全信道。
在一个实例中,本发明可以实现为一种机器实现的方法,包括以下步骤:
ο服务器使用用户数据报协议(udp)信道向中间注册服务器发送报告消息,其中,所述报告消息与udp外部端点和udp内部端点相关联;
ο所述中间注册服务器通过所述udp信道响应所述服务器,以寻求所述服务器的udp外部端点的确认;
ο所述中间注册服务器接收所述服务器的udp外部端点的确认;和
ο响应于接收到来自所述服务器的确认,所述服务器的所述upd外部端点处于有效状态,并由所述中间注册服务器在外部地址注册表中记录服务器的服务器标识、所述udp外部端点和所述udp内部端点。
如上所述的方法的其他特征包括:
ο通过所述udp外部端口在所述服务器与所述中间注册服务器之间建立安全连接,并且,其中所述udp信道是单个udp信道。
ο所述安全连接是数据报传输层安全性(dtls)会话。
ο在所述服务器与所述中间注册服务器之间建立多个附加的安全连接,其中,所述中间注册服务器将每个附加的安全连接作为与所述服务器的逻辑连接进行关联。
ο所述服务器用cookie值进行响应,以在逻辑上将多个安全连接与所述服务器、标识对等组的预共享密钥以及使用该预共享密钥加密的注册数据进行逻辑关联。
ο中间注册服务器向服务器发送外部地址注册表状态消息,以确认服务器在外部地址注册表中的udp信道的列表以及由注册服务器在对等组中注册的其他服务器的列表。
ο所述列表包括允许服务器之间的直接通信的所述对等组中的每个服务器的注册数据,所述注册数据选自下组:服务器标识、udp信道、udp外部端点和预共享密钥。
ο所述外部地址注册表状态消息包括基于所述预共享密钥的所述对等组中每个服务器的成员身份状态以及所述对等组中任何服务器的成员身份状态的任何更改。
ο所述中间注册服务器从所述服务器接收创建邀请组的请求,其中,所述邀请组与一次性私钥(otpk)相关联,并且由所述中间注册服务器形成所述邀请组,其中所述对等组中的每个成员都与所述邀请组相关联。
ο所述中间注册服务器通过新的udp信道与附加服务器建立新的安全连接,从所述附加服务器接收具有所述otpk的注册数据,其中所述otpk用于标识所述邀请组,并所述中间注册服务器将来自附加服务器的注册数据发送到所述对等组的随机选择成员,并将来自所述对等组的随机选择成员的注册数据发送给所述附加服务器。
ο使用所述otpk,在所述对等组的随机选择成员与所述附加服务器之间建立安全通信信道,确认所述对等组中的所述附加服务器的成员身份,由所述对等组的随机选择成员向所述附加服务器提供所述预共享密钥,并将所述附加服务器建立为所述对等组的成员,并
ο响应于所述中间注册服务器从所述附加服务器接收到响应,还包括将所述附加服务器作为所述对等组的成员添加到所述外部地址注册表。
本发明还可以通过一种非暂时性机器可读存储介质来实现,该介质上存储了用于执行一种方法的指令,该指令包括机器可执行代码,当该机器可执行代码由至少一台机器执行时,使得该机器:
ο服务器使用用户数据报协议(udp)端口向中间注册服务器发送报告消息,其中,所述报告消息与udp外部端点和udp内部端点相关联;
ο所述中间注册服务器通过udp信道响应所述服务器,以寻求所述服务器的udp外部端点的确认;
ο所述中间注册服务器接收所述服务器的udp外部端点的确认;和
ο响应于接收到来自所述服务器的确认,所述服务器的所述upd外部端点处于有效状态,并由所述中间注册服务器在外部地址注册表中记录服务器的服务器标识、所述udp外部端点和所述udp内部端点。
该非暂时性存储介质可以进一步包括使机器执行以下操作的机器可执行代码:
ο通过udp外部端点在服务器和中间注册服务器之间建立安全连接,其中该安全连接是数据报传输层安全性(dtls)会话;
ο在所述服务器与所述中间注册服务器之间建立多个附加的安全连接,其中,所述中间注册服务器将每个附加的安全连接作为与所述服务器的逻辑连接进行关联。
ο所述服务器用cookie值进行响应,以在逻辑上将多个安全连接与所述服务器、标识对等组的预共享密钥以及使用该预共享密钥加密的注册数据进行逻辑关联。
ο中间注册服务器向服务器发送外部地址注册表状态消息,以确认服务器在外部地址注册表中的udp信道的列表以及由注册服务器在对等组中注册的其他服务器的列表。
ο所述列表包括允许服务器之间的直接通信的所述对等组中的每个服务器的注册数据,所述注册数据选自下组:服务器名称、udp外部端点、udp内部端点和预共享密钥。
ο所述外部地址注册表状态消息包括基于所述预共享密钥的所述对等组中每个服务器的成员身份状态以及所述对等组中任何服务器的成员身份状态的任何更改。
ο所述中间注册服务器从所述服务器接收创建邀请组的请求,其中,所述邀请组与一次性私钥(otpk)相关联,并且由所述中间注册服务器形成所述邀请组,其中所述对等组中的每个成员都与所述邀请组相关联。
ο所述中间注册服务器通过新的udp信道与附加服务器建立新的安全连接,从所述附加服务器接收具有所述otpk的注册数据,其中所述otpk用于标识所述邀请组,并所述中间注册服务器将来自附加服务器的注册数据发送到所述对等组的随机选择成员,并将来自所述对等组的随机选择成员的注册数据发送给所述附加服务器。
ο使用所述otpk,在所述对等组的随机选择成员与所述附加服务器之间建立安全通信信道;由所述对等组的随机选择成员向所述附加服务器提供所述预共享密钥,并将所述附加服务器建立为所述对等组的成员,并
ο将所述附加服务器作为对等组的成员添加到外部地址注册表中。
本发明也可以被认为是用于通过公共广域网在服务器集群中的服务器之间的通信的计算机系统。在这种情况下,计算机系统可以包括能够执行体现为软件的指令的机器和多个软件部分,其中,该软件部分配置为:
ο服务器使用用户数据报协议(udp)端口向中间注册服务器发送报告消息,其中,所述报告消息与udp外部端点和udp内部端点相关联;
ο所述中间注册服务器通过udp信道响应所述服务器,以寻求所述服务器的udp外部端点的确认;
ο所述中间注册服务器接收所述服务器的udp外部端点的确认;和
ο响应于接收到来自所述服务器的确认,所述服务器的所述upd外部端点处于有效状态,并由所述中间注册服务器在外部地址注册表中记录服务器的服务器标识、所述udp外部端点和所述udp内部端点。
熟悉本领域的技术人员将理解,在不脱离本发明的精神或基本特征的情况下,本发明可以以其他特定形式实施。同样,模块、管理器、功能、系统、引擎、层、特征、属性、方法和其他方面的特定命名和划分不是强制性的或重要的,并且实现本发明或其特征的机制可以具有不同的名称、分区和/或格式。此外,对于相关领域的普通技术人员将显而易见的是,可以将本发明的模块、管理器、功能、系统、引擎、层、特征、属性、方法和其他方面实现为软件、硬件、固件或三者的任意组合。当然,在将本发明的组件实现为软件的任何地方,该组件可以实现为脚本、独立程序、较大程序的一部分、多个单独的脚本和/或程序、静态、或者动态链接库、内核可加载模块、设备驱动程序和/或为计算机编程领域的技术人员所知的现在或将来的每种和任何其他方式。另外,本发明不限于以任何特定编程语言或任何特定操作系统或环境的实现。因此,本发明的公开意图是说明性的,而不是限制权利要求中阐述的本发明的范围。
在优选实施例中,本发明可以用软件实现。体现本发明的软件编程代码通常由微处理器从某种类型的长期永久存储介质访问,例如闪存驱动器或硬盘驱动器。软件编程代码可以体现在各种已知介质中的任何一种上,以与数据处理系统一起使用,例如磁盘、硬盘驱动器、cd-rom等。代码可以分布在这样的介质上,或者可以通过某种类型的网络从一个计算机系统的存储器分发到其他计算机系统以供这些其他系统使用。或者,编程代码可以体现在设备的存储器中,并由微处理器使用内部总线访问。在存储器中、在物理介质上实现软件编程代码和/或经由网络分发软件代码的技术和方法是公知的,并且在此不再进一步讨论。
通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。而且,本领域技术人员将理解,本发明可以用其他计算机系统配置、多处理器系统、基于微处理器的或可编程的消费电子产品、网络pc、小型计算机、大型计算机等来实践。本发明优选地在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
用于实现本发明的示例性系统包括通用计算设备,例如常规计算机、个人通信设备等的形式,通用计算设备包括处理单元、系统存储器以及耦合各种系统组件的系统总线,包括耦合系统内存到处理单元的总线。系统总线可以是若干类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任何总线架构的本地总线。系统存储器通常包括只读存储器(rom)和随机存取存储器(ram)。基本输入/输出系统(bios)存储在rom中,其包含有助于在个人计算机内的元件之间传输信息的基本例程,例如在启动期间。该计算机可以进一步包括用于从硬盘读取和写入硬盘的硬盘驱动器,用于从可移动磁盘读取或写入的磁盘驱动器。硬盘驱动器和磁盘驱动器分别通过硬盘驱动器接口和磁盘驱动器接口连接到系统总线。驱动器及其相关的计算机可读介质为个人计算机提供了计算机可读指令、数据结构、程序模块和其他数据的非暂时性非易失性存储。尽管这里描述的示例性环境采用硬盘和可移动磁盘,但是本领域技术人员应该理解,可以存储可由计算机访问的数据的其他类型的计算机可读介质也可以用于示例性的操作环境。
尽管上面已经结合中间注册服务器描述了本发明的原理,该中间注册服务器被配置为能够通过公用互联网进行直接udpdlts通信,从而支持分布式服务器集群操作,但是应该清楚地理解,前面的描述仅通过例子方式进行,而不是对本发明范围的限制。特别地,应认识到,前述公开内容的教导将暗示对相关领域的技术人员的其他修改。这些修改可以涉及本身已知的其他特征,并且可以代替或补充本文已经描述的特征的其他特征。尽管在本申请中已经将权利要求公式化为特征的特定组合,但是应当理解,本文公开的范围还包括明确或隐含地公开的任何新颖特征或特征的任何新颖组合,或者对于相关领域的技术人员显而易见的任何概括或修改,无论是否涉及与任何权利要求中目前要求保护的相同的发明,以及它是否减轻了与本发明所面临的任何或所有相同的技术问题。申请人特此保留在本申请或由此衍生的任何其他申请的审查期间针对此类特征和/或此类特征的组合提出新权利要求的权利。