国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Elasticsearch 最佳實(shí)踐

IT那活兒 / 2509人閱讀
Elasticsearch 最佳實(shí)踐

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!!!

Elasticsearch是一個(gè)基于Apache Lucene的開源搜索引擎。無論在開源還是專有領(lǐng)域,Lucene可以被認(rèn)為是迄今為止最先進(jìn)、性能最好的、功能最全的搜索引擎庫
它有如下特點(diǎn):
  • 分布式的實(shí)時(shí)文件存儲,每個(gè)字段都被索引并可被搜索;
  • 分布式的實(shí)時(shí)分析搜索引擎--做不規(guī)則查詢;
  • 可以擴(kuò)展到上百臺服務(wù)器,處理PB級結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。
生產(chǎn)環(huán)境的elasticsearch安裝是一個(gè)多節(jié)點(diǎn)的集群模式,一個(gè)節(jié)點(diǎn)(node)就是一個(gè)Elasticsearch實(shí)例,而一個(gè)集群(cluster)由一個(gè)或多個(gè)節(jié)點(diǎn)組成,它們具有相同的cluster.name,它們協(xié)同工作,分享數(shù)據(jù)和負(fù)載。
本文將自底向上的逐步推薦所謂的“最佳實(shí)踐”配置,畢竟拋開業(yè)務(wù)場景數(shù)據(jù)量等因素談所謂的“最佳實(shí)踐”其實(shí)都是耍流氓。但如果你對elasticsearch集群所需承載的業(yè)務(wù)或數(shù)據(jù)規(guī)模不是很清楚的時(shí)候,按本文比較常用的設(shè)置來安裝集群,是可以滿足絕大多數(shù)的應(yīng)用場景的,本文所謂的“最佳實(shí)踐”也是基于此。



1. 節(jié)點(diǎn)數(shù)量
elasticsearch一般是用于構(gòu)建業(yè)務(wù)的搜索需求,而且是垂直領(lǐng)域的搜索,在數(shù)據(jù)量橫跨幾千萬到數(shù)十億的級別的場景下,一般3-6臺的節(jié)點(diǎn)規(guī)模是安全的節(jié)點(diǎn)數(shù)量。
當(dāng)用于大規(guī)模數(shù)據(jù)的實(shí)時(shí)OLAP(統(tǒng)計(jì)處理分析),比如elk stack和BI等,數(shù)據(jù)規(guī)模可能會達(dá)到千億甚至更多,此時(shí)我們elasticsearch的集群數(shù)量可能就會需要幾十上百臺的規(guī)模才能滿足了。
綜上,同時(shí)考慮我們elasticsearch集群擁有足夠優(yōu)秀的橫向擴(kuò)展能力,所以我們在安裝elasticsearch集群時(shí),可以使用5節(jié)點(diǎn)集群,當(dāng)業(yè)務(wù)擴(kuò)展性能瓶頸時(shí),我們可以對集群進(jìn)行擴(kuò)容,增加節(jié)點(diǎn)數(shù)量。



2. 服務(wù)器硬件
CPU: 大多數(shù)的ES集群對cpu的要求并不高,一般當(dāng)前時(shí)期服務(wù)器市場上中等甚至中等偏低的CPU都能滿足。
內(nèi)存:ES對內(nèi)存要求較高,主要不是吃JVM內(nèi)存,而是OS cache,ES會將頻繁訪問的一些數(shù)據(jù)緩存在操作系統(tǒng)內(nèi)存中,以達(dá)到較高的訪問效率,推薦機(jī)器內(nèi)存64G+。
磁盤:推薦使用SSD或者使用本地SAS盤或SATA盤存儲,轉(zhuǎn)速越高越好,磁盤選型可以在性能和成本因素中綜合考量,如對性能要求不十分苛刻的情況下,推薦使用廉價(jià)經(jīng)濟(jì)的SATA盤,容量可以依據(jù)數(shù)據(jù)規(guī)劃來存儲(規(guī)劃方法見本條下方),如無規(guī)劃,推薦使用2T-4T的SATA盤。
切記不要給ES使用NAS盤
綜上,我們建議使用同時(shí)期的主流中等配置的機(jī)器,不建議使用過于強(qiáng)勁的硬件配置,不建議在一臺服務(wù)器上運(yùn)行多個(gè)節(jié)點(diǎn),因?yàn)橐坏┮慌_服務(wù)器產(chǎn)生故障,會對集群產(chǎn)生比較大的影響,恢復(fù)的速度也會更慢。
(數(shù)據(jù)規(guī)劃方法:常用的經(jīng)驗(yàn)計(jì)算法為磁盤容量大小=原始數(shù)據(jù)大小*3.38。也即假設(shè)一條文檔數(shù)據(jù)1k,預(yù)計(jì)數(shù)據(jù)量有10億條,那么會有100G的原始數(shù)據(jù)大小,磁盤占用預(yù)計(jì)是300G)。



3. 網(wǎng)絡(luò)
推薦單個(gè)集群不要跨數(shù)據(jù)中心進(jìn)行部署(不要使用WAN),節(jié)點(diǎn)之間的hops越少越好。
如果有多塊網(wǎng)卡,最好將transport和 http綁定到不同的網(wǎng)卡,并設(shè)置不同的防火墻Rules,按需為Coordinating Node 或 Ingest Node配置負(fù)載均衡。



4. 集群角色規(guī)劃
一個(gè)節(jié)點(diǎn)node可以充當(dāng)一個(gè)或多個(gè)角色,默認(rèn)配置是三個(gè)角色(master節(jié)點(diǎn)、協(xié)調(diào)節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn))都有。
協(xié)調(diào)節(jié)點(diǎn)即凡是接收客戶端請求處理的默認(rèn)就是協(xié)調(diào)節(jié)點(diǎn),如果集群的負(fù)載較重時(shí),可以將協(xié)調(diào)節(jié)點(diǎn)多帶帶抽取出來作為獨(dú)立角色部署。
一般我們將10節(jié)點(diǎn)作為小規(guī)模和中等規(guī)模分界點(diǎn),一般小規(guī)模集群(小于10節(jié)點(diǎn)),我們無需嚴(yán)格進(jìn)行區(qū)分,混合部署就可以了。中大規(guī)模集群(超過10節(jié)點(diǎn)甚至更多),則應(yīng)該考慮多帶帶的角色,一般一臺服務(wù)器只部署一個(gè)node,當(dāng)并發(fā)查詢量過大時(shí),考慮增加獨(dú)立的協(xié)調(diào)節(jié)點(diǎn)。角色分開的好處是分工分開,互不影響。



5. 堆內(nèi)存設(shè)置及優(yōu)化建議
5.1 堆內(nèi)存設(shè)置
不要超過 32 GB,如果服務(wù)器內(nèi)存充足,可以設(shè)置為32G。
堆對于Elasticsearch絕對重要它被許多內(nèi)存數(shù)據(jù)結(jié)構(gòu)用來提供快速操作
但還有另外一個(gè)非常重要的內(nèi)存使用者:Lucene。
Lucene旨在利用底層操作系統(tǒng)來緩存內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)。Lucene段(segment)存儲在單個(gè)文件中。因?yàn)槎问且怀刹蛔兊模赃@些文件永遠(yuǎn)不會改變。這使得它們非常容易緩存,并且底層操作系統(tǒng)將愉快地將熱段(hot segments)保留在內(nèi)存中以便更快地訪問。這些段包括倒排索引(用于全文搜索)和文檔值(用于聚合)。
Lucene的性能依賴于與操作系統(tǒng)的這種交互。但是如果你把所有可用的內(nèi)存都給了Elasticsearch的堆,那么Lucene就不會有任何剩余的內(nèi)存。這會嚴(yán)重影響性能。
標(biāo)準(zhǔn)建議是將可用內(nèi)存的50%提供給Elasticsearch堆,而將其他50%空閑。它不會被閑置; Lucene會高興地吞噬掉剩下的東西。
JVM設(shè)定:
從ES 6開始,只支持64位的JVM,配置config/jvm.options,將內(nèi)存Xms和Xmx設(shè)置成一樣,避免heap resize時(shí)引發(fā)停頓。
5.2 堆內(nèi)存優(yōu)化建議
1)最好的辦法是在系統(tǒng)上完全禁用交換。
可以暫時(shí)用如下命令完成:
若要永久禁用它,需要在/etc/fstab中設(shè)置。
2)控制操作系統(tǒng)嘗試交換內(nèi)存的積極性。
如果完全禁用交換不是一種選擇,可以嘗試降低swappiness。該值控制操作系統(tǒng)嘗試交換內(nèi)存的積極性。這可以防止在正常情況下交換,但仍然允許操作系統(tǒng)在緊急內(nèi)存情況下進(jìn)行交換。
對于大多數(shù)Linux系統(tǒng),這是使用sysctl值配置的:
vm.swappiness = 1
注意:1的swappiness優(yōu)于0,因?yàn)樵谀承﹥?nèi)核版本上,swappiness為0可以調(diào)用OOM殺手。
3)mlockall允許JVM鎖定其內(nèi)存并防止其被操作系統(tǒng)交換。
最后,如果兩種方法都不可行,則應(yīng)啟用mlockall文件。這允許JVM鎖定其內(nèi)存并防止其被操作系統(tǒng)交換。在elasticsearch.yml中,設(shè)置這個(gè):



6. 數(shù)據(jù)目錄設(shè)置
數(shù)據(jù)目錄可以在配置中本地指定多個(gè)“path.data”,以支持使用多塊磁盤,如
path.data:/data01/es,/data02/es,/data03/es,/data04/es,/data05/es,/data06/es
因ES本身提供了很好的HA機(jī)制,所以我們無需對數(shù)據(jù)盤使用任何的RAID 1/5/10等冗余措施。
我們可以在Warm節(jié)點(diǎn)上使用Spinning Disk,但是需要關(guān)閉Concurrent Merges Index.merge.scheduler.max_thread_count: 1。



7. 索引設(shè)計(jì)
業(yè)務(wù)的索引設(shè)計(jì)至關(guān)重要一般要根據(jù)業(yè)務(wù)的場景來決定核心是要避免單個(gè)TB級甚至PB級的索引,大索引一般要進(jìn)行拆分到GB級別,比如海量的日志場景可以采用Template+rollover+curator滾動創(chuàng)建索引,動態(tài)使用后的效果如下:
具體操作就是在索引模板的設(shè)計(jì)階段,定義一個(gè)全局變量名:用途是全局檢索,比如test_sms,每次更新到新的索引后,新索引指向一個(gè)用于實(shí)時(shí)新數(shù)據(jù)寫入的別名test_sms_2022.03.05,同時(shí)將舊索引的別名test_sms_2022.03.01移除。然后再通過curator按照日期定期刪除,歸檔歷史數(shù)據(jù)。



8. 分片及副本設(shè)置
合理的建議:每個(gè)分片數(shù)據(jù)大小:30GB-50GB
分片是 Elasticsearch 在集群內(nèi)分發(fā)數(shù)據(jù)的單位。集群發(fā)生故障再恢復(fù)平衡的速度取決于分片的大小、分片數(shù)量、網(wǎng)絡(luò)以及磁盤性能。
在 Elasticsearch 中,每個(gè)查詢在每個(gè)分片的單個(gè)線程中執(zhí)行。但是,可以并行處理多個(gè)分片。針對同一分片的多個(gè)查詢和聚合也可以并行處理。
這意味著在不涉及緩存的情況下,最小查詢延遲將取決于數(shù)據(jù)、查詢類型以及分片的大小三個(gè)因素。
8.1 查詢很多小分片vs查詢少量大分片
查詢很多小分片,導(dǎo)致每個(gè)分片能做到快速響應(yīng),但是由于需要按順序排隊(duì)和處理結(jié)果匯集。因此不一定比查詢少量的大分片快。
如果存在多個(gè)并發(fā)查詢,那么擁有大量小分片也會降低查詢吞吐量。
8.2 分片數(shù)設(shè)定
選擇正確數(shù)量的分片是一個(gè)復(fù)雜問題,因?yàn)樵诩阂?guī)劃階段以及在數(shù)據(jù)寫入開始之前,一般不能確切知道文檔數(shù)。
對于集群而言,分片數(shù)多了以后,索引和分片管理可能會使主節(jié)點(diǎn)超載,并可能會導(dǎo)致集群無響應(yīng),甚至導(dǎo)致集群宕機(jī)。
建議:為主節(jié)點(diǎn)(Master 節(jié)點(diǎn))分配足夠的資源以應(yīng)對分片數(shù)過多可能導(dǎo)致的問題。
必須強(qiáng)調(diào)的是:主分片數(shù)是在索引創(chuàng)建時(shí)定義的,不支持借助 update API 實(shí)現(xiàn)類副本數(shù)更新的動態(tài)修改。創(chuàng)建索引后,更改主分片數(shù)的唯一方法是重新創(chuàng)建索引,然后將原來索引數(shù)據(jù) reindex 到新索引。
所以官方給出的合理的建議:每個(gè)分片數(shù)據(jù)大小:30GB-50GB
8.3 副本設(shè)置
Elasticsearch 通過副本實(shí)現(xiàn)集群的高可用性,數(shù)據(jù)在數(shù)據(jù)節(jié)點(diǎn)之間復(fù)制,以實(shí)現(xiàn)主分片數(shù)據(jù)的備份,因此即便部分節(jié)點(diǎn)因異常下線也不會導(dǎo)致數(shù)據(jù)丟失。
默認(rèn)情況下,副本數(shù)為 1,但可以根據(jù)產(chǎn)品高可用要求將其增加。副本越多,數(shù)據(jù)的容災(zāi)性越高。
副本多的另一個(gè)優(yōu)點(diǎn)是,每個(gè)節(jié)點(diǎn)都擁有一個(gè)副本分片,有助于提升查詢性能。
建議:根據(jù)業(yè)務(wù)實(shí)際綜合考慮設(shè)置副本數(shù)。普通業(yè)務(wù)場景(非精準(zhǔn)高可用)副本設(shè)置為 1 足夠了。
修改索引副本數(shù):
PUT index/_settings
{
   "number_of_replicas": 1
}
查看索引分片:
GET index/_settings



9. 冷熱集群架構(gòu)配置
根據(jù)產(chǎn)品業(yè)務(wù)數(shù)據(jù)特定和需求,我們可以將數(shù)據(jù)分為熱數(shù)據(jù)和冷數(shù)據(jù),這是冷熱集群架構(gòu)的前提。
訪問頻率更高的索引可以分配更多更高配(如:SSD)的數(shù)據(jù)節(jié)點(diǎn),而訪問頻率較低的索引可以分配低配(如:機(jī)械磁盤)數(shù)據(jù)節(jié)點(diǎn)。
冷熱集群架構(gòu)對于存儲諸如應(yīng)用程序日志或互聯(lián)網(wǎng)實(shí)時(shí)采集數(shù)據(jù)(基于時(shí)間序列數(shù)據(jù))特別有用。
數(shù)據(jù)遷移策略:通過運(yùn)行定時(shí)任務(wù)來實(shí)現(xiàn)定期將索引移動到不同類型的節(jié)點(diǎn)。具體實(shí)現(xiàn)為使用curator工具或借助ILM 索引生命周期管理。



10. 集群安全設(shè)定
為Elasticsearch和 Kibana 配置安全功能,打開Authentication & Authorization,實(shí)現(xiàn)索引和和字段級的安全控制,節(jié)點(diǎn)間通信加密,Enable HTTPS,Audit logs。



11. 慢日志
慢日志的目的是捕獲那些超過指定時(shí)間閾值的查詢和索引請求這個(gè)日志用來追蹤由用戶產(chǎn)生的很慢的請求很有用。
默認(rèn)情況,慢日志是不開啟的。要開啟它,需要定義具體動作(query,fetch 還是 index),期望的事件記錄等級( WARN 、 DEBUG 等),以及時(shí)間閾值。這是一個(gè)索引級別的設(shè)置,也就是說可以獨(dú)立應(yīng)用給單個(gè)索引:
也可以在 elasticsearch.yml 文件里定義這些閾值。沒有閾值設(shè)置的索引會自動繼承在靜態(tài)配置文件里配置的參數(shù)。一旦閾值設(shè)置過了,你可以和其他日志器一樣切換日志記錄等級:


本文作者:何  青

本文來源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

???

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129558.html

相關(guān)文章

  • FastD 最佳實(shí)踐五: 構(gòu)建ELK日志分析

    摘要:點(diǎn)擊前往中文地址先決條件簡單安裝下載地址下載或者其他都可以。版本處理方案新建格式日志文件。配置日志會隨著配置進(jìn)行生成,結(jié)果如下忽略上述日志內(nèi)容,程序看得懂即可配置推送到需要根據(jù)業(yè)務(wù)場景進(jìn)行配置,現(xiàn)在顯示最簡單的配置。 過去咱們開發(fā)中,對日志這個(gè)環(huán)節(jié)其實(shí)并不太重視,直到有一天,應(yīng)用出現(xiàn)異常,這個(gè)時(shí)候才想起來日志,但很可惜,為時(shí)已晚。 咱們做運(yùn)維和開發(fā),除了救火,還需要防火,因此一些防范的...

    djfml 評論0 收藏0
  • mysql到elasticsearch數(shù)據(jù)遷移踩坑實(shí)踐-Ali0th

    摘要:配置文件其中有兩個(gè)關(guān)鍵的配置和。啟動如上即為正常運(yùn)行。因?yàn)槲以趩雍笠恢眻?bào)錯(cuò),,各種嘗試最后報(bào)錯(cuò)依然存在,只好換用部署了。安裝部署安裝和插件獲取驅(qū)動下載配置配置使用時(shí)自行把下面注釋去掉。Author : Ali0th Date : 20190514 最近用go語言寫了個(gè)爬蟲,爬了幾百萬條數(shù)據(jù),存在 mysql 里,數(shù)據(jù)量較大,一個(gè)表就一兩G的程度(mysql表一般不要超過2G)。 sho...

    littlelightss 評論0 收藏0
  • FastD 最佳實(shí)踐四: 構(gòu)建系統(tǒng)可視化監(jiān)控

    摘要:的展示非常炫酷,絕對是運(yùn)維提升逼格的一大利器。另外的可視化功能比強(qiáng)得多,而且以上版本將集成報(bào)警功能。它由寫成,著力于高性能地查詢與存儲時(shí)序型數(shù)據(jù)。被廣泛應(yīng)用于存儲系統(tǒng)的監(jiān)控?cái)?shù)據(jù),行業(yè)的實(shí)時(shí)數(shù)據(jù)等場景。 原有監(jiān)控系統(tǒng) showImg(https://segmentfault.com/img/remote/1460000011082384); 整個(gè)系統(tǒng)以 Graphite (carbon ...

    khlbat 評論0 收藏0
  • JHipster技術(shù)簡介

    摘要:本文簡單介紹是什么,為什么用,怎么用。技術(shù)棧是什么是一個(gè)開發(fā)平臺,用于生成,開發(fā),部署和。實(shí)現(xiàn)需定制化源碼。 本文簡單介紹Jhipster是什么,為什么用Jhipster,怎么用Jhipster。 WHAT - 技術(shù)棧 JHipster是什么 JHipster是一個(gè)開發(fā)平臺,用于生成,開發(fā),部署Spring Boot + Angular/React Web Application和Sp...

    hightopo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<