集群
到目前为止,我们的 Jira 实例是在独立模式下运行的,这意味着它是在为自己的所有请求提供服务,还没有启用集群功能。在集群中运行 Jira 的一些主要优势如下:
-
提高规模性能:通过运行具有多个节点的集群,Jira 为并发用户请求提供服务的能力大大提高,从而缩短了响应时间并提高了整体用户满意度。
-
高可用性和故障切换:在集群中运行多个节点后,如果任何单个节点因故不可用,集群中的其它节点可以继续为用户提供服务,从而避免停机。
-
零停机升级:通常,当您需要升级 Jira 时,过程中会涉及停机。在运行 Jira 集群时,您可以一次单独升级每个节点,这样集群中的其它节点就可以继续为用户提供服务。
要配置 Jira 在群集中运行,必须执行以下操作:
-
创建一个共享文件主目录,供两个节点访问。
-
将集群配置添加到我们当前的 Jira 实例。
-
添加另一个 Jira 实例作为集群的第二个节点。从技术上讲,您可以拥有一个单节点集群,但在本练习中,我们将为集群添加另一个节点,以便您可以看到集群的运行情况。
-
添加并配置一个负载均衡器,将传入流量分配到两个节点。
现在我们知道了在集群中运行 Jira 所需的条件,让我们开始准备吧!
为集群做准备
启用群集的第一步是准备好所需的硬件。对于 Jira 群集,您将拥有以下组件:
-
负载均衡器:可以是任何支持会话亲和性(粘性会话, sticky session)的负载均衡器,如 Apache 和 nginx。
-
Jira 实例节点:这将包含作为集群一部分的独立 Jira 实例。
-
数据库:这与您用于独立部署的数据库相同。请注意,由于所有 Jira 节点都将共享同一个数据库,因此内存 H2 数据库将无法在集群中使用。
-
共享文件驱动器:Jira 集群需要有一个所有 Jira 节点都能读写的共享主目录。
理想情况下,前面列出的每个组件都应运行在自己的服务器上,因此对于双节点集群,您至少需要三台服务器和一个共享网络驱动器。您可以在同一台服务器上运行多个 Jira 节点,但只能出于评估目的这样做,因为这样做会降低集群的优势。
为 Jira 节点准备服务器时,需要确保以下几点:
-
所有节点服务器位于同一数据中心或区域(对于 AWS 和 Azure 等云计算供应商而言)
-
软件和硬件规格相同,包括内存、操作系统和 Java 版本
-
所有节点运行相同版本的 Jira
-
节点已配置为位于同一时区
创建 JIRA_SHARED_HOME
第一步是创建一个新目录,群集可在其中存储其数据文件。我们将把该目录称为 JIRA_SHARED_HOME
。这可以是一个允许所有 Jira 节点读写的网络驱动器。将下列目录从独立 Jira 实例的 JIRA_HOME
目录复制到新的共享目录:
-
data
-
plugins
-
logos
-
import
-
export
-
caches
启用集群
第二步是为第一个 Jira 节点启用群集。具体做法是在其本地 JIRA_HOME
目录中添加一个新的 cluster.properties
文件。
-
关闭您的 Jira 独立实例。
-
创建一个名为
cluster.properties
的新文件。 -
将以下行添加到文件中:
# This ID must be unique across the cluster jira.node.id = node1 # The location of the shared home directory for all Jira nodes jira.shared.home = /location/to/the/shared/jira_cluster_home # The following lines are needed if you want to run multiple nodes on the same server ehcache.listener.hostName=localhost ehcache.listener.port=40001 ehcache.object.port = 40021
-
启动 Jira。
将节点添加到负载均衡器
随着第一个群集节点的启动和运行,我们可以添加另一个节点。我们需要将该节点添加到负载均衡器,以便负载均衡器开始向其路由流量。具体配置会有所不同,这取决于负载均衡器的使用。下面是一个使用 Apache 的示例:
<Proxy balancer://jiracluster>
# Jira node 1
BalancerMember http://jira1.internal.atlassian.com:8080 route=node1
# Jira node 2, add this when we have the 2nd node up and running
# BalancerMember http://jira2.internal.atlassian.com:8080 route=node2
# Load Balancer Settings
ProxySet lbmethod=byrequests
ProxySet stickysession=JSESSIONID
</Proxy>
请注意,对于 Apache,您需要启用 proxy_balancer_module
模块。
向集群添加新节点
要将新节点添加到集群,请执行以下步骤:
-
将现有 Jira 实例中的
JIRA_HOME
目录复制到新节点服务器。 -
在新服务器上安装新的 Jira 实例。
-
编辑
cluster.properties
文件并更改jira.node.id
值。 -
将新节点添加到负载均衡器。
-
启动新的 Jira 节点。
如果在同一台服务器上运行第二个节点,还需要更改 cluster.properties
文件中的 ehcache.listener.port
和 ehcache.object.port
的端口号,以及 server.xml
文件中的端口号,如 更改 Jira 的端口号和上下文路径 部分所述。
这样,双节点 Jira 集群就可以运行了。现在,登录 Jira 并进入 管理工具|系统|集群,就会看到列出的两个节点,其中当前为您服务的节点以粗体标出,如图所示:

在此页面上,您可以看到群集中的所有节点及其状态。如果某个节点出现反应迟钝或负载过重的情况,这对帮助您排除集群故障非常有用。