【实战】记一次Splunk多站点集群搭建部署过程

logo-splunk

1 多站点索引器集群好处

多站点索引器群集化的重要好处之一是,它允许您配置一个群集,这样搜索头可以仅从存储在本地的站点获得搜索结果。这样减少了网络流量,同时仍然提供了对整个数据组的访问,因为每个站点包含数据的全部副本。这一好处被称为搜索相关性。

例如,您在深圳有两个数据中⼼,一个在松岗,另一个在南山。您设置一个两站点群集,每个站点对应一个数据中⼼。搜索相关性可让您减少⻓距离网络流量。位于松岗数据中⼼的搜索头仅从在松岗的节点获得结果,同时位于南山的搜索头仅从它们本地的节点获得结果。

2 配置站点复制因子

2.1 首先阅读

在尝试配置站点复制因子之前,必须了解:

  • 基本的、单个站点复制因子。请参阅“索引器群集架构的基础知识”和“复制因子”。

  • 多站点群集配置。请参阅“使用 server.conf 配置多站点索引器群集”。

2.2 站点复制因子是什么

要实现多站点索引器群集化,必须配置站点复制因子。它代替了标准的复制因子,标准复制因子是单个站点部署所特有的。在 管理器节点上指定站点复制因子,作为群集基本配置的一部分。
站点复制因子除了提供对整个群集中的副本总数进⾏控制之外,还提供对数据桶副本位置的站点级控制。例如,可指定一个两 站点群集维护所有数据桶的共计三份副本,其中一个站点维护两份副本,第⼆个站点维护一份副本。
也可指定一个复制策略,该策略基于哪个站点生成数据桶。就是说,您可配置复制因子,以便接收外部数据的站点为源数据维 护更⼤(与⾮源数据相⽐)数量的数据桶副本。例如,您可指定每个站点维护两份所有源数据的副本,但是仅有一份源数据副 本在另一个站点。

2.3 语法

在管理器节点的 server.conf 文件中,使用 site_replication_factor 属性配置站点复制因子。该属性驻留在 [clustering] 段 落,代替了单个站点的 replication_factor 属性。

例如:

1
2
3
4
5
6
[clustering] 
mode = manager
multisite=true
available_sites=site1,site2
site_replication_factor = origin:2,total:3
site_search_factor = origin:1,total:2

您还可以使用 CLI 来配置站点复制因子。请参阅“使用 CLI 配置多站点索引器群集”。

必须正确配置 site_replication_factor 属性。否则,管理器节点将不会启动。

出于灾难恢复的目的,请务必配置站点复制因子,以便群集在多个站点上维护每个数据桶的副本。

下面是正式的语法:
site_replication_factor = origin:, [site1:,] [site2:,] …, total:

其中:

  • 是一个正整数,表明数据桶的副本数量。
  • origin: 指定一个将保留在站点上的数据桶副本的最小数量(此站点会在该数据桶中生成数据,即,数据首次进入群集的站点)。当一个站点生成数据时,它就被称为“源”站点。
  • site1:, site2:, …, 表明将保留在每个指定站点的副本的最小数量。标识符 “site1”、”site2” 等等,与在对等节 点上指定的 site 属性值相同。
  • total: 指定每个数据桶的副本的总数,包括群集中的所有站点。

请注意以下事项:

  • 此属性指定了按站点的复制策略。它是全局指定,应用到所有索引中的所有数据桶。
  • 此属性仅在 mode=manager 和 multisite=true 的情况下有效。在那些情况下,它取代了所有 replication_factor 属性。
  • 需要 origin 和 total 值。
  • 站点值 (site1:, site2:, …) 是可选项。在此处指定的站点被称为“显式”站点。没有指定的站点被称为“⾮显式”站 点。

3 配置站点搜索因子

3.1 首先阅读

在尝试配置站点搜索因子之前,必须先了解:

  • 基本的、单个站点搜索因子。请参阅“群集架构的基础知识”和“搜索因子”。
  • 站点复制因子。请参阅“配置站点复制因子”。 多站点群集配置。请参阅“
  • 使用 server.conf 配置多站点索引器群集”。

3.2 站点搜索因子是什么

要实现多站点索引器群集化,必须配置站点搜索因子。它代替了标准的搜索因子,标准搜索因子是单个站点部署所特有的。在 管理器节点上指定站点搜索因子,作为群集基本配置的一部分。

站点搜索因子除了提供对整个群集中的可搜索副本总数进⾏控制之外,还提供对可搜索数据桶副本位置的站点级控制。例如, 可指定一个两站点群集维护所有数据桶的共计三份可搜索副本,其中一个站点维护两份副本,第⼆个站点维护一份副本。

也可指定一个搜索策略,该策略基于哪个站点生成数据桶。就是说,您可配置搜索因子,以便接收外部数据的站点为源数据维 护更⼤(与⾮源数据相⽐)数量的数据桶可搜索副本。例如,您可指定每个站点维护两份所有源数据的可搜索副本,但是仅有 一份源数据副本在另一个站点。

站点搜索因子帮助确定群集是否有搜索相关性。请参阅“在多站点索引器群集中执⾏搜索相关性”。

3.3 语法

site_search_factor 和 site_repl ication_factor 的语法是一样的,除⾮有其他需求,如:site_search_factor 中的值和显式 站点是 site_replication_factor 中的值和显式站点的⼦集。本部分详细介绍语法。

在管理器节点的 server.conf 文件中,使用 site_search_factor 属性配置站点搜索因子。该属性驻留在 [clustering] 段落,代替 了单个站点的 search_factor 属性。

例如:

1
2
3
4
5
6
[clustering] 
mode = manager
multisite=true
available_sites=site1,site2
site_replication_factor = origin:2,total:3
site_search_factor = origin:1,total:2

还可以使用 CLI 来配置站点搜索因子。请参阅“使用 CLI 配置多站点索引器群集”。

警告:必须正确配置 site_search_factor 属性。否则,管理器节点将不会启动。

下面是正式的语法

1
site_search_factor = origin:<n>, [site1:<n>,] [site2:<n>,] ..., total:<n> 

其中:

  • 是一个正整数,表明数据桶的可搜索副本数量。
  • origin: 指定一个将保留在站点上的数据桶可搜索副本的最小数量(此站点会在该数据桶中生成数据,即,数据首次进 入群集的站点)。当一个站点生成数据时,它就被称为“源”站点。
  • site1:, site2:, …, 表明在每个指定站点保留的可搜索副本的最小数量。标识符 “site1”、”site2” 等等,与在对 等节点上指定的 site 属性值相同。

total: 指定每个数据桶的可搜索副本的总数,包括群集中的所有站点。

请注意以下事项:

  • 此属性指定了按站点的可搜索复制策略。它是全局指定,应用到所有索引中的所有数据桶。

  • 此属性仅在 mode=manager 和 multisite=true 的情况下有效。在那些情况下,它取代了所有 search_factor 属性。

  • 需要 origin 和 total 值。

  • 站点值 (site1:, site2:, …) 是可选项。在此处指定的站点被称为“显式”站点。没有指定的站点被称为“⾮显式”站 点。

  • 要确定一个站点获得的可搜索副本的最小数量,则和通过 site_replication_factor 确定一个站点获得的复制副本的最小数 量使用相同的规则。请参阅“配置站点复制因子”。

  • 要确定所需的最小 total 值,使用与确定最小 total 值(为 site_replication_factor 确定)一样的规则。请参阅“配置站点 复制因子”。

  • 因为 total 值可能⽐一组显式值的总和⼤,群集需要有一个⽅案来处理“剩余的”可搜索数据桶副本。此⽅案遵照为剩余的 复制副本制定的⽅案,在“配置站点复制因子”中介绍。

  • 所有的值必须小于或等于它们在 site_replication_factor 中相应的值。
    例如,有一个三站点群集 (“site_repl ication_factor = origin:2, site1:1, site2:2, total :5”),那么在 site_search_factor 中,origin 值不能超过 2,site1 值不能超过 1,site2 值不能超过 2,且 total 值不能超过 5。

  • 如果一个站点值已显式显⽰在 site_search_factor 中,则也必须显式显⽰在 site_replication_factor 中。但 是,site_replication_factor 中的显式站点值并不要求也显式显⽰在 site_search_factor 中。

    例如,有一个三站点群集,设置为 “site_repl ication_factor = origin:2, site1:1, site2:2, total :5”(有一个⾮显 式站点 site3),您可指定 “site_search_factor = origin:1, site2:2, total :4”(删除显式站点 site1),但是您不 能指定 “site_search_factor = origin:1, site1:1, site2:2, site3:1, total :4”(将⾮显式站点 site3 设为显式)。

  • 对于搜索相关性,必须配置 site_search_factor,这样在每个要求搜索相关性的站点上就有⾄少一份可搜索副本。只有显式 站点遵守搜索相关性。

  • 如果您正在从一个单个站点群集迁移,则单个站点群集的 total 值必须⾄少和 search_factor 一样⼤。请参阅“将索引器群 集从单个站点迁移到多站点”。

  • 属性默认为:”origin:1, total :2.”

4 配置多站点索引集群

4.1 使用CLI 配置多站点索引器群集

使用splunk edit cluster-config命令将实例配置为多站点群集节点。

在启用某个实例之后,必须重新启动该实例。

4.1.1 站点值

站点值识别节点所驻留的站点。

给多站点群集中的每个节点分配一个站点值。 站点值的语法: site 其中 是一个范围从 1 到 63 的整数:site1,site2,site3,…….

注意:只有一个搜索头的情况下,您也可以把站点值设置为 “site0”。该设置会禁用搜索头的搜索相关性。其site0站点通常设置在search head

4.1.2 配置管理器节点

在Master 服务器执行 CLI命令:

1
2
3
4
5
splunk edit cluster-config -mode master -multisite true -available_sites site1,site2 -site site1 -site_replication_factor origin:2,total:3 -site_search_factor origin:1,total:2 -secret your_key
# 配置多站点集群

splunk restart
# 重启splunk服务

该⽰例指定了以下内容

  • 实例为群集管理器节点。 群集是多站点的。 群集包含两个站点:site1 和 site2。
  • 管理器节点位于 site1。
  • 群集的复制因子为默认的 “origin:2,total :3”。
  • 群集的搜索因子为 “origin:1,total :2”。
  • 管理器节点,以及群集中的其他节点,将 “your_key” 用作其安全密钥。-secret 标记编辑 server.conf 的 [clustering] 段 落中的 pass4SymmKey 设置。

请注意以下事项

  • 每个群集只有一个管理器节点。
  • 必须将多站点群集管理器节点的 multisite 设置为 true。
  • 必须使用 available_sites 属性列出所有群集站点。
  • 必须设置一个 site_replication_factor 和一个 site_search_factor

4.1.3 配置对等节点

在site 1服务器上 使用的CLI 命令:

1
2
3
4
splunk edit cluster-config -mode slave -site site1 -master_uri https://192.168.10.9:8089 -replication_port 9887
# 配置site1对等节点信息
splunk restart
# 重启splunk服务

在site 2服务器上 使用的CLI 命令:

1
2
3
4
splunk edit cluster-config -mode slave -site site2 -master_uri https://192.168.10.9:8089 -replication_port 9887
# 配置site1对等节点信息
splunk restart
# 重启splunk服务

重启splunk

image-20210831222405094

该⽰例指定了以下内容

  • 实例为群集对等节点。
  • 实例位于 site1。一个对等节点只能属于一个单个站点。
  • 此对等节点的群集管理器节点位于 10.160.31.200:8089。
  • 此对等节点将使用端口 9887 来侦听从其他对等节点流入的复制的数据。您可指定任意可用但未使用的端⼝作为复制端 ⼝。请勿重复使用管理或接收端⼝。
  • 如果您之后更改了对等节点的 site 值,则不必重新启动对等节点。

4.1.4 配置单节点搜索头

1
2
3
4
splunk edit cluster-config -mode searchhead -site site0 -master_uri https://192.168.10.9:8089 -secret your_key
# 配置搜索头节点,将站点信息设置为0能同时搜索site1和site2的数据,如果设置为site1当前搜索头只属于site站点,只能搜索site1站点的数据
splunk restart
# 重启splunk

**该⽰例指定了以下内容:

  • 实例为群集搜索头。
  • 搜索头位于 site0(禁止搜索头的搜索相关性,相关内容查看:《禁搜索相关性》)。在每个群集中,一个搜索头只能属于一个站点。
  • 此搜索头的索引器群集管理器节点位于 192.168.10.9:8089。
  • 要禁用搜索头的搜索相关性,以便它能从群集中所有站点随机获取它的数据,可设置 site 属性为 “site0”。
    注意:当指定 site 参数时,命令会⾃动设置 multisite=true(位于搜索头的 server.conf 文件中)。不需要显式传递 multisite 参 数。

要之后再编辑搜索头配置:

使用 splunk edit cluster-master 命令,⽽不是 splunk edit cluster-config 命令。

4.1.5 配置搜索头集群

1
2
3
4
splunk edit cluster-config -mode searchhead -site site0 -master_url https://192.168.10.0:8089 -secret your_key -auth login:password
# 配置搜索头集群,连接到master节点,并设置节点信息为site0
splunk restart
# 重启splunk

4.1.6 效果图

5 补充:将索引器群集从单个站点迁移到多站点

5.1 配置Master节点以将旧数据桶转换为多站点数据桶

要使得旧的单站点数据桶遵循多站点复制和搜索因⼦策略,请将Master节点的 server.conf ⽂件中的 constrain_singlesite_buckets 设置更改为 “false“:

1
2
3
[clustering] 
mode = manager
constrain_singlesite_buckets = false

5.2 执⾏多站点迁移

5.3 前提条件

  • 管理器节点必须运⾏ Splunk Enterprise 7.2 或更⾼版本。

  • 迁移后群集中的所有节点必须遵循 Splunk Enterprise 版本兼容性中介绍的版本兼容性规则。因此,在迁移到多站点 前,您可能需要升级单个站点群集。遵循“升级索引器群集”中相应的过程。

  • 如果您想要现有的数据桶在迁移后遵循多站点复制和搜索策略,您必须更改管理器节点上的配置。请参阅“配置管理器以 将现有数据桶转换为多站点数据桶”。或者,您可以在迁移后随时执⾏此步骤

5.4 步骤

要从单个站点群集迁移到多站点,应为多站点配置每个节点:

5.4.1 遵循使⽤ CLI 配置多站点索引器群集”中的说明,配置多站点的管理器节点并重启。例如:

1
2
3
4
splunk edit cluster-config -mode master -multisite true -available_sites site1,site2 -site site1 -site_replication_factor origin:2,total:3 -site_search_factor origin:1,total:2
# 配置Master管理节点,设置多站点参数信息
splunk restart
# 重启splunk

请注意以下事项:

  • 不要删除现有的复制因⼦和搜索因⼦的单个站点属性,replication_factor 和 search_factor。管理器节点需要它们来处理迁 移的数据桶。

  • total 值(site_replication_factor 和 site_search_factor 的值)必须⾄少分别与 replication_factor 和 search_factor 的值⼀ 样⼤。
    如果任意站点的对等节点的数⽬少于单个站点 ( replication_factor 或 search_factor),则必须降低那些属性的值使之匹配 任意站点对等节点的最⼩数⽬。例如,如果 repl ication_factor 是 3,search_factor 是 2,且有个站点仅有 2 个对等节 点,您必须将 replication_factor 更改为 2。否则,迁移的数据桶可能不满⾜复制和搜索因⼦,这取决于群集复制迁移数据桶的⽅式。请参阅“多站点群集不满⾜其复制或搜索因⼦”。

5.4.2 在管理器节点上设置维护模式:

1
splunk enable maintenance-mode 

本步骤可以防⽌不必要的数据桶修复。

请参阅“使⽤维护模式”。

要确认管理器节点进⼊了维护模式,运⾏ splunk show maintenance-mode。

5.4.3 为多站点配置现有对等节点。

为每个对等节点指定它的管理器节点和站点。例如:

1
splunk edit cluster-config -site site1 

会出现重启对等节点的提⽰。

为每个对等节点执⾏此操作,指定它的站点。

5.4.4 如果想要在群集中添加新的对等节点,请遵循“使⽤ CLI 配置多站点索引器群集”的说明。例如:

1
2
3
4
splunk edit cluster-config -mode slave -site site1 -master_uri https://192.168.10.9:8089 -replication_port 9887 
# 设置站点参数
splunk restart
# 重启splunk

为每个想要添加到群集中的新对等节点执⾏此操作。

5.4.5 为多站点配置搜索头。为每个搜索头指定它的管理器节点和站点。例如:

1
splunk edit cluster-master https://192.168.10.9:8089 -site site1 

为每个搜索头执⾏此操作,指定它的站点。

注意:如果搜索头是⼀个搜索头群集的成员,则配置基本相同。请参阅《分布式搜索》中的“使⽤多站点索引器群集以集成”。

5.4.6 如果想要在群集中添加新的搜索头,请遵循“使⽤ CLI 配置多站点索引器群集”的说明。例如:

1
2
3
4
splunk edit cluster-config -mode searchhead -site site1 -master_uri https://192.168.10.9:8089
# 设置站点参数(添加搜索头请查看《配置搜索头集群》章节)
splunk restart
# 重启splunk

为每个想要添加到群集中的新搜索头执⾏此操作。

5.4.7 在管理器节点上禁⽤维护模式:

1
splunk disable maintenance-mode 

要确认管理器节点退出了维护模式,运⾏ splunk show maintenance-mode

您可以查看管理器节点仪表板,以确认所有群集节点已经启⽤并正在运⾏。

在迁移过程中,群集⽤站点值来标记每个单个站点数据桶。

注意:您也可以通过直接编辑 server.conf 来配置多站点群集。请参阅“使⽤ server.conf 配置多站点索引器群集”

5.4.8 如果您正使⽤索引器发现来连接转发器到对等节点,您必须为每个转发器分配⼀个站点。请参阅“在多站点群集中使⽤索引器 发现”。

如果您已配置管理器节点将现有的单站点数据桶转换为遵守多站点复制和搜索因⼦策略,那么群集迁移进程完成后,数据桶修 复可能会持续⼀段时间。如果您现有⼤量的数据桶,数据桶修复可能会花费很⻓时间。

6 禁搜索相关性

您可以对于任何搜索头禁用搜索相关性。当禁用搜索相关性时,搜索头不会尝试只从单个站点上获得搜索结果。反之,它会从 多个站点上获得结果。例如,如果您有两个数据中心非常接近,相互间延迟很低,并且您希望通过在两个站点的索引器之间分 散处理过程来提高整体性能,这会很有用。

6.1 当禁用搜索相关性时会发生什么

当在搜索头上禁用搜索相关性时,搜索结果可以来自任何或所有站点的索引器。如果站点搜索因子规定了在多个站点上的可搜 索数据桶副本,则搜索头使用未定义的标准来选择要搜索哪个可搜索副本。它可能会从一个站点选择一些数据桶的副本,并从 其他站点选择其他数据桶的副本,因此结果将来自多个站点。

搜索头总是从主要数据桶副本中选择。例如,假设您有两个使用该搜索因子的站点群集:

site_search_factor = origin:2, total:3

原始站点将为每个数据桶存储两个可搜索副本,而第二个站点将存储一个可搜索副本。因此,对于一些数据桶(在 site1 上生成的这些数据桶),site1 将有两个可搜索副本,而对于其他数据桶(在 site2 上生成的这些数据桶),site2 将有两个可搜 索副本。然而,每个站点只有一个主要副本。

启用搜索相关性的搜索头会尽可能限制它的搜索在自己站点的主要副本中进行。

与此相反,禁用搜索相关性的搜索头将它的搜索分布在两个站点上的主要副本之间进行。对于一个给定的数据桶,您⽆法获知 它是会选择在 site1 上的主要副本或是 site2 上的主要副本。从一个搜索到下一个搜索,它倾向于使用相同的主要副本。

6.2 如何禁用搜索相关性

如需禁用搜索头的搜索相关性,请在 server.conf 中把搜索头的站点值设置为 “site0”:

1
2
3
4
5
6
[general] 
site = site0

[clustering]
multisite = true
...

设置 site=site0 后,搜索会因此表现得像在单个站点群集上,不会特别偏好任何站点。

有关配置多站点搜索头的更多信息,请参阅“配置搜索头”。


【实战】记一次Splunk多站点集群搭建部署过程
https://hesc.info/8f8f197f06d1/
作者
需要哈气的纸飞机
发布于
2021年9月1日
许可协议