1. 程式人生 > >ElasticSearch5.6.5集群部署及調優、Head和Bigdesk插件安裝

ElasticSearch5.6.5集群部署及調優、Head和Bigdesk插件安裝

work 指點 app.js 模擬 eas disable firewalld sts 無法


一、簡介

Elasticsearch是一個基於Apache Lucene的開源搜索引擎。無論在開源還是專有領域,Lucene可以被認為是迄今為止最先進、性能最好的、功能最全的搜索引擎庫。

Elasticsearch不僅僅是Lucene和全文搜索,我們還能這樣去描述它:

· 分布式的實時文件存儲,每個字段都被索引並可被搜索

· 分布式的實時分析搜索引擎

· 可以擴展到上百臺服務器,處理PB級結構化或非結構化數據


二、環境準備

主機系統配置IP
node1Centos7.4CPU*2-MEM*4G172.16.10.172
node2Centos7.4CPU*2-MEM*4G
172.16.10.190
node3Centos7.4CPU*2-MEM*4G172.16.10.193

系統前期優化:(三臺服務器分別按以下調試)

1.安裝常用軟件

yum install -y ntpdate net-tools vim lrzsz unzip gcc gcc-c++

2.關閉FirewalldNetworkManagerSelinux

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插件安裝