參考Elasticsearch 在CentOs7 環境中開機啟動
建議虛擬機的內存大小為4G
1. 新建一個用戶john
出於安全考慮,elasticsearch默認不允許以root賬號運行。
創建用戶:
useradd john
設置密碼:
passwd john
切換用戶:
su - john
2. 上傳安裝包,並解壓
我們將安裝包上傳到:/home/john
目錄
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終端,否則配置無效。