Elastic Search搭建集羣環境

搭建ES集羣環境

Elastic Search搭建集羣環境的方式有兩種

  • 多機器單實例
  • 單機器多實例

首先,我們要了解怎麼安裝單機版ES實例,安裝教程參見博文----《Elastic Search入門》

多機器單實例

安裝前準備

  1. 首先,我們準備三臺機器
    1. 192.168.94.121(node1)
    2. 192.168.94.122(node2)
    3. 192.168.94.123(node3)
  2. 然後將軟件安裝包下載下來,上傳到服務器然後解壓到**/apps/elasticsearch-7.6.0目錄下,分別修改/apps/elasticsearch-7.6.0/config目錄下的elasticsearch.yml**文件,如下所示

192.168.94.121 elasticsearch.yml

cluster.name: monk
node.name: node-1
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
#參數設置一系列符合主節點條件的節點的主機名或 IP 地址來引導啓動集羣。
cluster.initial_master_nodes: ["node-1"]
# 設置新節點被啓動時能夠發現的主節點列表(主要用於不同網段機器連接)
discovery.zen.ping.unicast.hosts: ["192.168.94.121","192.168.94.122","192.168.94.123"]
# 該參數就是爲了防止”腦裂”的產生。定義的是爲了形成一個集羣,有主節點資格並互相連接的節點的最小數目。
discovery.zen.minimum_master_nodes: 2
# 解決跨域問題配置
http.cors.enabled: true
http.cors.allow-origin: "*"

192.168.94.122 elasticsearch.yml

cluster.name: monk
node.name: node-2
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
#參數設置一系列符合主節點條件的節點的主機名或 IP 地址來引導啓動集羣。
cluster.initial_master_nodes: ["node-1"]
# 設置新節點被啓動時能夠發現的主節點列表(主要用於不同網段機器連接)
discovery.zen.ping.unicast.hosts: ["192.168.94.121","192.168.94.122","192.168.94.123"]
# 該參數就是爲了防止”腦裂”的產生。定義的是爲了形成一個集羣,有主節點資格並互相連接的節點的最小數目。
discovery.zen.minimum_master_nodes: 2
# 解決跨域問題配置
http.cors.enabled: true
http.cors.allow-origin: "*"

192.168.94.123 elasticsearch.yml

cluster.name: monk
node.name: node-3
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
#參數設置一系列符合主節點條件的節點的主機名或 IP 地址來引導啓動集羣。
cluster.initial_master_nodes: ["node-1"]
# 設置新節點被啓動時能夠發現的主節點列表(主要用於不同網段機器連接)
discovery.zen.ping.unicast.hosts: ["192.168.94.121","192.168.94.122","192.168.94.123"]
# 該參數就是爲了防止”腦裂”的產生。定義的是爲了形成一個集羣,有主節點資格並互相連接的節點的最小數目。
discovery.zen.minimum_master_nodes: 2
# 解決跨域問題配置
http.cors.enabled: true
http.cors.allow-origin: "*"

集羣效果

然後分別啓動每臺服務器的Elastic Search即可,最終效果如圖所示:集羣效果1

單機器多實例

所謂單機器多實例的意思就是在一臺服務器上運行多個ES[^1]實例,來達到“多機器”的效果。而單機器多實例又可以通過兩種方式來實現:

  • 通過複製多個ES的實例來實現
  • 通過啓動命令的不同來實現啓動多個實例

PS:由於是在一臺機器上啓動三個實例,而每個ES啓動的默認JVM內存分配的是1G,如果虛擬機內存分配的足夠大,就可以忽略這點。如果內存不足導致啓動失敗,可以參見這裏修改下ES啓動默認分配的內存

修改JVM實例

vim /apps/elasticsearch-7.6.0/config/jvm.options
將默認配置的1g修改爲你虛擬機可以啓動的內存大小,如圖所示:修改JVM配置

安裝好ES後,多實例的原理就在於ES可以通過指定數據目錄、日誌以及節點名稱等參數來靈活的啓動。下面我們就通過這樣的方式來安裝一個單機器多實例的ES集羣環境。

通過複製多個ES的實例來實現

幾乎和多機器單實例差不多,將ES的安裝文件解壓後,連同原件一共複製三份出來,分別放置/apps目下,如圖所示:目錄結構,再分別修改各個ES實例下config目錄下的elasticsearch.yml文件

node-1 elasticsearch.yml

cluster.name: monk
node.name: node-1
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9201
transport.port: 9301
cluster.initial_master_nodes: ["node-1"]
discovery.seed_hosts: ["192.168.94.123:9301","192.168.94.123:9302","192.168.94.123:9303"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"

node-2 elasticsearch.yml

cluster.name: monk
node.name: node-2
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9202
transport.port: 9302
cluster.initial_master_nodes: ["node-1"]
discovery.seed_hosts: ["192.168.94.123:9301","192.168.94.123:9302","192.168.94.123:9303"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"

node-3 elasticsearch.yml

cluster.name: monk
node.name: node-3
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9203
transport.port: 9303
cluster.initial_master_nodes: ["node-1"]
discovery.seed_hosts: ["192.168.94.123:9301","192.168.94.123:9302","192.168.94.123:9303"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"

集羣效果

然後分別啓動每個實例下的的Elastic Search即可,最終效果如圖所示:集羣效果2

通過啓動命令的不同來實現啓動多個實例

這種情況下,我們就需要弄清楚一個ES實例下的文件夾分別是幹嘛的,主要拿來存放各自實例的數據文件有兩個,data目錄就是主要存放數據的地方,logs目錄則是存放運行日誌的地方。然後加上ES提供可以通過在啓動指令上給參數賦值來達到重寫配置文件中值的方式啓動,那我們可以將公共的參數配置放在config目錄下的elasticsearch.yml,然後再通過給指令啓動的方式給每個實例設置各自獨有的屬性。

創建各自實例獨立的數據文件存放地址

mkdir -p /apps/cluster_elasticsearch/node1/data /apps/cluster_elasticsearch/node1/logs
mkdir -p /apps/cluster_elasticsearch/node2/data /apps/cluster_elasticsearch/node2/logs
mkdir -p /apps/cluster_elasticsearch/node3/data /apps/cluster_elasticsearch/node3/logs

修改公共的配置文件

修改公共實例的配置文件 /apps/elasticsearch-7.6.0/config/elasticsearch.yml,如下所示:

cluster.name: monk
network.host: 0.0.0.0
#參數設置一系列符合主節點條件的節點的主機名或 IP 地址來引導啓動集羣。
cluster.initial_master_nodes: ["node-1"]
# 設置新節點被啓動時能夠發現的主節點列表(主要用於不同網段機器連接)
discovery.seed_hosts: ["192.168.94.123:9300", "192.168.94.123:9301", "192.168.94.123:9302"]
# 該參數就是爲了防止”腦裂”的產生。定義的是爲了形成一個集羣,有主節點資格並互相連接的節點的最小數目。
discovery.zen.minimum_master_nodes: 2
# 解決跨域問題配置
http.cors.enabled: true
http.cors.allow-origin: "*"

通過不同的啓動命令來啓動每個實例節點

進入公共實例的bin目錄下,執行以下命令
cd /apps/elasticsearch-7.6.0/bin

./elasticsearch  -d -E node.name=node-1 -E http.port=9200 -E transport.port=9300 -E path.data=/apps/cluster_elasticsearch/node1/data -E path.logs=/apps/cluster_elasticsearch/node1/logs
./elasticsearch  -d -E node.name=node-2 -E http.port=9201 -E transport.port=9301 -E path.data=/apps/cluster_elasticsearch/node2/data -E path.logs=/apps/cluster_elasticsearch/node2/logs
./elasticsearch  -d -E node.name=node-3 -E http.port=9202 -E transport.port=9302 -E path.data=/apps/cluster_elasticsearch/node3/data -E path.logs=/apps/cluster_elasticsearch/node3/logs

集羣效果

啓動成功後,效果如圖所示:集羣效果3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章