ES重要配置
虽然ES需要的配置很少,但是仍然有些配置需要我们手工去配置,尤其是在产品上线之前。
- path.data and path.logs
- cluster.name
- node.name
- bootstrap.memory_lock
- network.host
- discovery.zen.ping.unicast.hosts
- discovery.zen.minimum_master_nodes
path.data和path.logs
如果你使用的是.zip或者.tar.gz的归档格式,数据和日志路径将会是$ES_HOME下的一个子路径。如果这些路径使用默认路径,这将有很大风险被删除,在我们升级新的ES版本时。在生产环境,我们通常是要改变数据和日志文件路径。
path: logs: /var/log/elasticsearch data: /var/data/elasticsearch
当前RPM和Debain发布的版本,已经使用自定义的数据和日志路径了。 这个path.data可以被设置多个路径,数据将会被存储在所有路径下(属于同一个分片的文件,将会存储在同一个数据路径下)
path: data: - /mnt/elasticsearch_1 - /mnt/elasticsearch_2 - /mnt/elasticsearch_3
cluster.name
一个节点仅能加入一个集群中,它将会与集群中其他节点共享这个集群名称。默认集群名称elasticsearch,但是,你可以根据你集群的用途改变成合适的名称。
cluster.name: cluster_es
node.name
默认情况下,Elasticsearch将使用随机生成的UUID为节点ID的前七个字符。注意,节点ID是持久的,并且在节点重新启动时不会改变,因此默认节点名称也不会改变。定义一个有意义的名称是非常有价值的,它也在重启节点后,也是由保持名称不变的优势。
node.name: prod-data-2
node.name也可以使用服务的HOSTNAME,如下:
node.name: ${HOSTNAME}
bootstrap.memory_lock
这是非常重要的用来保证节点的健康,JVM的内存不能swap到磁盘。一种实现方式是将bootstrap.memory_lock设置为true。对于这个配置的影响,首先需要设置一些其他的系统参数。关于bootstrap.memory_lock 的详细详细配置可以查看官网的链接https://www.elastic.co/guide/en/elasticsearch/reference/5.6/setup-configuration-memory.html#mlockall (待后续学习,补充中文版)
network.host
默认的,Elasticsearch绑定回环地址--如:127.0.0.1和[::1]。在某个server上运行单个部署的节点很有效。
TIP 事实上,在一个节点上同一个$ES_HOME路径下,我们可以启动多个进程的,这个对于验证ES集群特性非常有用,但是不推荐在生成环境上这样应用。
为了便于不同服务上的节点相连组成一个集群,节点需要绑定一个非回环地址。
network.host: 192.168.1.10
对于network.host的配置,需要理解一些特殊的值,如_local_, site, _global_和一些修复符,如:ip4和ip:6,更多详细信息可以参考:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/modules-network.html#network-interface-values
discovery.zen.ping.unicast.hosts
对于一个新的集群,没有任何网络相关的配置,ES将会绑定一个回环地址,然后通过扫描9300-9305来尝试连接在该服务器上的其他节点。这是提供了一个自动组件集群的能力,在没有任何配置的情况下。 当前集群的节点来自于其他服务器时,你就不得不提供一系列的种子节点去连接,可以向如下格式:
discovery.zen.ping.unicast.hosts: - 192.168.1.10:9300 - 192.168.1.11 - seeds.mydomain.com
对于没有提供端口,默认使用transport.profiles.default.port,如果没有提供将回退使用transport.tcp.port 提供主机名的,将会被解析成多个IP地址,并尝试连接所有地址。
discovery.zen.minimum_master_nodes
为了防止数据丢失,设置discovery.zen.minimum_master_nodes参数将会很重要,以便每个候选主节点知道为了形成集群而必须可见的最少数量的候选主节点。 如果没有这个配置,集群会在网络出现故障时脑列变成两个的风险--成为脑列。这将直接导致数据的丢失。 为了避免脑裂,候选主节点的数量应该设置为:
(master_eligible_nodes / 2) + 1
换句话说,如果有三个候选节点,那么最小候选节点应该设置为(3/2)+1 = 2
discovery.zen.minimum_master_nodes: 2