重要的日志配置

有一些重要配置, 在生产环境之前要慎重考虑

  • Path settings
  • Cluster name
  • Node name
  • Network host
  • Discovery settings
  • Heap size
  • Heap dump path
  • GC logging

path.data and path.logs

如果你使用.zip或者.tar压缩包安装Elasticsearch.那么数据和日志目录会在ES_HOME目录下, 这样做的风险很大, 因为当你删除或者升级Elasticsearch的时候, 可能会丢失这些数据.

生产环境中, 你应该修改data和log目录

path:
  logs: /var/log/elasticsearch
  data: /var/data/elasticsearch

RPM和Debian安装方式已经使用了自定义的路径.

path.data可以设置多个路径, 在这种情况下, 所有路径都会用来保存数据(尽管属于单个分片的数据都会保存在相同的路径下)

path:
  data:
    - /mnt/elasticsearch_1
    - /mnt/elasticsearch_2
    - /mnt/elasticsearch_3

cluster.name

节点只有和集群中的别的节点共享cluster.name的时候才可以加入集群. 默认的名字是 elasticsearch. 但是你应该根据集群的作用来取一个适当的名称.

cluster.name: logging-prod

一定要确保, 在别的环境不要使用相同的集群名称.

node.name

默认情况下Elasticsearch会使用默认生成的UUID的前7位作为节点名称. 注意节点名称是持久的, 节点重启的时候名字也不会改变, 因此默认名称也不会改变.

为节点取一个有意义的名称是很有必要的, 而且节点重启以后名称也不会改变

node.name: prod-data-2

节点名也可以设置为主机名

node.name: ${HOSTNAME}

network.host

默认, Elasticsearch只绑定回路地址. 举例说是127.0.0.1 and [::1]. 对于开发来说, 这已经足够了.

实际上在单个节点上, 可以从ES_HOME启动多个节点. 这对测试集群很有用, 但是不要在生产环境这样做.

为了和其他服务器上的节点通信和组成集群, 你的节点需要绑定到一个非回路的地址, 有很多网络设置, 通常你需要设置network.host.

网络设置: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/modules-network.html

network.host: 192.168.1.10

network.host还可以理解_local_, _site_, _global_这样的特殊值, 还有:ip4 和 :ip6修饰符. 具体细节在这里https://www.elastic.co/guide/en/elasticsearch/reference/6.2/modules-network.html#network-interface-values

当你提供了network.host, Elasticsearch就假设你进入了生产环境, 并且更新了一下系统检查列表, 开发环境和生产环境的区别在这里

https://www.elastic.co/guide/en/elasticsearch/reference/6.2/system-config.html#dev-vs-prod

Discovery settings

对于点对点集群, 主节点选取, Elasticsearch有一套自定义的发现机制, 叫做Zen Discovery. 在生产环境有2个重要的设置需要配置.

discovery.zen.ping.unicast.hosts

开箱即用, 不需要任何额外配置, Elasticsearch会绑定可用的回路地址, 并且扫描同一台机器上的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的节点互相知道, 集群里最小master节点的数量.

如果没有这个配置, 遇到网络故障的集群, 有可能分割成2个独立的集群----分裂的大脑, 这回导致数据丢失. 更多的信息可以在这里看到

https://www.elastic.co/guide/en/elasticsearch/reference/6.2/modules-node.html#split-brain

为了防止分裂大脑, 需要设置master资格节点的合法数量

(master_eligible_nodes / 2) + 1

换句话说, 如果有3个符合master的节点, 那么这个值应该是 3/2+1 , 也就是2

discovery.zen.minimum_master_nodes: 2

Setting the heap size

results matching ""

    No results matching ""