Elasticsearch單機雙節點集羣部署實戰

1、安裝第一個ElasticSearch(主節點)java

 

一、建立es用戶,啓動es不能使用root用戶node

 

useradd esgit

passwd es12github

 

root用戶進入/home/es目錄下npm

 

2、獲取ElasticSearch安裝包瀏覽器

 

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.1.2.tar.gzbash

 

三、解壓、更名(方便集羣時區別另外一個ES)服務器

 

tar xf elasticsearch-6.1.2.tar.gz微信

mv elasticsearch-6.1.2.tar.gz elasticsearch-node212架構

 

四、修改配置文件

 

vi elasticsearch-node2/config/elasticsearch.yml1

 

修改內容以下:

 

cluster.name: my-application        各節點此名稱必須一致

node.name: node-2                   節點名稱,不能與其餘節點相同              

network.host: ***.***.***.***       本身的服務器IP

http.port: ****                     訪問端口

transport.tcp.port: ****            集羣各節點間的通信端口 

discovery.zen.ping.unicast.hosts: ["主節點IP:通信端口","輔節點IP:通信端口"]   123456

 

文件最後追加如下內容,以便鏈接head顯示健康值(注意每行代碼前面不要有空格)

 

http.cors.enabled: true

http.cors.allow-origin: "*"12

 

五、啓動

 

sh elasticsearch-node2/bin/elasticsearch1

 

[2018-01-24T15:36:41,990][INFO ][o.e.n.Node               ] [KMyyO-3] started

[2018-01-24T15:36:41,997][INFO ][o.e.g.GatewayService     ] [KMyyO-3] recovered [0] indices into cluster_state12

 

啓動成功,瀏覽器中輸入 IP:訪問端口

 

網頁顯示如下內容,說明部署成功

 

{

  "name" : "node-2",

  "cluster_name" : "my-application",

  "cluster_uuid" : "j2aJ7CsRSuSo0G8Bgky2Ww",    

  "version" : {

    "number" : "6.1.2",

    "build_hash" : "5b1fea5",

    "build_date" : "2018-01-10T02:35:59.208Z",

    "build_snapshot" : false,

    "lucene_version" : "7.1.0",

    "minimum_wire_compatibility_version" : "5.6.0",

    "minimum_index_compatibility_version" : "5.0.0"

  },

  "tagline" : "You Know, for Search"

}123456789101112131415

 

六、報錯及其處理 

【類型一】

 

Caused by: java.lang.RuntimeException: can not run elasticsearch as root1

 

該問題是由於運行es不能使用root用戶,所以要切換es用戶再次啓動

 

chown -R es:es elasticsearch-node2/

su - es

sh elasticsearch-node2/bin/elasticsearch123

 

【類型二】

 

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]1

 

解決方法,換回root用戶,修改配置文件

 

vi /etc/security/limits.conf

#在最後面追加下面內容

es hard nofile 65536

es soft nofile 655361234

 

【類型三】

 

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]1

 

解決方法,換回root用戶,修改配置文件

 

vi /etc/sysctl.conf 

#在最後面追加下面內容

vm.max_map_count=655360

#執行命令:

sysctl -p12345

 

2、安裝第二個ElasticSearch(輔節點) 

安裝方法與第一個一致,注意修改配置文件 

root用戶進入/home/es目錄下

 

一、解壓、更名

 

tar xf elasticsearch-6.1.2.tar.gz

mv elasticsearch-6.1.2.tar.gz elasticsearch-node312

 

二、修改配置文件

 

vi elasticsearch-node3/config/elasticsearch.yml1

 

修改內容以下:

 

cluster.name: my-application        各節點此名稱必須一致

node.name: node-3                   節點名稱,不能與其餘節點相同

network.host: ***.***.***.***       本身的服務器IP

http.port: ****                     訪問端口(注意不要與第一個端口重複)                              

transport.tcp.port: ****            集羣各節點間的通信端口(注意不要與第一個端口重複)

discovery.zen.ping.unicast.hosts: ["主節點IP:通信端口","輔節點IP:通信端口"]123456

 

文件最後一樣追加下面代碼

 

http.cors.enabled: true

http.cors.allow-origin: "*"12

 

3.啓動

 

sh elasticsearch-node3/bin/elasticsearch1

 

瀏覽器,瀏覽器中輸入   IP:訪問端口 

網頁顯示如下內容,說明第二個部署成功

 

{

  "name" : "node-3",

  "cluster_name" : "my-application",

  "cluster_uuid" : "j2aJ7CsRSuSo0G8Bgky2Ww",

  "version" : {

    "number" : "6.1.2",

    "build_hash" : "5b1fea5",

    "build_date" : "2018-01-10T02:35:59.208Z",

    "build_snapshot" : false,

    "lucene_version" : "7.1.0",

    "minimum_wire_compatibility_version" : "5.6.0",

    "minimum_index_compatibility_version" : "5.0.0"

  },

  "tagline" : "You Know, for Search"

}123456789101112131415

 

3、安裝Elasticsearch-head插件 

一、安裝head插件以前須要安裝node.js

 

curl -sL https://rpm.nodesource.com/setup_8.x | bash -

yum install -y nodejs12

 

安裝完成後執行命令查看node與npm版本

 

[root@host]# node -v

v8.12.0

[root@host]# npm -v

6.4.1

12345

 

二、從git獲取head插件

 

wget https://github.com/mobz/elasticsearch-head/archive/master.zip1

 

三、解壓安裝包(能夠更名,方便操做)

 

unzip master.zip

mv elasticsearch-head-master/ head12

 

四、修改配置文件

 

vi head/Gruntfile.js1

 

更改head端口號

 

connect: {

          server: {

                   options: {

                              port: ****,    改成head訪問端口

                              base: '.',

                              keepalive: true

                             }

                    }

          }

12345678910

 

vi head/_site/app.js 1

 

更改head連接地址

 

 

 

init: function(parent) {

                        this._super();

                        this.prefs = services.Preferences.instance();

                        this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://主節點IP:訪問端口";

12345

 

五、啓動head

 

nohup npm run start > ../head.log 2>&1 &1

 

六、瀏覽器登陸head 

URL輸入服務器IP:head訪問端口 
連接地址輸如主節點的訪問地址 
七、安裝head常見錯誤 
【類型一】啓動成功,可是網頁不能訪問 
解決方法 
關閉服務器防火牆

service iptables stop

 

【類型二】集羣健康值未鏈接 
在elasticsearch.yml裏追加下列代碼(注意代碼前面不要有空格)

http.cors.enabled: truehttp.cors.allow-origin: "*"

 

 

問:爲何es節點用node二、node3? 
答:由於以前用node1搭建了一套未集羣的ES,因此後面集羣就用2和3了。

 

---------------------------------------------

推薦閱讀:

微信支付開發中幾個值得注意的地方

解析:微服務的原則

老王講架構:負載均衡

支付寶系統架構內部剖析

SaaS技術棧的走勢

大數據Spark與Storm技術選型

相關文章
相關標籤/搜索