Elasticsearch集群部署

来源:http://www.cnblogs.com/aubin/archive/2017/12/09/8012840.html
-Advertisement-
Play Games

Elastic 的底層是開源庫 Lucene。但是,你沒法直接用 Lucene,必須自己寫代碼去調用它的介面。Elastic 是 Lucene 的封裝,提供了 REST API 的操作介面,開箱即用。Elastic 的底層是開源庫 。但是,你沒法直接用 Lucene,必須自己寫代碼去調用它的介面。E ...


Elastic 的底層是開源庫 Lucene。但是,你沒法直接用 Lucene,必須自己寫代碼去調用它的介面。Elastic 是 Lucene 的封裝,提供了 REST API 的操作介面,開箱即用。Elastic 的底層是開源庫 。但是,你沒法直接用 Lucene,必須自己寫代碼去調用它的介面。Elastic 是 Lucene 的封裝,提供了 REST API 的操作介面,開箱即用。

一、ES中的基本概念

cluster

代表一個集群,集群中有多個節點,其中有一個為主節點,這個主節點是可以通過選舉產生的,主從節點是對於集群內部來說的。es的一個概念就是去中心化,字面上理解就是無中心節點,這是對於集群外部來說的,因為從外部來看es集群,在邏輯上是個整體,你與任何一個節點的通信和與整個es集群通信是等價的。

shards

代表索引分片,es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分佈到不同的節點上。構成分散式搜索。分片的數量只能在索引創建前指定,並且索引創建後不能更改。

replicas

代表索引副本,es可以設置多個索引的副本,副本的作用一是提高系統的容錯性,當某個節點某個分片損壞或丟失時可以從副本中恢復。二是提高es的查詢效率,es會自動對搜索請求進行負載均衡。

recovery

代表數據恢復或叫數據重新分佈,es在有節點加入或退出時會根據機器的負載對索引分片進行重新分配,掛掉的節點重新啟動時也會進行數據恢復。

river

代表es的一個數據源,也是其它存儲方式(如:資料庫)同步數據到es的一個方法。它是以插件方式存在的一個es服務,通過讀取river中的數據並把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。

gateway

代表es索引快照的存儲方式,es預設是先把索引存放到記憶體中,當記憶體滿了時再持久化到本地硬碟。gateway對索引快照進行存儲,當這個es集群關閉再重新啟動時就會從gateway中讀取索引備份數據。es支持多種類型的gateway,有本地文件系統(預設),分散式文件系統,Hadoop的HDFS和amazon的s3雲存儲服務。

discovery.zen

代表es的自動發現節點機制,es是一個基於p2p的系統,它先通過廣播尋找存在的節點,再通過多播協議來進行節點之間的通信,同時也支持點對點的交互。

Transport

代表es內部節點或集群與客戶端的交互方式,預設內部是使用tcp協議進行交互,同時它支持http協議(json格式)、thrift、servlet、memcached、zeroMQ等的傳輸協議(通過插件方式集成)。


二、部署環境

採用三台CentOS7.3部署Elasticsearch集群,部署Elasticsearch集群就不得不提索引分片,以下是索引分片的簡單介紹。

系統 節點名 IP
CentOS7.3 els1 172.18.68.11
CentOS7.3 els2 172.18.68.12
CentOS7.3 els3 172.18.68.13

ES集群中索引可能由多個分片構成,並且每個分片可以擁有多個副本。通過將一個單獨的索引分為多個分片,我們可以處理不能在一個單一的伺服器上面運行的大型索引,簡單的說就是索引的大小過大,導致效率問題。不能運行的原因可能是記憶體也可能是存儲。由於每個分片可以有多個副本,通過將副本分配到多個伺服器,可以提高查詢的負載能力。

三、部署Elasticsearch集群

1.安裝JDK

Elasticsearch是基於Java開發是一個Java程式,運行在Jvm中,所以第一步要安裝JDK

yum install -y java-1.8.0-openjdk-devel

2.下載elasticsearch

https://artifacts.elastic.co/downloads/elasticsearch/ 是ELasticsearch的官方站點,如果需要下載最新的版本,進入官網下載即可。可以下載到本地電腦然後再導入CentOS中,也可以直接在CentOS中下載。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.1.rpm

3.配置目錄

安裝完畢後會生成很多文件,包括配置文件日誌文件等等,下麵幾個是最主要的配置文件路徑

/etc/elasticsearch/elasticsearch.yml                            # els的配置文件
/etc/elasticsearch/jvm.options                                  # JVM相關的配置,記憶體大小等等
/etc/elasticsearch/log4j2.properties                            # 日誌系統定義
/var/lib/elasticsearch                                          # 數據的預設存放位置

4.創建用於存放數據與日誌的目錄

數據文件會隨著系統的運行飛速增長,所以預設的日誌文件與數據文件的路徑不能滿足我們的需求,那麼手動創建日誌與數據文件路徑,可以使用NFS、可以使用Raid等等方便以後的管理與擴展

mkdir /els/{log,date}
chown -R elasticsearch.elasticsearch /els/*

5.集群配置

集群配置中最重要的兩項是node.namenetwork.host,每個節點都必須不通。其中node.name是節點名稱主要是在Elasticsearch自己的日誌加以區分每一個節點信息。
discovery.zen.ping.unicast.hosts是集群中的節點信息,可以使用IP地址、可以使用主機名(必須可以解析)。

vim /etc/elasticsearch
cluster.name: aubin-cluster                                 # 集群名稱
node.name: els1                                             # 節點名稱,僅僅是描述名稱,用於在日誌中區分

path.data: /var/lib/elasticsearch                           # 數據的預設存放路徑
path.logs: /var/log/elasticsearch                           # 日誌的預設存放路徑

network.host: 192.168.0.1                                   # 當前節點的IP地址
http.port: 9200                                             # 對外提供服務的埠,9300為集群服務的埠

discovery.zen.ping.unicast.hosts: ["172.18.68.11", "172.18.68.12","172.18.68.13"]       
# 集群個節點IP地址,也可以使用els、els.shuaiguoxia.com等名稱,需要各節點能夠解析

discovery.zen.minimum_master_nodes: 2                       # 為了避免腦裂,集群節點數最少為 半數+1

6.JVM配置

由於Elasticsearch是Java開發的,所以可以通過/etc/elasticsearch/jvm.options配置文件來設定JVM的相關設定。如果沒有特殊需求按預設即可。
不過其中還是有兩項最重要的-Xmx1g-Xms1gJVM的最大最小記憶體。如果太小會導致Elasticsearch剛剛啟動就立刻停止。太大會拖慢系統本身

vim /etc/elasticsearch/jvm.options
-Xms1g                                                  # JVM最大、最小使用記憶體
-Xmx1g

7.啟動Elasticsearch

由於啟動Elasticsearch會自動啟動daemon-reload所以最後一項可以省略。

systemctl enable elasticsearch.service
systemctl start elasticsearch
systemctl daemon-reload                                 # 可以省略

8.測試

Elasticsearch直接聽過了http介面,所以直接使用curl命令就可以查看到一些集群相關的信息。

可以使用curl命令來獲取集群的相關的信息,

  • _cat代表查看信息
  • nodes為查看節點信息,預設會顯示為一行,所以就用刀了?preety讓信息更有好的顯示
  • ?preety讓輸出信息更友好的顯示
curl -XGET 'http://172.18.68.11:9200/_cat/nodes?pretty'
172.18.68.12 18 68 0 0.07 0.06 0.05 mdi - els2
172.18.68.13 25 67 0 0.01 0.02 0.05 mdi * els3             #  *號表示為當前節點為主節點的意思
172.18.68.11  7 95 0 0.02 0.04 0.05 mdi - els1

如果你要想查看更多有關於集群信息、當前節點統計信息等等,可以使用一下命令來獲取到所有可以查看的信息。

curl -XGET 'http://172.18.68.11:9200/_cat?pretty'   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數據表格能夠清晰的呈現數據信息,但是我們對於一些繁雜多變的數據想要很直觀的看到數據變化走勢或者數據的占比時,數據圖表會更具代表性,並且在呈現數據信息上也更形象,也能獲取更多純數字信息所不能直接展現的信息。在下麵的代碼中,將向您展示如何通過使用免費的Free Spire XLS for .NET組件來 ...
  • 1.父類必須包含構造函數麽? 父類必須要有一個構造函數,有參無參都可以。 構造函數是對象的基本,沒有構造函數就沒有對象,若父類中顯示的有參數的構造函數,在子類繼承就必須寫一個構造函數來調用父類的構造函數。 如果父類中有沒有參數的構造函數,在子類中可以不顯示的寫父類的構造函數,系統會自動調用沒有參數的 ...
  • 前段時間,Insus.NET有實現一組字元串在輸出時,靠左或靠右對齊。《輸出的字元靠右對齊》http://www.cnblogs.com/insus/p/7953304.html 現在Insus.NET參考此方法,實一張塔松葉,實現之前,先練習一下,輸出半張: public void WriteTr ...
  • 當Web Api 2.0使用OAuth2授權時,如何在Swagger中添加Authorization請求頭? Swagger說明文檔支持手動調用Api, 但是當Api使用OAuth2授權時,由於沒有地方可以輸入授權Token, 導致響應結果一直是401沒有授權。 解決方案: 在Swagger配置文件 ...
  • Ticks是一個周期,存儲的是一百納秒,換算為秒,一千萬分之一秒。我們需要計算2個時間之間,經過多少Ticks,可以使用下麵的方法來實現,使用2個時間相減。得到結果為正數,是使用較晚的時間減去較早的時間。反之為負數,即是使用較早的時間減去較晚的時間。創建一個對象: class Ag { privat ...
  • 一.TcpClient與TcpServe。 首先我們需要知道伺服器的IP地址,在伺服器端建立監聽,當監聽到客戶端的連接請求後,連接到客戶端。 而客戶端則需要連接到指定的IP伺服器地址,建立網路流,則可以實現通信。 接下來給出一個伺服器端與客戶端的實例: 伺服器端: 此時伺服器端應用的是Socket類 ...
  • 實例01 實現一個簡單的Web服務訪問 本實例將實現IP地址查詢介面服務,根據用戶傳入的IP地址返回IP所在的省、市、地區,實例中將會用到IP地址庫用於查詢信息,由於數據較多,所以讀者可在光碟資源文件中直接附加資料庫文件,這裡將不再介紹導入數據的過程。 程式實現步驟如下: (1)打開Visual S ...
  • 常用集合介面系列:http://www.cnblogs.com/fengxiaojiu/p/7997704.html 常用集合類系列:http://www.cnblogs.com/fengxiaojiu/p/7997541.html 常用集合類: 數組(Array)的不足(即:集合與數組的區別) 1 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...