此操作环境为:red7
下载环境包
elasticsearch-5.4.0
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.tar.gz
tar -xzf elasticsearch-5.4.3.tar.gz
修改es参数
vim config/elasticsearch.yml
#集群名
cluster.name: es5
#节点名称
node.name: esnode1
#ip或域名
network.host: esnode1
#禁止内存交换
bootstrap.memory_lock: true
#启动时已root用户执行 ulimit -l unlimited
#或者在/etc/security/limits.conf中设置memlock为unlimited
#集群所有节点
discovery.zen.ping.unicast.hosts: [“esnode1”, “esnode2”, “esnode3”]
#符合master条件的节点组成集群的最小个数,计算公式建议(master_eligible_nodes / 2) + 1
discovery.zen.minimum_master_nodes: 2
#可以通过逗号指定多个目录存放
path.data: /path/to/data1,/path/to/data2
修改jvm内存
vim config/jvm.options
#根据集群数据规模调整堆内存大小,一般为可用内存的一半,但是最好不要超过32G
-Xms2g
-Xmx2g
当数据量过大时需要更换垃圾收集器,因为默认的CMS对大内存耗时比较长,容易出现”Stop the World”的情况,这是需要更换为更擅长处理大内存的收集器:G1(G1是Java7以后推荐的垃圾回收方式)
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
更换为
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
G1可以控制垃圾回收的时间,-XX:MaxGCPauseMillis是控制预期的最高GC时长,默认值为200ms,如果线上业务特性对于GC停顿非常敏感,可以适当设置低一些。但是这个值如果设置过小,可能会带来比较高的cpu消耗。
操作系统
vim /etc/security/limits.conf
注:es5为启动es服务的用户(es5不能以root用户启动),修改完后重新登录ulimit -a 查看是否生效
* soft nofile 65536
* hard nofile 131072
vim /etc/fstab
注释掉该文件中包含swap的行
vim /etc/sysctl.conf
fs.file-max=65536
vm.max_map_count=262144
sysctl -p
启动
ulimit -l unlimited
使用除root之外的其它用户启动
su es5 bin/elasticsearch