Elasticseach集羣搭建

目錄

Elasticseach集羣簡介

集羣的相關概念

集羣cluster

節點node

分片和複製

Elasticseach集羣的搭建

修改每臺服務器配置

node1節點

node2節點

node3節點

添加索引和映射

總結


 

Elasticseach集羣簡介

Elasticseach集羣是一個P2P類型(使用gossip協議)的分佈式系統,除了集羣狀態管理以外,其他所有的請求都可以發送到集羣內任意一臺節點上,這個節點可以找到需要轉發給哪些節點,並且直接跟這些節點通信。所以,從網絡架構及服務配置上來說,構建集羣所需要的配置及其簡單。

在Elasticseach2.0之前,無阻礙的網絡下,所有配置了相同cluster.name的節點都自動歸屬到一個集羣中。自2.0版本之後,基於安全的考慮避免開發環境過於隨便造成的麻煩,從2.0版本開始,默認的自動發現方式改爲了單播(unicast)方式。配置裏提供幾臺節點的地址,ES將其視作gossip router角色,藉以完成集羣的發現,由於這只是ES內一個很小的功能,所以goosip router角色並不需要單獨配置,每個ES節點都可以擔任。所以,採用單播方式的集羣,各節點配置相同的幾個節點列表作爲router即可。

集羣中節點數量沒有限制,大於等於2個節點就可以看做是集羣了。一般出於高性能及高可用方面來考慮集羣中節點數量都是3個以上。

集羣的相關概念

集羣cluster

一個集羣是由一個或多個節點組織在一起,他們共同持有整個的數據,並一起提供索引和搜索服務。一個集羣由一個唯一的名字表標識,默認是Elasticseach。這個名字是很重要的,因爲一個節點只能通過指定某個集羣的名字倆加入這個集羣。

節點node

一個節點是集羣中的一個服務,作爲集羣的一部分,它存儲數據,參與集羣的索引和搜索功能。和集羣類似,一個節點也是由一個名字來標識的。這個名字對於管理工作來說挺重要的,因爲在這個管理過程中,你會去確定網絡中的哪些服務對應於Elasticseach集羣中的哪些節點。

一個節點可以通過配置集羣名稱的方式來加入一個指定的集羣。默認情況下,每個節點都會被安排加入到一個叫做Elasticseach的集羣中,這就意味着,如果你在網絡中啓動了若干個節點,並假定它們能夠互相發現彼此,它們將會自動地形成並加入到一個叫做Elasticseach的集羣中。在一個集羣裏,只要你想,可以擁有任意多個節點。

分片和複製

高性能,高可用

爲了解決索引佔用空間過大(1TB以上)這個問題,Elasticsearch提供了將索引劃分成多份的能力,這些份就叫做分片。當你創建一個索引的時候,你可以指定你想要的分片的數量

爲了提高分片高可用,Elasticsearch允許創建分片的一份或多份拷貝,這些拷貝叫做複製分片,或者直接叫複製。

默認情況下,Elasticsearch中的每個索引被分片5個主分片和1個複製,這意味着,如果你的集羣中至少有兩個節點,你的索引將會有5個主分片和另外5個複製分片(1個完全拷貝),這樣的話每個索引總共就有10個分片

Elasticseach集羣的搭建

需要準備三臺Elasticseach服務器,因爲設備限制,我們都在本地創建。

修改每臺服務器配置

修改Elasticsearch-cluster\node*\config\Elasticsearch.yml配置文件

node1節點

#節點1的配置信息:
#集羣名稱,保證唯一
cluster.name: my-Elasticsearch
#節點名稱,必須不一樣
node.name: node-1
#必須爲本機的ip地址
network.host: 127.0.0.1
#服務端口號,在同一機器下必須不一樣
http.port: 9201
#集羣間通信端口號,在同一機器下必須不一樣
transport.tcp.port: 9301
#設置集羣自動發現機器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

node2節點

#節點2的配置信息:
#集羣名稱,保證唯一
cluster.name: my-Elasticsearch
#節點名稱,必須不一樣
node.name: node-2
#必須爲本機的ip地址
network.host: 127.0.0.1
#服務端口號,在同一機器下必須不一樣
http.port: 9202
#集羣間通信端口號,在同一機器下必須不一樣
transport.tcp.port: 9302
#設置集羣自動發現機器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

node3節點

#節點3的配置信息:
#集羣名稱,保證唯一
cluster.name: my-Elasticsearch
#節點名稱,必須不一樣
node.name: node-3
#必須爲本機的ip地址
network.host: 127.0.0.1
#服務端口號,在同一機器下必須不一樣
http.port: 9203
#集羣間通信端口號,在同一機器下必須不一樣
transport.tcp.port: 9303
#設置集羣自動發現機器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

 

啓動三個Elasticseach服務,並開始配置索引和映射,在任一臺服務上添加都可以,其他幾臺會自動檢測到

添加索引和映射

請求方式:PUT        
請求地址:http://localhost:9201/blog1

請求體

{
    "mappings": {
        "article": {
            "properties": {
                "id": {
                    "type": "long",
                    "store": true,
                    "index":"not_analyzed"
                },
                "title": {
                    "type": "text",
                    "store": true,
                    "index":"analyzed",
                    "analyzer":"standard"
                },
                "content": {
                    "type": "text",
                    "store": true,
                    "index":"analyzed",
                    "analyzer":"standard"
                }
            }
        }
    }
}

添加文檔

請求地址:POST    
請求地址:http://localhost:9201/blog1/article/1

請求體

{
    "id":1,
    "title":"Elasticsearch是一個基於Lucene的搜索服務器",
    "content":"它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並作爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。"
}

 

使用Elasticseach查看集羣情況

 當任一臺服務壞的後,其他兩臺仍能維持服務不斷。

至此,集羣搭建完成。

總結

Elasticseach的集羣搭建還算容易,但是作用卻很明顯。

能力尚淺,有待進步,如有不足,不吝賜教!

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