centos6.10搭建ELK之elasticsearch6.5.4
1、环境准备
1.1.安装java环境版本不要低于java8
# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
1.2.关闭swap分区
原因:操作系统会尽可能多的缓存文件系统数据到内存中,这可能导致JVM堆的某些部分,甚至其可执行页面被交换到磁盘。这会导致ES性能变差。
禁用swap有三种方法,其中第一种最后,如果当前系统环境不适用第一种方法,
临时关闭:
# swapoff -a
永久关闭:
修改/etc/fstab文件,注释掉swap分区
第二种方法:
这减少了内核交换的倾向,在正常情况下不应该导致交换,同时仍然允许整个系统在紧急情况下交换。
# echo "vm.swappiness = 1" >> /etc/sysctl.conf
第三种方法:
尝试将进程地址空间锁定到RAM中,防止任何Elasticsearch内存被交换出去。这可以通过在config/elasticsearch.yml中添加这一行来实现。
bootstrap.memory_lock: true
检测mlockall是否启用:
# curl -X GET "localhost:9200/_nodes?filter_path=**.mlockall"
{"nodes":{"UMakWu4ESSymEt6kXinsjQ":{"process":{"mlockall":false}}}}
1.3.文件描述符和最大进程数配置
Elasticsearch使用许多文件描述符或文件句柄。耗尽文件描述符可能是灾难性的,并且很可能导致数据丢失。请确保将运行Elasticsearch的用户的打开文件描述符的数量限制增加到65536或更高
# cat /etc/security/limits.conf|grep -Ev "^#|^$"
elasticsearch soft nproc 655350
elasticsearch hard nproc 655350
elasticsearch soft nofile 655350
elasticsearch hard nofile 655350
检测文件描述符数量:
# curl -X GET
"localhost:9200/_nodes/stats/process?filter_path=**.max_file_descriptors"
{"nodes":{"UMakWu4ESSymEt6kXinsjQ":{"process":{"max_file_descriptors":655350}}}}
1.4.加大vm.max_map_count内核参数
Elasticsearch默认使用mmapfs目录来存储索引。默认操作系统对mmap计数的限制可能太低,这可能导致内存不足异常。
在Linux上,可以通过以root用户身份运行以下命令来增加限制:
系统默认值是65530。
如果使用rpm包安装,请忽略这一步,因为rpm包的脚本里已经执行了响应指令。
# echo "vm.max_map_count = 655350" >>/etc/sysctl.conf ;sysctl -p
2.安装启动elasticsearch
2.1.获取安装包
下载地址:选择你需要的版本下载
https://www.elastic.co/downloads/past-releases
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.rpm
2.2.安装并启动
# rpm -ivh elasticsearch-6.5.4.rpm
修改配置文件
# grep -Ev "^#|^$" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-es #设置集群名称
node.name: node-1 #设置节点名称
node.master: true #设置该节点为master节点
node.data: true #设置该节点为数据节点,生产一般不会即
#是master节点又是数据节点
path.data: /var/lib/elasticsearch #生产环境一般都会更改数据存放目录
path.logs: /var/log/elasticsearch #我自己测试就不改了
bootstrap.memory_lock: false #关闭引导检测
bootstrap.system_call_filter: false #关闭引导检测
network.host: 0.0.0.0 #设置主机地址
http.port: 9200 #设置监听端口
启动:
# chkconfig elasticsearch on
# /etc/init.d/elasticsearch start
如果启动失败,请查看日志信息获取报错信息。
2.3.检查ES信息
# curl localhost:9200
{
"name" : "node-1",
"cluster_name" : "my-es",
"cluster_uuid" : "1McmmxxOSXeCf9Sx-XSfmQ",
"version" : {
"number" : "6.5.4",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
# curl localhost:9200/_cluster/health?pretty
{
"cluster_name" : "my-es",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}