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 集群的時間。 |