今天在自己的Linux系統搭建了一套單機版的ElasticSearch,過程遇到很多坑,以此作爲總結,以便日後快速部署:
版本信息及下載:
- 1、Java版本:jdk1.8.0_191(必須是1.8以上)
官網下載:點擊鏈接進入>>安裝教程<<
- 2、ElasticSearch版本:
6.5.1
(以下簡稱ES或es)
官網下載地址:https://www.elastic.co/downloads/elasticsearch (自行上傳Linux系統)
指定下載版本:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.tar.gz (修改版本號即可)
一、ES安裝:
1、將下載好的tar包上傳到服務器/opt/seesun2012目錄下,執行如下命令(#號後面的纔是可執行命令
,下文雷同):
[root@localhost /]# mkdir /opt/seesun2012 // 新建管理目錄(打在//後面的是註釋,不用複製)
[root@localhost /]# cd /opt/seesun2012 // 進入seesun2012
[root@localhost seesun2012]# rz // 上傳ES安裝文件
2、解壓安裝包及修改文件名稱,命令如下:
[root@localhost seesun2012]# tar -zxvf elasticsearch-6.5.1.tar.gz // 解壓安裝包
[root@localhost seesun2012]# ll // 查看目錄文件
[root@localhost elastic]# mv elasticsearch-6.5.1 elastic // 修改文件名
3、創建ES用戶和組(因爲ES不允許使用root用戶執行),命令如下:
[root@localhost /]# groupadd es // 添加用戶組,組名:es
[root@localhost /]# useradd es -g es // 添加用戶,格式: 用戶名 -g 組名
[root@localhost /]# chown -R es:es /opt/seesun2012/elastic // 設置目錄權限
[root@localhost /]# passwd es // 設置es用戶登陸密碼(提示過於簡單繼續確認)
4、修改ES配置文件,執行vi /opt/seesun2012/elastic/config/elasticsearch.yml
命令,修改內容如下:
#network.host: 192.168.0.1
network.host: 192.168.2.71
5、啓動ES文件,cd 進入到 /opt/seesun2012/elastic/
目錄執行如下命令:
[root@localhost seesun2012]# ./bin/elasticsearch -d // 啓動ES服務,-d 代表後臺啓動
6、查看ES動態日誌(Linux面試必問):
[root@localhost elastic]# tailf /opt/seesun2012/elastic/logs/elasticsearch.log
7、啓動成功示例圖(內網訪問),失敗解決方案
在底部:
二、錯誤&解決方案:
1、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
原因: 意思是說你的進程不夠用了
解決方案: 切到root 用戶:進入到security目錄下的limits.conf;執行命令 vim /etc/security/limits.conf
在文件的末尾添加下面的參數值:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
2、max number of threads [3803] for user [es] is too low, increase to at least [4096]
原因:意思就是說你的線程數不夠用了
解決方案: 切到root 用戶:執行命令 vi /etc/security/limits.d/20-nproc.conf
修改3803爲4096:
* soft nproc 4096
root soft nproc unlimited
如果還是失敗(大多出現在 Centos7 以上
),換下面這種:
* hard nproc 4096
* soft nproc 4096
elk soft nproc 4096
root soft nproc unlimited
3、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因: 需要修改系統變量的最大值
解決方案:切換到 root 用戶修改配置 /etc/sysctl.conf
增加配置值:vm.max_map_count=655360
執行命令 sysctl -p
這樣就可以了,會顯示如下信息
[root@localhost ~]# sysctl -p
vm.max_map_count = 262144
4、system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
問題原因:因爲Centos6不支持SecComp,而ES5.2.1默認bootstrap.system_call_filter爲true進行檢測,所以導致檢測失敗,失敗後直接導致ES不能啓動。詳見 :https://github.com/elastic/elasticsearch/issues/22899
解決方法:在elasticsearch.yml中配置bootstrap.system_call_filter爲false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
持續更新中…
如有對思路不清晰或有更好的解決思路,歡迎與本人交流,QQ羣:273557553,個人微信:seesun2012
你的提問是小編創作靈感的來源!