1、环境配置
1.1、创建用户elk
由于elasticsearch运行启动时在非root用户下,这里创建elk用户。
[root@wzy10 ~]# useradd -s /sbin/nologin elk
#注意-s /sbin/nologin表示不让elk这个用户登录系统
1.2、创建elasticsearch相关目录
我们这里规定/data/elk/data目录为elasticsearch的数据目录,而/data/elk/logs为elasticsearch的日志目录。
[root@wzy10 ~]# mkdir -p /data/elk/data
[root@wzy10 ~]# mkdir -p /data/elk/logs
[root@wzy10 ~]# chown -R elk:elk /data/elk/data/
[root@wzy10 ~]# chown -R elk:elk /data/elk/logs/
1.3、运行环境配置
1、文件权限不足问题
在启动elasticsearch时经常会遇到期提示文件权限不如,具体如下:
[1]: max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
解决方案(要求必须在root用户下)如下:
[root@wzy10 ~]# vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
#其中
2、线程数不够
在运行elasticsearch时经常会遇到期提示线程数不够,具体如下:
[1]: max number of threads [1024] for user [leyou] is too low, increase to at least [4096]
【解决方案如下(root用户下运行)】
[root@wzy10 ~]# vim /etc/security/limits.d/90-nproc.conf
* soft nproc 4096
* hard nproc 4096
【注意】在有些系统下可能是20-nproc.conf这个文件
3、进程虚拟内存问题
在运行elasticsearch时经常会遇到期提示进程虚拟内存问题,具体如下:
[3]: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
【解决方案如下:】
[root@wzy10 ~]# vim /etc/sysctl.conf
#添加如下内容
vm.max_map_count=655360
#配置生效
[root@wzy10 ~]# sysctl -p
2、安装elasticsearch
2.1、解压缩及配置elasticsearch.yml
#解压缩安装
[root@wzy10 soft]# tar -zxvf elasticsearch-6.2.4.tar.gz -C /usr/local/
[root@wzy10 soft]# cd /usr/local/elasticsearch-6.2.4/config/
#修改配置文件
[root@wzy10 config]# vim elasticsearch.yml
path.data: /data/elk/data
path.logs: /data/elk/logs
network.host: 0.0.0.0
http.port: 9200
network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问。
2.2、修改目录权限
修改目录权限是为了让非root用户能够启动elasticsearch
#设置解压目录的权限
[root@wzy10 config]# cd /usr/local/
[root@wzy10 local]# ln -s elasticsearch-6.2.4 elasticsearch
[root@wzy10 local]# chown -R elk:elk /usr/local/elasticsearch
[root@wzy10 local]# chown -R elk:elk /usr/local/elasticsearch-6.2.4
2.3、配置jvm.options
Elasticsearch基于Lucene的,而Lucene底层是java实现,因此我们需要配置jvm参数。
#配置jvm内存
[root@wzy10 local]# vim /usr/local/elasticsearch/config/jvm.options
-Xms1g
-Xmx1g
2.4、编写启动脚本
#编写启动elasticsearch启动脚本
[root@wzy10 local]# vim /usr/local/elasticsearch-6.2.4/bin/start.sh
/usr/local/elasticsearch-6.2.4/bin/elasticsearch -d >>/tmp/elasticsearch.log 2>>/tmp/elast
icsearch.log
#启动脚本添加执行权限
[root@wzy10 local]# chmod a+x /usr/local/elasticsearch-6.2.4/bin/start.sh
[root@wzy10 local]# chmod a+x /usr/local/elasticsearch/bin/start.sh
[root@wzy10 ~]# chown -R elk:elk /usr/local/elasticsearch/bin/start.sh
2.5、启动
1、在elk用户下启动elasticsearch
[root@wzy10 ~]# su - elk -s /bin/bash
Last login: Tue Nov 20 15:40:12 CST 2018 on pts/0
[elk@wzy10 ~]$ /usr/local/elasticsearch/bin/start.sh
查看启动情况
[elk@wzy10 ~]$ jps
31632 Jps
31420 Elasticsearch
2、非elk用户下启动
[root@wzy10 elk]# su elk -s /bin/bash '/usr/local/elasticsearch/bin/start.sh'
#jps查看是否启动
[root@wzy10 elk]# jps
3、验证
查看集群健康状态:http://192.168.2.10:9200/_cat/health?v
查看集群的节点:http://192.168.2.10:9200/_cat/nodes?v
【注意】如果想让外面主机查看访问,必须在elasticsearch.yml配置文件中network.host 绑定为0.0.0.0。
2.6、内核版本问题
如果我们安装elasticsearch的版本是在5.x以后的版本,且操作系统是centos6的那么必须配置内核参数;如果是centos7版本就不存在这个问题了。
【解决方案如下】
[root@wzy-yunwei ~]# vim /usr/local/elasticsearch-6.2.4/config/elasticsearch.yml
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
2.7、ElasticSearch的目录结构
3、elasticsearch.yml文件详解
在安装目录下的elasticsearch.yml配置文件是比较重要,下面对属性详细说明:
- cluster.name:配置elasticsearch的集群名称,默认是elasticsearch;生产环境必须修改;
- node.name:节点名称,es默认随机指定一个名字,生产下建议指定一个名称方便运维管理;
- path.conf:设置配置文件的存储路径,tar或者zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/elasticsearch;
- path.data:设置索引数据库的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开;
- path.logs:设置日志文件的村粗路径,默认是在es根目录的logs下的文件夹;
- path.plugins:设置插件的存放路径,默认是es根目录下的plugins文件夹;
- network.host:设置bind_host和publish_host,设置为0.0.0.0允许外网访问;
- http.prot:设置对外服务的http端口,默认是9200;
- transport.tcp.port:集群节点间的通信端口;
- bootstrap.memory_lock:设置为true可以锁住ES使用的内存,避免内存进行swap;
- discovery.zen.ping.timeout:设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些;
-
discovery.zen.minimum_master_nodes:主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2。