【Elasticsearch】Elasticsearch 的发现和集群形成设置(Discovery and Cluster Formation Settings)是配置集群节点如何发现彼此并形成集群的

Elasticsearch 的发现和集群形成设置(Discovery and Cluster Formation Settings)是配置集群节点如何发现彼此并形成集群的关键配置项。以下是这些设置的详细说明:

1.基本发现设置

`discovery.seed_hosts`

• 类型:静态设置(Static)

• 描述:提供集群中主节点资格节点的地址列表,用于引导新节点发现和加入集群。地址可以是主机名、IPv4 或 IPv6 地址,IPv6 地址必须用方括号括起来。格式为`host:port`或`host`。如果未指定端口,则默认使用`transport.profiles.default.port`或`transport.port`,最终回退到默认端口`9300`。

• 默认值:`["127.0.0.1", "[::1]"]`。(ipv4,ipv6)

 

`discovery.seed_providers`

• 类型:静态设置(Static)

• 描述:指定用于获取种子节点地址的提供程序类型。(就是说通过seed_providers配置属性值,我们指定通过如何获取seed_hosts)默认情况下,使用基于设置的种子主机提供程序(settings-based seed hosts provider),从`discovery.seed_hosts`中获取种子节点地址。

• 其他提供程序:还可以通过插件扩展支持云环境或其他类型的种子主机提供程序。

`discovery.seed_providers`是 Elasticsearch 中的一个配置设置,用于指定如何获取用于集群发现过程的种子节点地址。种子节点是集群中主节点资格节点(master-eligible nodes)的初始列表,新加入的节点通过这些种子节点来发现其他节点并加入集群。


作用
`discovery.seed_providers`的核心作用是定义获取种子节点地址的提供程序(provider)类型。不同的提供程序可以根据不同的方式来获取种子节点的地址,从而支持多种部署环境(例如本地部署、云环境等)。


默认值
默认情况下,`discovery.seed_providers`的值是`settings-based`,即基于配置文件中的`discovery.seed_hosts`设置来获取种子节点地址。这是最常见和最简单的种子节点提供方式,适用于大多数本地部署场景。


其他可能的提供程序
除了默认的`settings-based`提供程序,Elasticsearch 还支持其他类型的种子节点提供程序,具体取决于部署环境和需求。例如:

1. 云环境的种子节点提供程序:在云环境中(如 AWS、GCP 或 Azure),可以使用云服务提供商的 API 来动态获取种子节点地址。例如,AWS 的`ec2`提供程序可以根据配置的标签或安全组动态发现其他节点。

2. 自定义提供程序:用户可以通过插件开发自定义的种子节点提供程序,以满足特定的部署需求。


配置示例
以下是一个简单的配置示例,展示了如何使用默认的`settings-based`提供程序:

```yaml
discovery.seed_providers: settings
discovery.seed_hosts:
  - "node1.example.com:9300"
  - "node2.example.com:9300"
  - "node3.example.com:9300"
```

在这个例子中:

• `discovery.seed_providers`设置为`settings`,表示使用基于配置文件的种子节点提供程序。

• `discovery.seed_hosts`列出了种子节点的地址,新加入的节点会尝试连接这些地址以发现其他节点并加入集群。

如果使用云环境的提供程序,配置可能如下:

```yaml
discovery.seed_providers: ec2
discovery.ec2.groups: my-cluster-group
discovery.ec2.host_type: private_ip
```

在这个例子中:

• `discovery.seed_providers`设置为`ec2`,表示使用 AWS 的 EC2 提供程序。

• 配置通过`discovery.ec2.groups`和`discovery.ec2.host_type`指定了如何在 AWS 中动态发现其他节点。


总结
`discovery.seed_providers`是一个关键的配置项,用于定义如何获取用于集群发现的种子节点地址。默认情况下,它使用配置文件中的静态地址列表(`discovery.seed_hosts`),但也可以通过其他提供程序(如云环境的动态发现)来支持更复杂的部署场景。

 

`discovery.type`

• 类型:静态设置(Static)

• 描述:指定集群是多节点集群还是单节点集群。默认值为`multi-node`,表示 Elasticsearch 会发现其他节点并允许它们加入集群。如果设置为`single-node`,则会形成单节点集群。

 

`cluster.initial_master_nodes`

• 类型:静态设置(Static)

• 描述:在新集群中设置初始的主节点资格节点集合。默认为空,表示节点期望加入一个已经启动的集群。集群形成后应移除此设置,且在重启节点或加入现有集群时不应配置此设置。

`cluster.initial_master_nodes`和`discovery.seed_hosts`是 Elasticsearch 集群配置中两个非常重要的设置,但它们的作用和使用场景有所不同。以下是它们的区别:

1.作用和目的

`discovery.seed_hosts`

• 作用:提供集群中主节点资格节点(master-eligible nodes)的初始地址列表,用于引导新节点发现其他节点并加入集群。

• 目的:帮助新节点找到集群中的其他节点,从而完成集群的发现和加入过程。

• 使用场景:适用于集群中所有节点,无论是主节点候选节点还是普通数据节点。它为节点提供了集群中其他节点的初始信息,以便它们可以相互发现并建立通信。

`cluster.initial_master_nodes`

• 作用:指定集群启动时的初始主节点候选列表,用于在集群初始化时选举出第一个主节点。

• 目的:确保在集群第一次启动时能够正确选举出主节点,并引导集群的形成。

• 使用场景:仅适用于集群中的主节点候选节点,并且只在集群第一次启动时使用。一旦集群形成,该设置应从配置中移除。

2.配置时机和生命周期

`discovery.seed_hosts`

• 配置时机:在集群中所有节点的配置文件中设置。

• 生命周期:从集群启动到运行期间一直有效。它是集群节点发现机制的核心部分,不会在集群形成后移除。

`cluster.initial_master_nodes`

• 配置时机:仅在集群第一次启动时配置,且必须在所有主节点候选节点的配置文件中设置。

• 生命周期:仅在集群初始化时使用。一旦集群成功启动并形成,应从配置文件中移除,以避免后续误操作。

3.配置内容和格式

`discovery.seed_hosts`

• 内容:包含集群中主节点资格节点的地址列表,格式为`host:port`或`host`。

• 示例:

```yaml

  discovery.seed_hosts:

    - "node1.example.com:9300"

    - "node2.example.com:9300"

    - "node3.example.com:9300"

  ```

`cluster.initial_master_nodes`

• 内容:包含集群中主节点候选节点的名称、主机名或 IP 地址列表。

• 示例:

```yaml

  cluster.initial_master_nodes:

    - "node1"

    - "node2"

    - "node3"

  ```

4.与集群状态的关系

`discovery.seed_hosts`

• 集群状态:用于集群的持续发现过程,即使集群已经形成,`discovery.seed_hosts`仍然用于新节点加入集群时的发现机制。

`cluster.initial_master_nodes`

• 集群状态:仅在集群第一次启动时用于引导集群形成。一旦集群形成,该设置不再参与集群的运行。

5.总结

 设置项 作用 使用场景 配置时机 生命周期 配置内容  

 `discovery.seed_hosts` 提供种子节点地址,用于节点发现和加入集群 所有节点(主节点候选节点和普通节点) 集群启动前 从集群启动到运行期间一直有效 主节点资格节点的地址列表  

 `cluster.initial_master_nodes` 指定初始主节点候选列表,用于引导集群形成 主节点候选节点 集群第一次启动前 仅在集群初始化时使用,形成后移除 主节点候选节点的名称或地址  

6.实际使用中的注意事项

• `discovery.seed_hosts`:

• 确保配置的种子节点地址是主节点资格节点的地址。

• 如果集群中有多个主节点候选节点,建议将所有主节点候选节点的地址都加入到`discovery.seed_hosts`中。

• `cluster.initial_master_nodes`:

• 仅在集群第一次启动时配置,且必须在所有主节点候选节点上设置相同的值。

• 一旦集群形成,应从配置文件中移除该设置,以避免后续误操作。

• 不要在非主节点候选节点上配置此设置。

通过正确配置这两个设置,可以确保 Elasticsearch 集群在启动时能够正确形成,并在运行期间能够稳定地发现和加入新节点。

 

2.专家级设置

`discovery.cluster_formation_warning_timeout`

• 类型:静态设置(Static)

• 描述:设置节点尝试形成集群之前多久会记录警告消息。默认值为`10s`。

`discovery.find_peers_interval`

• 类型:静态设置(Static)

• 描述:设置节点在尝试另一次发现轮询之前等待的时间。默认值为`1s`。

`discovery.probe.connect_timeout`

• 类型:静态设置(Static)

• 描述:设置尝试连接到每个地址时等待的时间。默认值为`30s`。

`discovery.probe.handshake_timeout`

• 类型:静态设置(Static)

• 描述:设置尝试通过握手识别远程节点时等待的时间。默认值为`30s`。

`discovery.request_peers_timeout`

• 类型:静态设置(Static)

• 描述:设置节点在再次向对等节点请求后等待的时间,之后认为请求失败。默认值为`3s`。

`discovery.find_peers_warning_timeout`

• 类型:静态设置(Static)

• 描述:设置节点尝试发现对等节点之前多久开始记录详细消息,描述连接尝试失败的原因。默认值为`3m`。

`discovery.seed_resolver.max_concurrent_resolvers`

• 类型:静态设置(Static)

• 描述:指定解析种子节点地址时执行的并发 DNS 查找数量。默认值为`10`。

`discovery.seed_resolver.timeout`

• 类型:静态设置(Static)

• 描述:指定解析种子节点地址时每个 DNS 查找的等待时间。默认值为`5s`。

3.集群稳定性相关设置

`cluster.auto_shrink_voting_configuration`

• 类型:动态设置(Dynamic)

• 描述:控制投票配置是否在仍至少包含 3 个节点的情况下自动移除已离开的节点。默认值为`true`。

`cluster.fault_detection.*`

• 类型:静态设置(Static)

• 描述:这些设置用于控制集群故障检测机制,包括跟随者检查和领导者检查的间隔、超时和重试次数。默认值分别为:

• `follower_check.interval`:`1s`

• `follower_check.timeout`:`10s`

• `follower_check.retry_count`:`3`

• `leader_check.interval`:`1s`

• `leader_check.timeout`:`10s`

• `leader_check.retry_count`:`3`。

`cluster.follower_lag.timeout`

• 类型:静态设置(Static)

• 描述:设置主节点等待滞后节点对集群状态更新的确认时间。默认值为`90s`。

4.文件系统健康检查设置

`monitor.fs.health.enabled`

• 类型:动态设置(Dynamic)

• 描述:是否启用文件系统健康检查。默认值为`true`。

`monitor.fs.health.refresh_interval`

• 类型:动态设置(Dynamic)

• 描述:文件系统健康检查的间隔时间。默认值为`2m`。

`monitor.fs.health.slow_path_logging_threshold`

• 类型:动态设置(Dynamic)

• 描述:如果文件系统健康检查的时间超过此阈值,Elasticsearch 将记录警告。默认值为`5s`。

5.集群状态发布设置

`cluster.publish.info_timeout`

• 类型:静态设置(Static)

• 描述:设置主节点等待每个集群状态更新完全发布到所有节点的时间。默认值为`10s`。

`cluster.publish.timeout`

• 类型:静态设置(Static)

• 描述:设置主节点等待每个集群状态更新完全发布到所有节点的时间。默认值为`30s`。

6.其他设置

`cluster.max_voting_config_exclusions`

• 类型:动态设置(Dynamic)

• 描述:设置投票配置排除的最大数量。默认值为`10`。

`cluster.no_master_block`

• 类型:动态设置(Dynamic)

• 描述:指定在集群中没有活跃主节点时拒绝哪些操作。默认值为`write`,表示拒绝写操作。

---

总结

Elasticsearch 的发现和集群形成设置是集群部署和管理中的关键部分。通过合理配置这些设置,可以确保集群的稳定性和可靠性。静态设置(如`discovery.seed_hosts`和`discovery.type`)需要在节点启动前配置,而动态设置(如`cluster.auto_shrink_voting_configuration`和`monitor.fs.health.enabled`)可以在运行时调整。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值