天天看點

(第一彈)Elasticsearch-----ElasticSearch叢集的安裝7.X

    本文以及後面的系列均已ElasticSearch7.X的版本講解,歡迎支援!

    環境說明: 

            centos7   、  elasticsearch7.2.0 、 同一個機子安裝3個節點 、 7.x版本自帶JDK

一、下載下傳并解壓

         下載下傳位址:https://www.elastic.co/cn/downloads/elasticsearch

二、配置

    vim config/elasticsearch.yml

# 叢集名稱
cluster.name: geektime
# 是否鎖住記憶體
bootstrap.memory_lock: false
# 連接配接位址
network.host: 192.168.2.101
# 候選主節點清單
discovery.seed_hosts: ["192.168.2.101:9301","192.168.2.101:9302","192.168.2.101:9303"]
# 初始化叢集主節點清單
cluster.initial_master_nodes: ["node1","node2","node3"]
# 開啟跨域通路支援,預設為false
http.cors.enabled: true
# # 跨域通路允許的域名位址,(允許所有域名)以上使用正則
http.cors.allow-origin: "*"
           

   jvm配置

# 預設都是1g
-Xms2g
-Xmx2g
           

三、啟動叢集

# 需要用非root使用者啟動

#建立資料目錄和日志目錄
cd data; mkdir data1 data2 data3
cd logs; mkdir logs1 logs2 logs3

# 啟動(同一台機子)
bin/elasticsearch -E node.name=node1 -E cluster.name=geektime -E path.data=data/data1 -E path.logs=logs/logs1 -E http.port=9201 -E transport.tcp.port=9301 -E node.master=true -E node.data=true -d
bin/elasticsearch -E node.name=node2 -E cluster.name=geektime -E path.data=data/data2 -E path.logs=logs/logs2 -E http.port=9202 -E transport.tcp.port=9302 -E node.master=true -E node.data=false -d
bin/elasticsearch -E node.name=node3 -E cluster.name=geektime -E path.data=data/data3 -E path.logs=logs/logs3 -E http.port=9203 -E transport.tcp.port=9303 -E node.master=true -E node.data=false -d
           

四、通路

    http://192.168.2.101:9201/_cat/nodes?v

(第一彈)Elasticsearch-----ElasticSearch叢集的安裝7.X

    http://192.168.2.101:9201/_cluster/health?pretty

(第一彈)Elasticsearch-----ElasticSearch叢集的安裝7.X

配置詳解:

      1.network.host

              network.host 兼有publish_host和bind_host兩者的功能。

              network.publish_host:是elasticsearch與其他叢集機器通信的位址

              network.bind_host:是設定控制Elasticsearch偵聽的網絡接口的位址。

注意:network.host設定為0.0.0.0 , 即将綁定到所有網絡接口, 内外網都可以通路
     network.host設定為内網ip, 即隻能内網通路
     network.host設定為外網ip, 即隻能外網通路 
     network.host設定為内網127.0.0.1, 即隻能本機通路(叢集通信也隻能本機)         
           
publish_host和bind_host應用場景:
   場景:
      我在資料中心有一個本地網絡,我運作由不同節點組成的elasticsearch叢集。每個機器都有兩個IP位址,一個用于從外部計算機到達,另一個用于本地連接配接到同一網絡中的其他計算機。
   解釋:
      内部ip(eth1)用于讓不同的elasticsearch節點互相通信,發現等
      外部ip位址(eth0)是​​我的web應用程式(在另一個網絡中)送出請求的位址
      這樣,我的Web應用程式位于另一個網絡中,可以從bind_host位址通路ES群集,而elasticsearch使用publish_host與叢集其他節點通信,相當于内外網都可以正常通路了。
   注意(踩坑):
      如果采用雲主機,因雲主機并非真實的兩張實體網卡綁定的IP,當配置成内網IP時,外網也可以通路,因為通路外網IP,會自動跳轉到内網IP,固其實也是通路内網IP
           

       2.discovery.seed_hosts

      elasticsearch 7.x新名稱: discovery.seed_hosts

      elasticsearch 5.x 6.x  :      discovery.zen.ping.unicast.hosts

      二者含義作用一模一樣,隻是名字改變

      作用: 候選主節點清單 

      注意:

          1、在叢集啟動前應該配置好,配置為主節點的機子,并非資料節點/協調節點。

                若隻啟動了一個節點(即是主節點也是資料節點),但是該清單配置了3個節點,會報錯,無法選主。

          2、設定為主節點的節點(即node.master=true)才有機會成為主節點,才能配置在該清單中

          3、因選舉原因,主節點應配置為奇數個,才能自動選主

       3.cluster.initial_master_nodes

       elasticsearch 7.x新名稱: cluster.initial_master_nodes

      elasticsearch 5.x 6.x  :       cluster.min_master_count

      作用:

         當第一次啟動全新的Elasticsearch叢集時,會出現一個叢集引導步驟,該步驟确定在第一次選舉中計票的主要合格節點集。此配置的注意點跟discovery.seed_hosts一緻。

       4.允許跨域支援

      # 開啟跨域通路支援,預設為false

      http.cors.enabled: true

      # # 跨域通路允許的域名位址,(允許所有域名)以上使用正則

      http.cors.allow-origin: "*"

       5. -E 參數

    在叢集啟動時,加 -E 參數,會覆寫 elasticsearch.yml中的配置。在同一機子啟動多節點時友善。

      6. 節點類型檢視

(第一彈)Elasticsearch-----ElasticSearch叢集的安裝7.X

       node.role :   m代表候選主節點 , d代表資料節點 , i代表協調節點

       master:    帶 * 部分為真正的主節點

繼續閱讀