elasticsearch 集群搭建及啟動常見錯誤


1.系統環境

三台服務器(最好是單數台,跟master選舉方式有關),確保機器互相ping的通,且都需要裝了jdk 8環境,機器IP和 elasticsearch 的節點名稱如下:

cluster name

node name

IP Addr

說明

local_ES

node-01

192.168.2.10

  

local_ES

node-02

192.168.2.11

  

local_ES

node-03

192.168.2.12

  

2.安裝部署

官網下載linux下安裝包,https://www.elastic.co/downloads/past-releases,我們使用的版本是6.7.2,使用 wget 命令下載文件。

$> wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.7.2.tar.gz

解壓到 opt 目錄,命令如下:

$> tar -xvf elasticsearch-6.7.2.tar.gz -C /opt

由於安全原因,不能用 root 用戶運行,所以需要添加 es 組和 es 用戶,並賦予其文件夾權限,命令如下:

$> groupadd es

$> useradd es -g es -p es

$> chown es:es /opt/elasticsearch-6.7.2

$> chown es /opt/elasticsearch-6.7.2 -R

設置最大線程數量,如果不進行設置,會出現如下異常:

max number of threads [3818] for user [es] is too low, increase to at least [4096]

修改文件

$> vi /etc/security/limits.conf

增加文件內容如下:

*  soft nproc 4096

*  hard nproc 4096

設置 elasticsearch 進程打開文件最大數量,如果不進行設置,會出現如下異常:

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

修改文件:

$> vi /etc/security/limits.conf

增加文件內容如下:

* soft nofile 65536

*  hard nofile 65536

設置最大虛擬內存,如果不進行設置,會出現如下異常:

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

修改文件:

$> vi /etc/sysctl.conf

增加文件內容如下:

vm.max_map_count=262144

然后執行 sysctl -p 來生效修改

3.安裝插件

安裝中文分詞插件,插件的 Github 地址為 https://github.com/medcl/elasticsearch-analysis-ik/ ,使用 bin 目錄下的 elasticsearch-plugin 命令來進行安裝,命令如下:

$> ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.7.2/elasticsearch-analysis-ik-6.7.2.zip

   

4.集群配置

通過 cluster.name 屬性配置集群的名字,用於唯一標識一個集群,不同的集群,其 cluster.name 不同,集群名字相同的所有節點自動組成一個集群。如果不配置改屬性,默認值是:elasticsearch。當啟動一個結點時,該結點會自動尋找相同集群名字的主結點;如果找到主結點,該結點加入集群中;如果未找到主結點,該結點成為主結點。集群相關配置如下:

屬性

缺省值

描述

cluster.name

federated_cluster

Elasticsearch 集群名稱。使用集群可將單獨 Process Federation Server 綁定到單個分布式系統中。參與集群的所有服務器都必須具有相同的集群名稱。

node.name

node1

Elasticsearch 節點名。集群中的每個 Process Federation Server 都必須具有唯一節點名。

transport.tcp.port

9300

用於某個集群中 Elasticsearch 節點之間的通信的端口。

discovery.zen.ping.unicasts.hosts

localhost

提供其他 Elasticsearch 服務節點的單點廣播發現功能。配置集群中基於主機 TCP 端口的其他 Elasticsearch 服務的逗號分隔列表。

例如:

discovery.zen.ping.unicast.hosts: ["192.168.2.10", "192.168.2.11","192.168.2.12"]

   

有關更多信息,請參閱 Elasticsearch 文檔

   

5.配置屬性

   

屬性

缺省值

描述

cluster.name

federated_cluster

Elasticsearch 集群名稱。使用集群可將單獨 Process Federation Server 綁定到單個分布式系統中。參與集群的所有服務器都必須具有相同的集群名稱。

node.name

node1

Elasticsearch 節點名。集群中的每個 Process Federation Server 都必須具有唯一節點名。

node.master

true

指示某個節點是否符合成為主節點的條件。主節點管理 Elasticsearch 集群的狀態。在運行時,Elasticsearch 服務會自動提名某一個合格的集群成員成為主節點。

僅當您想要對專用主節點和數據節點采用高級配置時,才將該值設置為 false。此類型的配置並不常用。

node.data

true

指示節點是否為數據節點。數據節點包含並管理索引的一部分。

僅當您想要對專用主節點和數據節點采用高級配置時,才將該值設置為 false。此類型的配置並不常用。

network.host

127.0.0.1

將綁定地址設置為特定的IP

http.port

9200

如果啟用了 HTTP 端口,那么此屬性指定由 Elasticsearch 服務使用的端口。

http.cors.enabled

true

如果啟用了 HTTP 端口,那么此屬性會指定是否允許跨源 REST 請求。

http.cors.allowed.origin

localhost

如果 http.cors.enabled 的值為 true,那么該屬性會指定允許 REST 請求來自何處。

transport.tcp.port

9300

用於某個集群中 Elasticsearch 節點之間的通信的端口。

discovery.zen.minimum_master_nodes

1

指示某個集群定額所需的 Process Federation Server 的數量。

缺省值為 1 表示單服務器環境。對於生產環境,請將該值設置為組成定額所需的 Process Federation Server 的數量。例如,如果在集群中總計有三個 Process Federation Server,請將該值設置為"2",如果在集群中總計有五個 Process Federation Server,請將該值設置為"3"。

有關更多信息,請參閱 Elasticsearch 文檔

discovery.zen.ping.multicast.enabled

false

通過發送節點所接收和響應的一個或多個多點廣播請求來提供對其他 Elasticsearch 服務節點的多點廣播 ping 發現功能。有關更多信息,請參閱 Elasticsearch 文檔

discovery.zen.ping.unicasts.hosts

localhost

提供其他 Elasticsearch 服務節點的單點廣播發現功能。配置集群中基於主機 TCP 端口的其他 Elasticsearch 服務的逗號分隔列表。

例如:

discovery.zen.ping.unicast.hosts="localhost:9300,localhost:9301,localhost:9302

   

有關更多信息,請參閱 Elasticsearch 文檔

discovery.zen.ping.timeout

3s

Elastic 搜索節點等待加入 Elasticsearch 集群的時間。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM