ElasticSearch6.4.0集羣搭建

最近在學習ES相關內容,爲了方便本身使用,在本地虛擬機上搭建了一個3節點的ES集羣,在搭建過程當中,遇到了許多坑,網上的資料也比較分散,因此詳細整理一下搭建過程發出來供參考。搭建過程當中,因爲是兩臺虛擬機,因此有一種很快速的辦法,搭建一臺,而後經過克隆虛擬機而後修改能夠迅速完成,可是爲了更熟悉整個過程,本過程是每臺虛擬機都逐一去操做。

1、軟件及環境準備

  • 服務器環境

CentOS6.9_64位兩臺
es-master:192.168.0.11
es-slave:192.168.0.12
注意:內存容許的狀況下,稍微給大一點內存,不然啓動會失敗,本地測試可使用1.5-2G內存,es-master上準備搭建兩個節點,因此內存最好給到2G以上.html

  • ES軟件

最新版ElasticSearch6.4.0
下載地址:https://artifacts.elastic.co/...前端

  • JDK軟件

jdk-8u161-linux-x64.tar.gz
下載地址:http://download.oracle.com/ot...java

  • 環境規劃

es-master包括兩個節點:elasticesearch-node1,elasticesearch-node3
es-slave包括一個節點:elasticesearch-node2node

  • 修改服務器主機名稱,方便後續操做

(1)服務器192.168.0.11上操做:linux

[root@localhost ~]# hostname es-master
[root@localhost ~]# vim /etc/sysconfig/network
#修改如下內容:
HOSTNAME=es-master
#退出從新登陸
[root@localhost ~]# logout

(2)服務器192.168.0.12上操做:bootstrap

[root@localhost ~]# hostname es-slave
[root@localhost ~]# vim /etc/sysconfig/network
#修改如下內容:
HOSTNAME=es-slave
#退出從新登陸
[root@localhost ~]# logout

(3)爲了後續操做方便,分別關閉es-master和es-slave服務器的防火牆vim

[root@es-master ~]# service iptables stop
[root@es-slave ~]# service iptables stop

注意:生產環境不能直接關防火牆,能夠添加防火牆規則,使得ES的tcp端口對遠程指定主機開放。瀏覽器

2、JDK安裝配置

主機es-master上操做安全

  • 下載,並解壓到指定目錄
[root@es-master ~]# mkdir -pv /home/software
 [root@es-master ~]# cd /home/software/
 [root@es-master software]# wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz
 注意:若是沒有網絡,能夠手動下載,而後上傳便可。
 [root@es-master software]# mkdir -pv /usr/local/java
 [root@es-master software]# tar xf jdk-8u181-linux-x64.tar.gz -C /usr/local/java

主機es-slave上操做同上,略.服務器

  • 配置環境變量,es-master和es-slave上配置過程相同,以下
[root@es-master software]# vim /etc/profile
#在末尾添加以下內容:
JAVA_HOME=/usr/local/java/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin
#使環境變量生效
[root@es-master ~]# source /etc/profile
  • 測試是否安裝完成
[root@es-master ~]# java -version
java version "1.8.0_161"
#輸出版本號,表示配置成功.

3、ElasticSearch安裝及配置

es-master上的操做以下:

  • 下載及解壓ElasticSearch6.4.0
[root@es-master ~]# cd /home/software/
[root@es-master ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
[root@es-master software]# tar xf elasticsearch-6.2.4.tar.gz -C /usr/local/
[root@es-master local]# mv elasticsearch-6.4.0 elasticsearch-node1/
#複製一份做爲第二個es節點
[root@es-master local]# cp -r elasticsearch-node1/ elasticsearch-node3
  • 建立elk用戶,並將elasticsearch-node1和elasticsearch-node3受權給elk
注意:因爲elasticsearch啓動的時候不能直接用root用戶啓動,因此須要建立普通用戶
[root@es-master local]# useradd elk
[root@es-master local]# chown -R elk:elk elasticsearch-node1/ elasticsearch-node3/
  • 分別建立兩個elasticsearch節點的數據目錄和日誌目錄
[root@es-master local]# mkdir -pv /data/{elasticsearch1,elasticsearch3}/{data,logs}
[root@es-master local]# chown -R elk:elk /data/{elasticsearch1,elasticsearch3}
  • 修改操做系統的內核配置文件sysctl.conf
[root@es-master local]# vim /etc/sysctl.conf
#在配置文件最後面添加以下內容
vm.max_map_count=655360

解釋:max_map_count文件包含限制一個進程能夠擁有的VMA(虛擬內存區域)的數量。虛擬內存區域是一個連續的虛擬地址空間區域。
在進程的生命週期中,每當程序嘗試在內存中映射文件,連接到共享內存段,或者分配堆空間的時候,這些區域將被建立。
當進程達到了VMA上線但又只能釋放少許的內存給其餘的內核進程使用時,操做系統會拋出內存不足的錯誤。

#使修改以後的配置文件生效
[root@es-master local]# sysctl -p
  • 修改limits.conf文件
#limits.conf:用來保護系統的資源訪問,和sysctl.conf很像,可是limits.conf是針對於用戶,而sysctl.conf是針對於操做系統.
[root@es-master local]# vim /etc/security/limits.conf
#在文件末尾添加以下內容:
elk soft nofile 65536
elk hard nofile 131072
elk soft nproc 4096
elk hard nproc 4096
  • 修改elasticsearch-node1節點的配置文件jvm.options
[root@es-master local]# cd elasticsearch-node1/config/
[root@es-master config]# vim jvm.options
修改以下兩個選項:
-Xms512m  #elasticsearch啓動時jvm所分配的初始堆內存大小
-Xmx512m  #elasticsearch啓動以後容許jvm分配的最大堆內存大小,生產環境中可能須要調大
注意:若是內存足夠大,能夠不用修改,默認爲1G
  • 修改elasticsearch-node1節點的配置文件elasticsearch.yml
[root@es-master local]# vim elasticsearch-node1/config/elasticsearch.yml
#修改如下項
#表示集羣標識,同一個集羣中的多個節點使用相同的標識
cluster.name: elasticsearch
#節點名稱
node.name: "es-node1"
#數據存儲目錄
path.data: /data/elasticsearch1/data
#日誌目錄
path.logs: /data/elasticsearch1/logs
#節點所綁定的IP地址,而且該節點會被通知到集羣中的其餘節點
network.host: 192.168.0.11
#綁定監聽的網絡接口,監聽傳入的請求,能夠設置爲IP地址或者主機名
network.bind_host: 192.168.0.11
#發佈地址,用於通知集羣中的其餘節點,和其餘節點通信,不設置的話默承認以自動設置。必須是一個存在的IP地址
network.publish_host: 192.168.0.11
#對外提供服務的http端口,默認爲9200
http.port: 9200
#集羣中主節點的初始列表,當主節點啓動時會使用這個列表進行非主節點的監測
discovery.zen.ping.unicast.hosts: ["192.168.0.11","192.168.0.12"]
#下面這個參數控制的是,一個節點須要看到的具備master節點資格的最小數量,而後才能在集羣中作操做。官方推薦值是(N/2)+1;
#其中N是具備master資格的節點的數量(咱們的狀況是3,所以這個參數設置爲2)
#可是:但對於只有2個節點的狀況,設置爲2就有些問題了,一個節點DOWN掉後,確定連不上2臺服務器了,這點須要注意
discovery.zen.minimum_master_nodes: 2
#ES默認開啓了內存地址鎖定,爲了不內存交換提升性能。可是Centos6不支持SecComp功能,啓動會報錯,因此須要將其設置爲false
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
  • 修改elasticsearch-node3節點的配置文件jvm.options
[root@es-master local]# cd elasticsearch-node3/config/
[root@es-master config]# vim jvm.options
修改以下兩個選項:
-Xms512m
-Xmx512m
  • 修改elasticsearch-node3節點的配置文件elasticsearch.yml
[root@es-master local]# vim elasticsearch-node3/config/elasticsearch.yml
#修改如下項
cluster.name: elasticsearch
node.name: "es-node3"
path.data: /data/elasticsearch3/data
path.logs: /data/elasticsearch3/logs
network.host: 192.168.0.11
network.bind_host: 192.168.0.11
network.publish_host: 192.168.0.11
http.port: 9201
discovery.zen.ping.unicast.hosts: ["192.168.0.11","192.168.0.12"]
discovery.zen.minimum_master_nodes: 2
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

至此,es-master上的配置操做完成。


es-slave上的操做以下:

  • 上傳elasticsearch的安裝包,而後解壓重命名,能夠直接從es-master上遠程拉取
[root@es-slave ~]# cd /home/software/
[root@es-slave software]# scp 192.168.0.11:/home/software/elasticsearch-6.4.0.tar.gz ./
[root@es-slave software]# tar xf elasticsearch-6.4.0.tar.gz -C /usr/local/
  • 建立elk用戶,並將elasticsearch-node2受權給elk
[root@es-slave local]# useradd elk
[root@es-slave local]# chown -R elk:elk elasticsearch-node2
  • 建立數據目錄,並將目錄的屬主和屬組改成elk用戶,elk組
[root@es-slave local]# mkdir -pv /data/elasticsearch2/{data,logs}
[root@es-slave local]# chown -R elk:elk /data/elasticsearch2
  • 修改操做系統的內核配置文件sysctl.conf
[root@es-slave local]# vim /etc/sysctl.conf
#在配置文件最後面添加以下內容
vm.max_map_count=655360
[root@es-slave local]# sysctl -p
  • 修改limits.conf文件,能夠直接從es-master的配置中複製過來
[root@es-master local]# vim /etc/security/limits.conf
#在文件末尾添加以下內容:
elk soft nofile 65536
elk hard nofile 131072
elk soft nproc 4096
elk hard nproc 4096
  • 修改elasticsearch-node2節點的配置文件jvm.options
[root@es-slave local]# cd elasticsearch-node2/config/
[root@es-slave config]# vim jvm.options
修改以下兩個選項:
-Xms512m
-Xmx512m
  • 修改elasticsearch-node2節點的配置文件elasticsearch.yml
[root@es-slave local]# vim elasticsearch-node2/config/elasticsearch.yml
#修改如下項
cluster.name: elasticsearch
node.name: "es-node2"
path.data: /data/elasticsearch2/data
path.logs: /data/elasticsearch2/logs
network.host: 192.168.0.12
network.bind_host: 192.168.0.12
network.publish_host: 192.168.0.12
discovery.zen.ping.unicast.hosts: ["192.168.0.11","192.168.0.12"]
discovery.zen.minimum_master_nodes: 2
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

至此es-slave上的elasticsearch節點配置完成。

4、啓動ES集羣

  • 首先切換爲elk用戶,並啓動es-slave服務器上的elasticsearch-node2節點
[root@es-slave local]# su - elk
[elk@es-slave ~]$ cd /usr/local/elasticsearch-node2/bin/
[elk@es-slave bin]$ ./elasticsearch -d
注意:-d參數表示之後臺進程啓動,默認狀況下會在控制檯輸出日誌。
  • 查看是否啓動成功,能夠經過查看進程及端口來肯定是否啓動成功,若是啓動失敗,能夠經過查看日誌來排查緣由
[elk@es-slave bin]$ ps -ef| grep elasticsearch
[elk@es-slave bin]$ lsof -i:9200
注意:日誌文件在elasticsearch.yml配置文件中所指定的目錄下
  • 測試是否能夠訪問
[elk@es-slave ~]$ curl 192.168.0.12:9200
若是返回相似以下結果,表示啓動正常:
{
  "name" : "es-node2",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "gczyFNKrTe2YbEQmlg7-nw",
  "version" : {
    ...
  },
  "tagline" : "You Know, for Search"
}
  • 切換到es-master服務器上,而後切換到elk身份,分別啓動elasticSearch-node1節點和elasticsearch-node3節點
[root@es-master ~]# su - elk
[elk@es-master ~]$ cd /usr/local/elasticsearch-node1/bin/
[elk@es-master bin]$ ./elasticsearch -d
[elk@es-master bin]$ cd /usr/local/elasticsearch-node3/bin/
[elk@es-master bin]$ ./elasticsearch -d
  • 查看進程及端口,肯定是否啓動成功
#查看進程,能夠看到有兩個節點的進程
[elk@es-master bin]$ ps -ef| grep elasticsearch
[elk@es-master bin]$ lsof -i:9200
[elk@es-master bin]$ lsof -i:9300
  • 使用curl測試節點是否能夠正常訪問,方法同上,須要驗證elasticsearch-node1和elasticsearch-node3節點
[elk@es-master ~]$ curl 192.168.0.11:9200
[elk@es-master ~]$ curl 192.168.0.11:9300
  • 驗證完畢以後,ES集羣就啓動完畢。

5、安裝及配置ES前端圖形化操做工具

  • 下載kibana,並上傳到es-master服務器上
下載地址:https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
  • 解壓,重命名
[root@es-master software]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
[root@es-master software]# tar xf kibana-6.4.0-linux-x86_64.tar.gz -C /usr/local
[root@es-master software]# cd /usr/local
[root@es-master local]# mv kibana-6.4.0-linux-x86_64 kibana-6.4.0
  • 修改kibana的配置文件kibana.yml
[root@es-master local]# cd kibana-6.4.0/config
[root@es-master config]# vim kibana.yml
#修改以下內容:
#對外服務監聽端口
server.port: 5601
#綁定能夠訪問5601端口服務的IP地址,0.0.0.0表示任何地址在沒有防火牆限制的狀況下均可以訪問,生產環境別這樣設置,不安全。
server.host: "0.0.0.0"
#默認值爲主機名稱,表示kibana實例綁定的主機,能夠是IP地址或者主機名稱.
server.name: "es-master"
#用來處理ES請求的服務URL
elasticsearch.url: "http://192.168.0.11:9200"
#用來控制證書的認證,可選的值爲full,none,certificate。此處因爲沒有證書,因此設置爲null,不然啓動會提示錯誤.
elasticsearch.ssl.verificationMode: none
  • 啓動kibana
[root@es-master config]# cd /usr/local/kibana-6.4.0/bin
#之後臺進程啓動,kibana默認是控制檯方式啓動,Ctrl+C就會退出
[root@es-master bin]# nohup ./kibana &
#查看日誌是否啓動正常
[root@es-master bin]# tail -f nohup.out
  • 若是啓動正常,在瀏覽器端訪問http://192.168.0.11:5601,便可看到圖形化操做工具

至此,就能夠愉快的開始ES的語法學習之旅了。
ES的語法學習可參考:https://www.elastic.co/guide/...

6、ElasticSearch和kibana的中止

目前es和kibana的bin目錄下未提供中止ES服務和kibana服務的腳本,可使用kill -9 pid來中止服務

  • 中止ES服務
[root@es-master bin]# ps -ef| grep elasticsearch | grep -v grep | awk '{print $2}'
[root@es-master bin]# kill -9 pid[上一步所輸出的pid]
  • 中止Kibana服務
[root@es-master bin]# ps -ef| grep node | grep -v grep | grep -v elasticsearch | awk '{print $2}'
[root@es-master bin]# kill -9 pid[上一步所輸出的pid]

至此,全部內容整理完畢,歡迎評論轉發!

後續文章將更新在我的小站上,歡迎查看。

相關文章
相關標籤/搜索