離線環境快速搭建ElasticSearch集群
ElasticSearch作為當下流行的一款全文檢索工具,其官方提供ELK日誌檢索方案被許多公司使用,只不過各個公司在做日誌收集流程的時候加入一些其他的軟體,比如使用Linux系統自帶的rsyslog轉發日誌,而不是使用Logstash侵入到各個伺服器,所以ElasticSearch集群的搭建就比較關鍵,本文將帶著大家來搭建一個三個節點的ElasticSearch集群環境。
準備工作
在安裝ElasticSearch的時候需要提前安裝好jdk環境,筆者集群使用的jdk版本是jdk8,伺服器配置:
操作系統CentOS7.2
內存16G
數量三台
ElasticSearch版本5.6
ElasticSearch安裝
安裝使用官網提供的rpm安裝包,對ElasticSearch進行離線安裝。
1、新建用戶elasticsearch,設置用戶密碼
為用戶添加sudo許可權,命令如下:
vi /etc/sudoers
在文件中添加如下內容
elasticsearch ALL=(ALL) ALL
設置用戶密碼
passwd elasticsearch(密碼可自行設定)
2、安裝elasticsearch的rpm安裝包
切換到elasticsearch用戶
su – elasticsearch
使用rpm包安裝elasticsearch
sudo rpm -ivh elast icsearch-5.6.0.rpm(需要注意安裝包的屬主)
3、設置ElasticSearch以系統服務的方式啟動
重新載入系統服務
sudo systemctl daemon-reload
將elasticsearch添加到系統服務
sudo chkconfig --add elasticsearch
elasticsearch啟動命令,此處我們先不用,修改完下面的參數後我們再用
sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service
上面的步驟需要在集群其他節點伺服器執行一遍,不再重複。服務也可以設置為隨系統啟動,此處不做介紹。
Linux 系統參數修改
生產環境中ElasticSearch的啟動對系統參數以及ElasticSearch本身的配置都比較嚴格,所以ElasticSearch的啟動需要修改如下的系統參數(下面參數的修改請使用root用戶,並對集群中每台伺服器均做此操作)
1、修改limits.conf配置文件
vi /etc/security/limits.conf
將下面部分添加到配置文件中:
* soft nofile 65536
* hard nofile 131072
* soft noproc 2048
* hard noproc 4096
以上部分配置參數如果已經存在,請修改成上面的值,若不存在,直接添加,下面為新增內容:
#allow usr elasticsearch mlockall 備註行可以自行選擇是否添加
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
2、修改20-nproc.conf 配置文件
編輯配置文件
vi /etc/security/limits.d/20-nproc.conf
修改如下內容
* soft nproc 1024
修改為
* soft nproc 2048
註:如果文件中的配置大於2048,可以不修改
3、修改/etc/sysctl.conf配置文件
vi /etc/sysctl.conf
在文件中添加如下內容:
vm.max_map_count=262144
4、使配置生效
執行如下命令使配置生效
sysctl -p
控制會列印出來下面的信息,也就是我們在上一步配置文件中添加的內容
vm.max_map_count=262144
5、修改elasticsearch腳本文件中的JAVA_HOME變數
在elasticsearch安裝路徑的bin目錄下找到elasticsearch腳本文件(參考文件位置:/usr/share/elasticsearch/bin/elasticsearch),添加如下內容,在#!/bin/bash 行下面添加Java的環境變數,如不添加,啟動時會提示找不到Java
JAVA_HOME=/usr/java/jdk (根據實際jdk安裝路徑填寫)
6、配置elasticsearch為集群運行
rpm方式安裝的elasticsearch,文件路徑為:/etc/elasticsearch/elasticsearch.yml
#集群名稱
cluster.name : my-application
#節點名稱
node.name : node-1
#數據存儲位置
path.data : /home/elasticsearch/data
#ElasticSearch日誌存放位置
path.logs : /home/elasticsearch/logs
#鎖定內存,阻止操作系統管理內存,可以有效的防止內存數據被交換到磁碟空間,
#交換過程中磁碟會抖動,會對性能產生較大的影響。因為ES是基於JAVA開發的
# 可以能過垃圾回收器來單獨管理內存,所以關閉操作系統級別的內存管理可以
#提升性能
bootstrap.memory_lock : true
# 綁定節點上的所有網路介面,用於接收通過任意網卡傳輸過來的請求
network.host : 0.0.0.0
# HTTP 通信埠
http.port : 9200
其餘兩個節點的不同之處
54:node.name : node-2
55 : node.name : node-2
註:slave01、slave02、slave03為主機名,也可使用IP。
對ElasticSearch 的其他非必須參數,此處不再進行介紹,如有需要可以查閱官方文檔進行參數調整。
7、創建override.conf配置文件
因為使用rpm方式安裝elasticsearch,當系統使用systemd方式時,system 限制是從systemd獲取,啟動時會從/usr/lib/systemd/system/elasticsearch.service讀取默認限制,為使得elasticsearch能夠正常啟動,需要在/etc/systemd/system/下創建目錄elasticsearch.service.d,在該目錄下面創建文件override.conf,文件內容如下:
[Service]
LimitMEMLOCK=infinity
至此我們就可以啟動我們的ElasticSearch集群了
踩過的雷,你不要碰
上一節第6步中修改配置文件如下部分時:
network.host : 0.0.0.0
http.port : 9200
必須是這種格式,每行空一格,冒號前後各空一格,如果讀者對yml文件格式了解則可能很輕易繞過,筆者當初因為不熟悉這個格式,只是單純的把ElasticSearch配置文件中的#去掉,結果無法啟動,修改成上面的格式後,方才正常啟動。
結束語
平時在網上看到過許多關於ElasticSearch的安裝介紹,但是參照相關文檔在公司環境都沒有安裝成功,最後對著啟動提示的錯誤,一點點的修改,方才安裝成功,也希望對讀者有所幫助。記得認識的一位技術大佬曾經對我說過,你現在沒有能力,可以去拿一些開源的東西,等你有能力的時候,一定要回饋開源社區,這句話我一直記得,在此分享給大家,也是我分享這篇文章的初衷。最後也同樣希望讀者能回饋開源,不要只索取不付出,開源就是分享,一篇文章,一段代碼,足已。


※為愛的人煮完暖心的八寶粥
※請以你的名字呼喚我,因為那是最大的美好
TAG:全球大搜羅 |