elasticsearch集群搭建及參數(shù)詳解

介紹

elasticsearch集群的搭建教程很多。網(wǎng)上一搜都是,但是,搭建不難。更重要的是明白集群原理,性能以及運維知識點。所以,本文將從這些點著重介紹。

配置參數(shù)詳解

elasticsearch配置文件中有以下這些參數(shù),將逐一介紹(其實配置文件中英文描述已經(jīng)非常清楚):

  • cluster.name
    集群名,自定義集群名,默認為elasticsearch,建議修改,因為低版本多播模式下同一網(wǎng)段下相同集群名會自動加入同一集群,如生產(chǎn)環(huán)境這樣易造成數(shù)據(jù)運維紊亂。

  • node.name
    節(jié)點名,同一集群下要求每個節(jié)點的節(jié)點名不一致,起到區(qū)分節(jié)點和辨認節(jié)點作用

  • node.master
    是否為主節(jié)點,選項為true或false,當為true時在集群啟動時該節(jié)點為主節(jié)點,在宕機或任務(wù)掛掉之后會選舉新的主節(jié)點,恢復后該節(jié)點依然為主節(jié)點

  • node.data
    是否處理數(shù)據(jù),選項為true或false。負責數(shù)據(jù)的相關(guān)操作

  • path.data
    默認數(shù)據(jù)路徑,可用逗號分隔多個路徑

  • path.logs
    默認日志路徑

  • bootstrap.mlockall
    內(nèi)存鎖,選項為true或false,用來確保用戶在es-jvm中設(shè)置的ES_HEAP_SIZE參數(shù)內(nèi)存可以使用一半以上而又不溢出

  • network.host
    對外暴露的host,0.0.0.0時暴露給外網(wǎng)

  • http.port
    對外訪問的端口號,默認為9200,所以外界訪問該節(jié)點一般為http://ip:9200/

  • transport.tcp.port
    集群間通信的端口號,默認為9300

  • discovery.zen.ping.unicast.hosts
    集群的ip集合,可指定端口,默認為9300,如 ["192.168.1.101","192.168.1.102"]

  • discovery.zen.minimum_master_nodes
    最少的主節(jié)點個數(shù),為了防止腦裂,最好設(shè)置為(總結(jié)點數(shù)/2 + 1)

  • discovery.zen.ping_timeout
    主節(jié)點選舉超時時間設(shè)置

  • gateway.recover_after_nodes
    值為n,網(wǎng)關(guān)控制在n個節(jié)點啟動之后才恢復整個集群

  • node.max_local_storage_nodes
    值為n,一個系統(tǒng)中最多啟用節(jié)點個數(shù)為n

  • action.destructive_requires_name
    選項為true或false,刪除indices是否需要現(xiàn)實名字

理解主節(jié)點、副節(jié)點、分片與復制分片

關(guān)系

起初創(chuàng)建節(jié)點與分片的關(guān)系,設(shè)置shards=2,replicas=1

elasticsearch節(jié)點與分片的關(guān)系圖.png

解析

  • node-master主節(jié)點
    集群中用于元數(shù)據(jù)(metadata)的請求處理,比如確定分片位置,索引的新增、刪除請求分配等

  • node
    包括client nodedata node

1. `client node` node.master=true,node.data=false 用于轉(zhuǎn)發(fā)請求,起到平衡負載的作用
2. `data node` node.master=flase,node.data=true
> 節(jié)點上保存了數(shù)據(jù)分片。它負責數(shù)據(jù)相關(guān)操作,比如分片的 CRUD,以及搜索和整合操作。這些操作都比較消耗 CPU、內(nèi)存和 I/O 資源
  • shards 分片
    在設(shè)置索引時默認(5)或自己設(shè)置的分片數(shù)量,即indices(1)--shards(n),而每插入一條數(shù)據(jù)都會在唯一主分片中,即Document(n)--shards(1)

  • replicas 復制分片
    同樣在設(shè)置索引時會默認(1)或自定義復制分片數(shù)量,該數(shù)量對應(yīng)關(guān)系為每個主分片對應(yīng)的復制分片,即shards(1)--replicas(n)

要點

  1. 當集群健康狀態(tài)為yello表示存在復制分片未被分配(unassigned)到節(jié)點中(或者分配的復制節(jié)點個數(shù)少于設(shè)置的個數(shù)),這時如果硬件有故障將無法找回數(shù)據(jù)。
  2. 在同一個節(jié)點上既保存原始數(shù)據(jù)又保存副本是沒有意義的,因為一旦失去了那個節(jié)點,我們也將丟失該節(jié)點上的所有副本數(shù)據(jù)。
  3. 主分片數(shù)量一般是在建立索引時就固定的,一般是不作修改的,如果減少分片數(shù)量意味著數(shù)據(jù)將要丟失
  4. 復制分片一定意義上可以起到負載的功能,提高數(shù)據(jù)的冗余量。但如果只是在相同節(jié)點數(shù)目的集群上增加更多的副本分片并不能提高性能,因為每個分片從節(jié)點上獲得的資源會變少。 你需要增加更多的硬件資源來提升吞吐量

節(jié)點與分片模型

同樣設(shè)置shards=2,replicas=1

elasticsearch節(jié)點與分片可分配關(guān)系圖.png

elasticsearch節(jié)點與分片正常存儲關(guān)系圖.png

分布式文檔存儲的關(guān)系原理

這個由于在官網(wǎng)指南中寫的很清楚了,直接貼出章節(jié)。
分布式文檔存儲

集群搭建

配置集群

修改配置文件

# vi /etc/elasticsearch/elasticsearch.yml

# 統(tǒng)一的集群名
cluster.name: syncwt-es
# 當前節(jié)點名
node.name: syncwt-es-node-1
# 對外暴露端口使外網(wǎng)訪問
network.host: 0.0.0.0
# 對外暴露端口
http.port: 9200
# ...還有很多可以設(shè)置,這些是基礎(chǔ)的。具體看上面的配置參數(shù)說明

重啟并查看集群健康狀態(tài):

# sudo systemctl start elasticsearch.service
# curl -XGET 'http://localhost:9200/_cat/health?v'

集群可視化插件安裝elasticsearch-head

# cd ${elasticsearch_HOME}
# ./plugin install mobz/elasticsearch-head

頁面訪問效果(單節(jié)點):
http://119.29.248.199:9200/_plugin/head/

elasticsearch_head效果圖.png

注意

  1. 集群中es的版本應(yīng)保持一致,最好內(nèi)網(wǎng)部署,外網(wǎng)不是很穩(wěn)定。
  2. 可用容器(如docker)封裝統(tǒng)一部署集群各節(jié)點以保持配置一致性
  3. 可在一臺機器上運行多個節(jié)點來構(gòu)建集群,只是性能會和機器配置相關(guān)

總結(jié)

  1. 集群中節(jié)點選型策略。node-data節(jié)點(隨著數(shù)據(jù)增加而增加),note-client(隨著查詢壓力而增加)節(jié)點
  2. 集群節(jié)點數(shù)量上升時,多關(guān)注配置參數(shù),如gateway.recover_after_nodes等,會帶來很多效率的提高
  3. 當集群數(shù)量較大時,建議橫向擴展集群。單純增加es節(jié)點的內(nèi)存和CPU不會有很大提升,建議多增加節(jié)點

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,406評論 6 538
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,034評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,413評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,449評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,165評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,559評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,606評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,781評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,327評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,084評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,278評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,849評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,495評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,927評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,172評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,010評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,241評論 2 375

推薦閱讀更多精彩內(nèi)容