面试题答案
一键面试- 配置
discovery.seed_hosts
:- 调整:明确指定可靠且安全的种子节点的IP地址或主机名,避免使用通配符。例如,如果有三个可靠的种子节点,其IP分别为
192.168.1.10
,192.168.1.11
,192.168.1.12
,则配置为discovery.seed_hosts: ["192.168.1.10", "192.168.1.11", "192.168.1.12"]
。 - 依据:在多子网和网络隔离环境下,精准指定种子节点可以防止误加入不可靠或恶意节点。使用通配符可能会让未知或恶意节点进入集群选主过程,增加网络攻击风险。同时,固定的种子节点有助于集群稳定地进行选主通信,因为节点知道确切的通信目标,减少了选主过程中的不确定性。
- 调整:明确指定可靠且安全的种子节点的IP地址或主机名,避免使用通配符。例如,如果有三个可靠的种子节点,其IP分别为
- 配置
cluster.initial_master_nodes
:- 调整:在集群初始化时,准确列出预期成为主节点的节点名称。例如,若预期
node - 1
,node - 2
,node - 3
成为主节点,配置为cluster.initial_master_nodes: ["node - 1", "node - 2", "node - 3"]
。 - 依据:这确保了只有预定义的节点可以参与初始选主过程。在复杂网络环境中,防止未授权节点参与选主是至关重要的,可有效抵御恶意节点试图篡夺主节点角色的攻击。而且,明确初始主节点有助于快速稳定地完成集群初始化选主,提高选主效率。
- 调整:在集群初始化时,准确列出预期成为主节点的节点名称。例如,若预期
- 启用身份验证和加密:
- 调整:开启Elasticsearch的X - Pack安全功能,配置用户名和密码进行身份验证,并启用传输层加密(TLS)。例如,通过配置
elasticsearch.yml
文件中的xpack.security.enabled: true
,并设置xpack.security.authc.accept_default_password: false
,然后通过bin/elasticsearch - set - password
命令设置密码。对于TLS,配置xpack.security.transport.ssl.enabled: true
,xpack.security.transport.ssl.verification_mode: certificate
等相关参数。 - 依据:身份验证可以确保只有授权的节点可以加入集群并参与选主。在存在网络攻击风险的环境中,未授权节点无法通过身份验证就不能干扰选主过程。传输层加密防止在节点间传输的选主相关数据被窃取或篡改,保护选主通信的完整性和机密性,从而保证选主的稳定性和安全性。
- 调整:开启Elasticsearch的X - Pack安全功能,配置用户名和密码进行身份验证,并启用传输层加密(TLS)。例如,通过配置
- 配置
discovery.zen.minimum_master_nodes
:- 调整:设置合适的最小主节点数。计算方法一般为
(master eligible nodes / 2) + 1
。例如,如果有7个符合主节点条件的节点,minimum_master_nodes
应设置为4。 - 依据:这个配置可以防止脑裂问题。在多子网和网络隔离环境下,网络分区可能导致部分节点误以为自己是主节点。设置合适的
minimum_master_nodes
,可以确保在发生网络问题时,只有达到足够数量的主节点同意才能选举出新的主节点,保证集群选主的稳定性,避免出现多个“伪主节点”的情况。
- 调整:设置合适的最小主节点数。计算方法一般为