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


1、簡介html

Elasticsearch是一個基於Apache Lucene的開源搜索引擎。不管在開源仍是專有領域,Lucene能夠被認爲是迄今爲止最早進、性能最好的、功能最全的搜索引擎庫。html5

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

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

·        分佈式的實時分析搜索引擎python

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


2、環境準備c++

主機 系統 配置 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

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

1.安裝經常使用軟件github

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

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的版本和插件之間版本要匹配


3、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


4、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 

集羣效果圖:

image.png

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"

5、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/

image.png
6、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

鏈接以前:

image.png
鏈接以後:

image.png

image.png



結尾

       通過幾天閱讀相關資料,部署過程踩了不少坑,本文實踐屢次測試整理具備參考價值,以上過程內置調優參數,調優建議根據生產需求和官方文檔進行調整相關參數,建議按照本文步驟流程實施部署,少走彎路少採坑。後續繼續建立數據模擬、調優和模擬ES腦裂等等。本文純屬我的筆記,歡迎各位大佬指點指導。推薦架構:Elasticsearch + Logstash + Kibana(ELK)。

相關文章
相關標籤/搜索