ElasticSearch5.6.5集群部署及調優、Head和Bigdesk插件安裝
一、簡介:
Elasticsearch是一個基於Apache Lucene的開源搜索引擎。無論在開源還是專有領域,Lucene可以被認為是迄今為止最先進、性能最好的、功能最全的搜索引擎庫。
Elasticsearch不僅僅是Lucene和全文搜索,我們還能這樣去描述它:
· 分布式的實時文件存儲,每個字段都被索引並可被搜索
· 分布式的實時分析搜索引擎
· 可以擴展到上百臺服務器,處理PB級結構化或非結構化數據
二、環境準備
主機 | 系統 | 配置 | IP |
node1 | Centos7.4 | CPU*2-MEM*4G | 172.16.10.172 |
node2 | Centos7.4 | CPU*2-MEM*4G | 172.16.10.190 |
node3 | Centos7.4 | CPU*2-MEM*4G | 172.16.10.193 |
系統前期優化:(三臺服務器分別按以下調試)
1.安裝常用軟件
yum install -y ntpdate net-tools vim lrzsz unzip gcc gcc-c++
2.關閉Firewalld、NetworkManager、Selinux
systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
3.時間同步
echo "0 */3 * * * /usr/sbin/ntpdate ntp5.aliyum.com >/dev/null 2>&1; /sbin/hwclock -w">>/etc/crontab
4.PAM認證
vim/etc/security/limit.conf #追加到配置文件
* soft nofile 102400
* hard nofile 102400
* soft nproc 102400
* hard nproc 102400
5.增加虛擬內存
Vim /etc/sysctl.conf #追加到配置文件
vm.max_map_count=655360
使用sysctl –p刷新配置
6.配置免密碼登陸:
[root@node1 ~]# ssh-keygen
[root@node1 ~]# ssh-copy-id 172.16.10.190
[root@node1 ~]# ssh-copy-id 172.16.10.193
7.配置hosts
172.16.10.172 node1
172.16.10.190 node2
172.16.10.193 node3
8.註意:
es(elasticsearch)版本2.x以上需要JDK 1.8以上
運行es不能使用root用來來運行
es目錄必須指定一個普通用戶和組(授權)
es對內存和CPU的消耗比較高
es使用的端口看開放iptables:9200,9300等
es配置其他插件實現資源等可視化監控
es的版本和插件之間版本要匹配
三、Jdk安裝:
軟件包:jdk-8u171-linux-x64.tar.gz
tar xf jdk-8u171-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
mv jdk1.8.0_171/ jdk1.8
cat /etc/profile.d/jdk8.sh
export JAVA_HOME=/usr/local/jdk1.8
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jar/tools.jar:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
source /etc/profile.d/jdk8.sh
驗證:java –version
四、ElasticSearch集群安裝
軟件包:elasticsearch-5.6.5.tar.gz
註意:ElasticSearch安裝不能用root用戶安裝,三臺服務器分別按以下調試
1.新建用戶、組
groupadd es
useradd es -g es
2.解壓、創建目錄、授權
tar xf elasticsearch-5.6.5.tar.gz -C /usr/local/
cd /usr/local/
mv elasticsearch-5.6.5 elasticsearch
mkdir /usr/local/elasticsearch/data/
mkdir /usr/local/elasticsearch/logs/
chown -R es.es /usr/local/elasticsearch
3.elasticsearch目錄介紹
目錄 | 作用 |
/bin | 運行es實例和管理插件的一些腳本 |
/config | 配置文件路徑,包含elasticsearch.yml |
/data | 在節點上每個索引/碎片的數據文件的位置,可以多個目錄 |
/lib | Es使用的庫 |
/logs | 日誌存放目錄 |
/plugins | 已經安裝的插件存放位置 |
/modules | 模塊目錄 |
4.修改配置文件elasticsearch.yml(內置調優)
#node1配置文件
cd /usr/local/elasticsearch/config
[root@node1 config]# cat elasticsearch.yml |egrep -v "^#|^$"
cluster.name: es-cluster
node.name: node-1
path.data: /usr/local/elasticsearch/data/
path.logs: /usr/local/elasticsearch/logs/
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
network.host: 172.16.10.172
http.port: 9200
http.compression: true
discovery.zen.ping.unicast.hosts: ["172.16.10.172:9300", "172.16.10.190:9300","172.16.10.193:9300"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
#node2配置文件
[root@node2 config]# egrep -v "^#|^$" elasticsearch.yml
cluster.name: es-cluster
node.name: node-2
path.data: /usr/local/elasticsearch/data/
path.logs: /usr/local/elasticsearch/logs/
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
network.host: 172.16.10.190
http.port: 9200
http.compression: true
discovery.zen.ping.unicast.hosts: ["172.16.10.172:9300", "172.16.10.190:9300","172.16.10.193:9300"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
#node3配置文件
[root@node3 config]# egrep -v "^#|^$" elasticsearch.yml
cluster.name: es-cluster
node.name: node-3
path.data: /usr/local/elasticsearch/data/
path.logs: /usr/local/elasticsearch/logs/
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
network.host: 172.16.10.193
http.port: 9200
http.compression: true
discovery.zen.ping.unicast.hosts: ["172.16.10.172:9300", "172.16.10.190:9300","172.16.10.193:9300"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*
解釋說明:
cluster.name 集群名字,同一個集群中使用相同名字,單機就隨意
node.name: node-1 節點名字
path.data:分配給當前節點的索引數據所在的位置:
path.logs:日誌文件所在位置
bootstrap.memory_lock: true:設置為true,memory_lock來鎖定物理內存,避免使用內存交換(SWAP)來提高性能(elasticsearch 2.4版本後)
(bootstrap.mlockall: true:這個是坑,如果加入配置,服務將無法啟動,原因無法找到這個參數,這個參數是在elasticsearch 2.4之前版本才有)
bootstrap.system_call_filter:系統環境檢測,設置關閉防止導致es無法啟動
network.host:ES節點網絡地址
http.port:Http傳輸監聽定制端口:默認是9200
http.compression:web服務器和瀏覽器客戶端傳送數據時,將網頁數據/客戶端響應數據在發送給對方前先進行壓縮再傳輸
discovery.zen.ping.unicast.hosts:設置集群中master節點的初始列表
discovery.zen.minimum_master_nodes:設置參數來保證集群中的節點可以通知其他N個有master資格節點,默認 1
http.cors.enabled和http.cors.allow-origin:允許head插件通過web訪問
註:
node.master: true:指定該節點是否有資格被選舉成為node,默認是true,es是默認集群中的第一臺機器為master,如果這臺機掛了就會重新選舉master。
node.data: true:指定該節點是否存儲索引數據,默認為true。
#3種配置高性能集群拓撲結構的模式,如下:
a.如果你想讓節點從不選舉為主節點,只用來存儲數據,可作為負載器
node.master: false
node.data: true
b.如果想讓節點成為主節點,且不存儲任何數據,並保有空閑資源,可作為協調器
node.master: true
node.data: false
c. 如果想讓節點既不稱為主節點,又不成為數據節點,那麽可將他作為搜索器,從節點中獲取數據,生成搜索結果等
node.master: false
node.data: false
5.啟動elasticsearch
su - eselasticsearch
nohup /usr/local/elasticsearch/bin/elasticsearch &
tail -f nohup.out
集群效果圖:
6.訪問:http://172.16.10.172:9200/
{
"name" : "node-1",
"cluster_name" : "es-cluster",
"cluster_uuid" : "y1PDOlDvQ5eRDRl0TANUsQ",
"version" : {
"number" : "5.6.5",
"build_hash" : "1a2f265",
"build_date" : "2017-10-06T20:33:39.012Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
五、ElasticSearch-Head安裝
Head插件介紹:
head插件是一個elasticsearch的集群管理工具,相交互的Web前臺,它是完全由html5編寫的獨立網頁程序。
#ES-Head主要作用
a.它展現ES集群的拓撲結構,並且可以通過它來進行索引(Index)和節點(Node)級別的操作
b.它提供一組針對集群的查詢API,並將結果以json和表格形式返回
c.它提供一些快捷菜單,用以展現集群的各種狀態
head插件的安裝(head 插件不能放在elasticsearch-5.6.5文件夾裏,head 插件需要單獨放,單獨去執行)
yum -y install unzip zip openssl-devel wget
1.解壓head
unzip elasticsearch-head-master.zip -d /usr/local/
2.安裝node
tar xf node-v10.8.0-linux-x64.tar.gz
mv node-v10.8.0-linux-x64 /usr/local/node
ln -s /usr/local/node/bin/* /usr/local/bin
3.驗證是否安裝配置成功:
node -v
4.安裝grunt
cd elasticsearch-head-master/
npm install -g grunt-cli //執行後會生成node_modules文件夾
npm install --ignore-scripts
5.修改vim Gruntfile.js文件:增加hostname屬性,設置為*
connect: {
server: {
options: {
port: 9100,
hostname: '*',
base: '.',
keepalive: true
}
}
}
6.修改 vim _site/app.js 文件:修改head的連接地址:
this.base_uri = this.config.base_uri || this.prefs.get(“app-base_uri”) || “http://localhost:9200“;
修改成ElasticSearch的機器地址
this.base_uri = this.config.base_uri || this.prefs.get(“app-base_uri”) || “http://172.16.10.172:9200“;
7.執行命令啟動 head
cd /usr/local/elasticsearch-head-master/node_modules/grunt/bin
grunt server
後臺啟動命令(建議後臺啟動,查看out.log啟動情況)
nohup grunt server &
8.訪問http://172.16.10.172:9100/
六、ElasticSearch-Bigdesk安裝
Bigdesk介紹
bigdesk是elasticsearch的一個集群監控工具,可以通過它來查看集群的各種狀態,如:cpu、內存使用情況,索引數據、搜索情況,http連接數等。
註:至少兩臺這個工具才可用
1.下載軟件包
[root@node1 elasticsearch]# cd plugins/
[root@node1 plugins]# git clone https://github.com/hlstudio/bigdesk
[root@node1 plugins]#cd /usr/local/elasticsearch/plugins/bigdesk/_site
2.啟動bigdesk
[root@node1 _site]# python -m SimpleHTTPServe
3.訪問:http://172.16.10.172:8000
連接之前:
連接之後:
七、結尾
經過幾天閱讀相關資料,部署過程踩了很多坑,本文實踐多次測試整理具有參考價值,以上過程內置調優參數,調優建議根據生產需求和官方文檔進行調整相關參數,建議按照本文步驟流程實施部署,少走彎路少采坑。後續繼續創建數據模擬、調優和模擬ES腦裂等等。本文純屬個人筆記,歡迎各位大佬指點指導。推薦架構:Elasticsearch + Logstash + Kibana(ELK)。
ElasticSearch5.6.5集群部署及調優、Head和Bigdesk插件安裝