总体过程概述
1. 设置普通用户,ElasticSearch默认只能使用普通用户启动。
2. 配置环境,须要依赖JDK环境
3. 安装ElasticSearch,解决kernal版本低的问题
4. 配置外网访问,解决没法启动的三个错误问题
5. 让ElasticSearch在后台运行
6. 如何关闭ElasticSearch的后台进程
7. 配置过程遇到的报错处理
java
若是已是普通用户登陆可跳过此步骤。linux
ElasticSearch默认是不能使用root用户进行启动的,因此须要先添加一个普通用户,并使用普通用户身份安装ElasticSearch。bootstrap
1.添加一个用户,无任何提示则表示成功添加。vim
[root@localhost soft]# adduser elk
2.设置用户密码,须要输入两次。其中提示无效的密码能够不用管,是由于密码太简单,不符合安全要求。 浏览器
[root@localhost soft]# passwd elk 更改用户 elk 的密码 。 新的 密码: 无效的密码: 过于简单化/系统化 无效的密码: 过于简单 从新输入新的 密码: passwd: 全部的身份验证令牌已经成功更新。
2、安装jdk1.8安全
若是已经安装jdk1.8可跳过此步骤服务器
ElasticSearch是基于Java开发的,因此要先安装jdk环境。curl
1.使用编译安装jdk1.8jvm
[root@server02 elasticsearch-6.2.4]$ tar -zxvf jdk-8u161-linux-x64.tar.gz [root@server02 elasticsearch-6.2.4]$ cat /etc/profile ... export JAVA_HOME=/usr/local/java1.8/ export JRE_HOME=/usr/local/java1.8/jre/ export PATH=$PATH:/usr/local/java1.8/bin/ export CLASSPATH=./:/usr/local/java1.8/lib/:/usr/local/java1.8/jre/lib/ [root@server02 elasticsearch-6.2.4]$ mv /usr/bin/java /usr/bin/javabak [root@server02 elasticsearch-6.2.4]$ ln -s /usr/local/java/jdk1.7.0_67/jre/bin/java /usr/bin/java [root@server02 elasticsearch-6.2.4]$ java -version java version "1.8.0_161" Java(TM) SE Runtime Environment (build 1.8.0_161-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
1.首先到官网下载最新版本的ElasticSearch的zip压缩包,也能够复制下载地址在终端中使用wget命令直接下载到CentOS中。:elasticsearch
2.下载完成后,解压elasticsearch-6.2.4.tar.gz
tar -zxvf elasticsearch-6.2.4.tar.gz
解压完成后内容以下
[elk@localhost soft]$ ls elasticsearch-6.2.4 elasticsearch-6.2.4.tar.gz
3.进入elasticsearch-6.2.4,并启动elasticsearch
[elk@localhost soft]$ cd elasticsearch-6.2.4 [elk@localhost elasticsearch-6.2.4]$ bin/elasticsearch ## 会有一堆日志输出,还报了一个异常java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ ...不过这个异常不影响启动,是由于咱们的内核版本过低了,新版本系统应该没这个问题。
4.让启动不提示这个异常能够在config/elasticsearch.yml添加以下两行内容,其中:号后面要加上一个空格,由于这是yaml文件的格式要求,yaml是一种新的属性文件的写法,更简洁,不懂的能够自行查查。
bootstrap.memory_lock: false bootstrap.system_call_filter: false
5..这时从新启动,不会提示任何错误了。新打开一个窗口,输入curl localhost:9200
,若是有如下输出则说明启动成功。
[elk@localhost ~]$ curl localhost:9200 { "name" : "Dr0IyIr", "cluster_name" : "elasticsearch", "cluster_uuid" : "OX_SToLIQSKfLOpUTDWZ9g", "version" : { "number" : "6.2.4", "build_hash" : "ccec39f", "build_date" : "2018-04-12T20:37:28.497551Z", "build_snapshot" : false, "lucene_version" : "7.2.1", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
这个时候只有服务器自己能访问ElasticSearch的服务,接下来配置外网服务。
1.在config/elasticsearch.yml添加以下内容:
network.host: 0.0.0.0
5、错误处理
从新启动会报以下三个错误(个人翻译可能有误,大概这个意思)
ERROR: [3] bootstrap checks failed #文件句柄太少,至少要65536 [1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] #最大线程数太少,至少2048个(经典的2048游戏) [2]: max number of threads [1024] for user [king] is too low, increase to at least [4096] #虚拟内存太少,至少262144 [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
那么接下来分别解决上面三个问题:
首先切换回root用户进行这些系统操做,使用以下命令
[elk@localhost elasticsearch-6.2.4]$ su - 密码: [root@localhost ~]#
1.更改文件句柄数
[root@localhost ~]# vi /etc/security/limits.conf
在文件中加入以下内容(*表示任何用户)
* soft nofile 65536 * hard nofile 131072 * soft nproc 4096 * hard nproc 4096
2.增长线程数
[root@localhost ~]# vi /etc/security/limits.d/90-nproc.conf
将其中的
* soft nproc 1024
修改成
* soft nproc 4096
3.增长虚拟内存
[root@localhost ~]# vim /etc/sysctl.conf
在其中添加
vm.max_map_count=655360
4.这些修改完成后,并无生效,须要使用如下命令使其生效。
sysctl -p
6、从新启动ElasticSearch
2.进入elastic目录,并启动,这时一切正常啦
[king@localhost soft]$ cd elasticsearch-6.2.4 [king@localhost elasticsearch-6.2.4]$ bin/elasticsearch
输出信息以下:
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you #中间信息省略,出现下面这个started就成功了。 [2017-09-03T03:26:07,843][INFO ][o.e.n.Node ] [ZGws7ZX] started
这里打开本地浏览器,输入服务器地址就可心成功访问了,显示以下
3.若是项目启动成功了,可是本地访问不到,那么多是防火墙没有配置。此处就直接把防火墙关闭了。命令以下:
service iptables stop 或者添加9200端口: -A INPUT -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT
在启动时加上 -d 参数,以下
[elk@localhost elasticsearch-6.2.4]$ bin/elasticsearch -d
先查看后台的信息
[elk@localhost elasticsearch-6.2.4]$ ps -ef|grep elastic king 41496 41309 2 03:53 pts/0 00:00:11 /usr/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC - .............
根据PID关闭进程,从新查看,有一个退出任务已经在执行了
[king@localhost elasticsearch-6.2.4]$ kill 41496 [king@localhost elasticsearch-6.2.4]$ ps -ef|grep elastic king 41642 41309 0 04:02 pts/0 00:00:00 grep elastic [1]+ Exit 143 nohup bin/elasticsearch > /dev/null 2>&1
问题:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决方法:
#切换到root用户修改 vim /etc/security/limits.conf # 在最后面追加下面内容 * hard nofile 65536 * soft nofile 65536
修改后从新登陆elk用户,使用以下命令查看是否修改为功
ulimit -Hn 65536
问题:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决方法 提升vm.max_map_count 的大小
# 切换到root用户 vim /etc/sysctl.conf # 在最后面追加下面内容 vm.max_map_count=262144 # 使用 sysctl -p 查看修改后的结果 sysctl -p
问题:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
解决方法:
# 因为elasticsearch5.0默认分配jvm空间大小为2g,修改jvm空间分配 # 若是使用虚拟机安装,内存最好不小于2G # vim config/jvm.options -Xms512m -Xmx512m
在阿里云上可能出现的问题:
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
解决方法:在es配置中加入下面命令便可
bootstrap.system_call_filter: false
若是没法生效能够重启服务器后,使调整的参数生效!