參考Elasticsearch 在CentOs7 環境中開機啟動
建議虛拟機的記憶體大小為4G
1. 建立一個使用者john
出于安全考慮,elasticsearch預設不允許以root賬号運作。
建立使用者:
useradd john
設定密碼:
passwd john
切換使用者:
su - john
2. 上傳安裝包,并解壓
我們将安裝包上傳到:
/home/john
目錄
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBHL0FWby9mZvwVZnFWbp1zczV2YvJHctM3cv1Ce-4WNHNWdZpXT31keOJTTE50MwM1T1cGVNhXWE10MFpnT3lEVNVTRE1UewM0T1sGRNRTVU1kdJRVT1UERNlHOD9UNrRUT0UFVNZ3YyI2cKJDT0ljMZVXTzold41WW15UbMRTRE1UejdlYwlTeMZTTINGMShUYvwlbj5yZtlmbkN3YuQnclZnbvN2Ztl2Lc9CX6MHc0RHaiojIsJye.jpg)
tar zxf elasticsearch-6.3.0.tar.gz
mv elasticsearch-6.3.0 elasticsearch
3. 修改配置
cd elasticsearch/config/
# 編輯jvm.options:
vim jvm.options
預設配置如下:
-Xms1g
-Xmx1g
記憶體占用太多了,我們調小一些:
-Xms512m
-Xmx512m
- elasticsearch.yml
vim elasticsearch.yml
- 修改資料和日志目錄:
path.data: /home/john/elasticsearch/data # 資料目錄位置
path.logs: /home/john/elasticsearch/logs # 日志目錄位置
# 預設隻允許本機通路,修改為0.0.0.0後則可以遠端通路
network.host: 0.0.0.0 # 綁定到0.0.0.0,允許任何ip來通路
我們把data和logs目錄修改指向了elasticsearch的安裝目錄。但是這兩個目錄并不存在,是以我們需要建立出來。
進入elasticsearch的根目錄,然後建立:
mkdir data
mkdir logs
設定 max_map_count
- 切換到root使用者修改配置sysctl.conf
vi /etc/sysctl.conf
- 添加下面配置:
vm.max_map_count=655360
并執行指令:
sysctl -p
目前我們是做的單機安裝,如果要做叢集,隻需要在這個配置檔案中添加其它節點資訊即可。
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檔案夾 |
bootstrap.memory_lock | 設定為true可以鎖住ES使用的記憶體,避免記憶體進行swap |
network.host | 設定bind_host和publish_host,設定為0.0.0.0允許外網通路 |
http.port | 設定對外服務的http端口,預設為9200。 |
transport.tcp.port | 叢集結點之間通信端口 |
discovery.zen.ping.timeout | 設定ES自動發現節點連接配接逾時的時間,預設為3秒,如果網絡延遲高可設定大些 |
discovery.zen.minimum_master_nodes | 主結點數量的最少值 ,此值的公式為:(master_eligible_nodes / 2) + 1 ,比如:有3個符合要求的主結點,那麼這裡要設定為2 |
4. 運作
su john
cd /home/john/elasticsearch/bin
./elasticsearch
表明elasticserarch初步啟動成功
# 設定背景啟動
./elasticsearch -d
5. 設定開機自啟
一:先檢視目前的開機啟動服務;
chkconfig --list
二:建立es 的系統啟動服務檔案,進入到 cd /etc/init.d 目錄;
cd /etc/init.d 【進入到目錄】
vi elasticsearch 【建立es系統啟動服務檔案】
三:編寫啟動腳本;
#!/bin/bash
#chkconfig: 345 63 37
#description: elasticsearch
#processname: elasticsearch-5.4.0
export ES_HOME=/home/john/elasticsearch/ 【這個目錄是你Es所在檔案夾的目錄】
case $1 in
start)
su john<<! 【es 這個是啟動es的賬戶,如果你的不是這個記得調整】
cd $ES_HOME
./bin/elasticsearch -d -p pid
exit
!
echo "elasticsearch is started"
;;
stop)
pid=`cat $ES_HOME/pid`
kill -9 $pid
echo "elasticsearch is stopped"
;;
restart)
pid=`cat $ES_HOME/pid`
kill -9 $pid
echo "elasticsearch is stopped"
sleep 1
su john<<! 【es 這個是啟動es的賬戶,如果你的不是這個記得調整】
cd $ES_HOME
./bin/elasticsearch -d -p pid
exit
!
echo "elasticsearch is started"
;;
*)
echo "start|stop|restart"
;;
esac
exit 0
記得 删除筆者的[中文提示]
儲存退出
四:修改檔案權限;
chmod 777 elasticsearch
五:添加和删除服務并設定啟動方式;
chkconfig --add elasticsearch #【添加系統服務】
chkconfig --del elasticsearch #【删除系統服務】
六:關閉和啟動服務;
service elasticsearch start #【啟動】
service elasticsearch stop #【停止】
service elasticsearch restart #【重新開機】
七:設定服務是否開機啟動;
chkconfig elasticsearch on #【開啟】
chkconfig elasticsearch off #【關閉】
驗證是否已啟動指令:
ps -ef | grep elasticsearch #【檢視是否有es的程序】
結束程序指令用kill -9 程序ID;
6. 安裝ik分詞器
cd /home/john/
unzip elasticsearch-analysis-ik-6.3.0.zip -d ik-analyzer
mv ik-analyzer/ elasticsearch/plugins/
service elasticsearch restart
測試分詞器是否安裝成功
在kibana中輸入如下
POST _analyze
{
"analyzer": "ik_max_word",
"text": "我是中國人"
}
常見錯誤
錯誤1:核心過低
使用的是centos6,其linux核心版本為2.6。而Elasticsearch的插件要求至少3.5以上版本。不過沒關系,我們禁用這個插件即可。
修改elasticsearch.yml檔案,在最下面添加如下配置:
bootstrap.system_call_filter: false
然後重新開機
錯誤2:檔案權限不足
再次啟動,又出錯了:
[1]: max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
我們用的是leyou使用者,而不是root,是以檔案權限不足。
首先用root使用者登入。
然後修改配置檔案:
vim /etc/security/limits.conf
添加下面的内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
錯誤3:線程數不夠
剛才報錯中,還有一行:
[1]: max number of threads [1024] for user [leyou] is too low, increase to at least [4096]
這是線程數不夠。
繼續修改配置:
vim /etc/security/limits.d/90-nproc.conf
修改下面的内容:
* soft nproc 1024
改為:
* soft nproc 4096
錯誤4:程序虛拟記憶體
[3]: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
vm.max_map_count:限制一個程序可以擁有的VMA(虛拟記憶體區域)的數量,繼續修改配置檔案, :
vim /etc/sysctl.conf
添加下面内容:
vm.max_map_count=655360
然後執行指令:
sysctl -p
5.重新開機終端視窗
所有錯誤修改完畢,一定要重新開機你的 Xshell終端,否則配置無效。