Confluence集群模式技术概述

这个怎么运作

基础

Confluence数据中心使您可以在类似于下图所示的群集中设置Confluence:

运行Confluence应用程序的多个服务器节点以及其他所需组件。

存储附件和其他共享文件的共享文件系统。 

所有节点读写的数据库。

负载均衡器,可将请求均匀地定向到每个节点。  

所有Confluence节点都处于活动状态并处理请求。用户将访问所有请求的相同Confluence节点,直到其会话超时,他们注销或从群集中删除节点。 

主页目录

Confluence拥有本地目录和共享目录的概念。 

每个Confluence节点都有一个本地主目录,其中包含日志,缓存,Lucene索引和配置文件。其他所有内容都存储在共享主目录中,群集中的每个Confluence节点都可以访问该主目录。Marketplace应用程序可以选择是否在本地或共享主页中存储数据,具体取决于应用程序的需求。 

如果您当前正在数据库中存储附件,则可以继续这样做,但这不适用于新安装。 

高速缓存

Confluence使用通过Hazelcast管理的分布式缓存。数据在集群中的所有Confluence节点上均匀分区,而不是在每个节点上进行复制。这样可以实现更好的水平可伸缩性,并且与完全复制的缓存相比,所需的存储和处理能力更低。 

由于此缓存解决方案,为了最大限度地减少延迟,您的节点应位于相同的物理位置。

索引

Confluence索引的完整副本分别存储在每个Confluence节点上。日志服务使每个索引保持同步。

首次设置群集时,您将本地主目录(包括索引)从第一个节点复制到每个新节点。

将新的Confluence节点添加到现有群集时,您将现有节点的本地主目录复制到新节点。当您启动新节点时,Confluence将检查索引是否是最新的,如果不是,则从共享主目录或正在运行的节点(具有匹配的内部版本号)请求索引的恢复快照,并将其提取到继续启动过程之前的索引目录。如果无法生成快照或新节点未及时收到快照,则将删除现有索引文件,Confluence将执行完整的重新索引。

如果Confluence节点在短时间内(小时)与群集断开连接,则它将能够使用日志服务在重新加入群集时使其索引副本保持最新。如果某个节点停机了很长时间(天),其Lucene索引将变得陈旧,并且它将从现有节点请求恢复快照,作为节点启动过程的一部分。 

如果您怀疑所有节点上的索引都存在问题,则可以在一个节点上临时禁用索引恢复,在该节点上重建索引,然后将新索引复制到每个剩余节点。  

集群安全机制

ClusterSafetyJob计划任务在Confluence中每30秒运行一次。在群集中,此作业仅在一个Confluence节点上运行。计划任务基于安全编号进行操作 - 安全编号是随机生成的编号,存储在数据库和群集中使用的分布式缓存中。ClusterSafetyJob将数据库中的值与缓存中的值进行比较,如果值不同,Confluence将关闭节点 - 这称为cluster split-brain。此安全机制用于确保您的群集节点无法进入不一致状态。 

如果确实发生了群集裂脑,则需要确保群集节点之间的网络连接正确。最有可能的是,多播流量被阻止或未正确路由。

这种机制也存在于独立的Confluence中。 

平衡正常运行时间和数据完整性 

通过更改群集安全预定作业运行的频率和Hazelcast心跳的持续时间(控制节点在从群集中删除之前可以脱离通信的时间),您可以微调群集中正常运行时间和数据完整性之间的平衡。在大多数情况下,默认值是合适的,但在某些情况下,您可能决定权衡数据完整性以延长正常运行时间。

集群锁和事件处理

如果操作必须仅在一个节点上运行,例如计划作业或发送每日电子邮件通知,Confluence将使用群集锁来确保仅在一个节点上执行操作。  

同样,某些操作需要在一个节点上执行,然后发布给其他节点。事件处理确保Confluence仅在提交和完成当前事务时发布集群事件。这是为了确保在接收和处理事件时,存储在数据库中的任何数据都可用于群集中的其他实例。事件广播仅针对某些事件进行,例如启用或禁用应用。

群集节点发现

配置群集节点时,您可以提供每个群集节点的IP地址或多播地址。

如果您正在使用多播:

Confluence将在多播网络地址上广播加入请求。Confluence必须能够在此多播地址上打开UDP端口,否则将无法找到其他群集节点。一旦发现节点,每个节点都响应一个单播(正常)IP地址和端口,可以联系它以进行缓存更新。Confluence必须能够打开UDP端口以与其他节点进行常规通信。

可以从群集名称自动生成多播地址,也可以在设置第一个节点期间输入自己的多播地址。 

群集节点

您的数据中心许可证不限制群集中的节点数。我们已经测试了多达4个节点的性能和稳定性。 

虽然每个节点不需要相同,但为了保持一致的性能,我们建议它们尽可能接近。所有群集节点必须:

位于同一数据中心 

运行相同的Confluence版本(对于Confluence节点)或相同的Synchrony版本(对于Synchrony节点)

拥有相同的操作系统,Java和应用程序服务器版本

具有相同的内存配置(JVM和物理内存)(推荐)

配置相同的时区(并保持当前时间同步)。使用ntpd或类似的服务是确保这一点的好方法。 

 您必须确保节点上的时钟不会发散,因为它可能会导致群集出现一系列问题。

内存要求

汇流节点

我们建议每个Confluence节点至少有10GB的RAM。大量并发用户意味着将消耗大量RAM。

以下是如何在不同大小的计算机上分配内存的一些示例: 

内存每个Confluence节点的细分

10GB2GB用于操作系统和实用程序

4GB用于Confluence JVM(-Xmx 3GB)

2GB用于外部进程池(2个沙箱,每个-Xmx 512MB)

2GB用于Synchrony

16 GB2GB用于操作系统和实用程序

10GB用于Confluence JVM(-Xmx 8GB)

2GB用于外部进程池(2个沙箱,每个-Xmx 512MB)

2GB用于Synchrony

Confluence应用程序的最大堆(-Xmx)在setenv.sh或setenv.bat文件中设置。应为数据中心增加默认值。我们建议保持最小(Xms)和最大(Xmx)堆的值相同。

外部进程池用于外部化内存密集型任务,  以最大限度地减少对各个Confluence节点的影响。这些流程由Confluence管理。使用系统属性设置每个进程(沙箱)的最大堆(-Xmx)以及池中的进程数。 在大多数情况下,默认设置就足够了,您无需执行任何操作。 

独立同步群集节点

协作编辑需要同步。默认情况下,它由Confluence管理,但您可以选择在其自己的群集中运行Synchrony。 

如果您确实选择运行自己的Synchrony群集,我们建议允许2GB内存用于独立同步。这是一个如何在专用的Synchrony节点上分配内存的示例。 

物理RAM每个Synchrony节点的细分

4GB2GB用于操作系统和实用程序

2GB用于Synchrony JVM(-Xmx 1GB)

数据库

群集数据库最重要的要求是它有足够的连接可用于支持节点数。

例如,如果:

每个Confluence节点的最大池大小为20个连接

每个Synchrony节点的最大池大小为15个连接(默认值)

您计划运行3个Confluence节点和3个Synchrony节点 

您的数据库服务器必须至少允许105个连接到Confluence数据库。实际上,出于调试或管理目的,您可能需要超过最小值。

您还应确保在当前支持的平台中列出您的目标数据库  。平均群集解决方案的负载高于独立安装,因此使用受支持的数据库至关重要。

您还必须使用支持的数据库驱动程序。如果您使用的是不受支持的或自定义的JDBC驱动程序(或者driverClassName在JNDI数据源连接的情况下),则协作编辑将失败并显示错误  。

共享主目录和存储要求

所有Confluence集群节点都必须能够访问同一路径中的共享目录。支持NFS和SMB / CIFS共享作为共享目录的位置。由于此目录将包含大量数据(包括附件和备份),因此应该具有足够的大小,并且您应该制定计划,以便在需要时增加可用磁盘空间。

负载平衡器

我们建议您使用最熟悉的负载均衡器。负载均衡器需要支持“会话亲和性”和WebSockets。这是Confluence和Synchrony都需要的。如果您在AWS上部署,则需要使用应用程序负载均衡器(ALB)。

以下是配置负载均衡器时的一些建议:

负载均衡器处的队列请求。通过确保提供给节点的最大请求数不超过Tomcat可以接受的http线程总数,可以避免压倒一个节点的请求数超出其处理能力。你可以查看maxThreads<install-directory>/conf/server.xml。

不要在其他节点上重放失败的幂等请求,因为这会非常快速地在所有节点上传播问题。

使用最少连接 作为负载平衡方法而不是循环,可以在节点加入群集或移除后重新加入时更好地平衡负载。

许多负载均衡器需要URL来不断检查其后端的运行状况,以便自动将其从池中删除。为此使用稳定且快速的URL非常重要,但要足够轻便,不要消耗不必要的资源。以下URL返回Confluence的状态,可用于此目的。 

网址预期内容预期的HTTP状态

HTTP:// <confluenceurl> /status{ “status”: “RUNNING”}200OK

在设置监控时,以下是一些建议可以帮助节点解决小问题,例如长时间的GC暂停: 

在删除节点之前等待连续两次失败。

在从池中删除节点之前,允许与节点的现有连接完成,例如30秒。  

网络适配器

使用单独的网络适配器进行服 群集节点应具有单独的物理网络(即单独的NIC),用于服务器间通信。这是使群集快速可靠地运行的最佳方法。如果通过具有大量其他数据流的网络连接群集节点,则可能会出现性能问题。 

协作编辑的附加要求

Confluence 6.0及更高版本中的协作编辑由Synchrony提供支持,它作为一个单独的进程运行。

如果您拥有Confluence数据中心许可证,则有两种方法可用于运行Synchrony:

由Confluence管理(推荐)

Confluence将在同一节点上自动启动Synchrony进程,并为您管理。无需手动设置。

独立同步集群(由您管理)

您可以根据需要在自己的集群中部署和管理Synchrony独立节点。需要进行重大设置。

如果您想要简单的设置和维护,我们建议您允许Confluence为您管理Synchrony。如果您想要完全控制,或者确保编辑器具有高可用性是必不可少的,那么在自己的集群中管理Synchrony可能是您组织的正确解决方案。 

高可用性的附加要求

Confluence数据中心将应用程序服务器作为单点故障删除。通过确保负载均衡器,数据库和共享文件系统也具有高可用性,您可以进一步最小化单点故障。 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容