前言:本文可用于elasticsearch集群搭建参考。细分为elasticsearch.yml配置和系统配置
达到的目的:各台机器配置成功,可以达到如下效果:
elasticsearch节点组成集群,对外来看俨如一台机器
elasticsearch节点的内存得到优化调整
一.elasticsearch.yml配置
network.host: "172.16.0.4"
#这里可以是内网ip、机器名
bootstrap.mlockall: true
discovery.zen.ping.multicast.enabled: false
#禁止掉多播
discovery.zen.minimum_master_nodes: 2
#(number of master-eligible nodes / 2) + 1 即 :(有master潜力的节点/2 )+1
discovery.zen.ping.unicast.hosts: ["172.16.0.4", "172.16.0.6"]
#这里配置的IP为master潜力节点的内网IP地址
path:
data: ["G:/elasticsearch/Data","X:/"]
#es擎住的数据的存放地址。linux虚拟机中需要挂载磁盘作为存放目录。
#cluster.routing.allocation.enable : "all"
#indices.fielddata.cache.size : "75%"
indices.recovery.max_bytes_per_sec: 100mb
#这个配不之配置不影响集群运行,可以不写
node.master: true
#设置为true,表示为master潜力节点
node.data: false
#表示为非数据节点
node.name: ${COMPUTERNAME}
#设置节点名称
二.系统文件配置
es_heap_size=$(free -m |grep Mem | awk '{if ($2/2 >31744) print 31744;else print $2/2;}')
# 设置es的heap_size。一般取内存的一半,但是不大于32G
sudo printf "\nES_HEAP_SIZE=%sm\n" $es_heap_size >> /etc/default/elasticsearch
sudo printf "MAX_LOCKED_MEMORY=unlimited\n" >> /etc/default/elasticsearch
# 如果在elasticsearch.yml设置了bootstrap.mlockall: true,此处应该设置为unlimited。并且需要设置上述的es_heap_size
sudo echo "elasticsearch - nofile 65536" >> /etc/security/limits.conf
#设置elasticsearch的最大文件打开数位65536
sudo echo "elasticsearch - memlock unlimited" >> /etc/security/limits.conf
#sudo service elasticsearch restart
#sudo update-rc.d elasticsearch defaults 95 10
#查看是否设置成功
检查内存是否配置成功
http://yourip:9200/_cat/nodes?v&h=host,heap.current,heap.percent,heap.max,ram.max,disk.avail,node.role,m
大概得到如下
NOTE:上述采用的是sysvinit方式。如果你采用的是system方式,系统文件配置有部分需要修改。具体修改我有地方不理解,所以不做介绍。
具体查看:
关于sysvinit和system的介绍可以查看: