es 3期 第28節-深入掌握集群組建與集群設置

#### 1.Elasticsearch是數據庫,不是普通的Java應用程序,傳統數據庫需要的硬件資源同樣需要,提升性能最有效的就是升級硬件。
#### 2.Elasticsearch是文檔型數據庫,不是關系型數據庫,不具備嚴格的ACID事務特性,任何企圖直接替代嚴格事務性場景的應用項目都會失敗!!!
#### 3.Elasticsearch原則上適合一切非事務性應用場景或能夠容許一定的延遲的事務性場景;能最大限度的替代mongodb與傳統關系型數據庫

##### 索引字段與屬性都屬于靜態設置,若后期變更歷史數據需要重建索引才可生效
##### 對歷史數據無效!!!!
##### 一定要重建索引!!!!

#### 1、Cluster Formation 集群組建
### 集群主從架構模型
## 集群架構模型
# 1:ES典型的主從架構,強烈關聯的主從架構
# 2:必須有1個Master節點
# 3:1個活躍的主節點Master,多個備用Master節點
# 4:元數據信息:集群節點信息,集群索引信息,集群設置信息等
# 5:典型嫡長子繼承


#### 2、Cluster Setting集群設置
### 集群組建原理發現與廣播
## 集群發現
# ES節點采用zen發現機制
# ES 節點之間是直接點對點
# ES集群所有節點之間都有連接

### 集群管理節點選舉算法(bully算法)
## 集群管理節點選舉
# 1、6.8.x版本以下,基于bully算法
# 2、比較節點nodeid大小,小的優先
# 3、ES集群選舉可能會有秒級左右的延遲


### 集群管理節點選舉算法(類Raft協議)
## 集群管理節點選舉
# 1、管理節點選舉算法基于類Raft協議
# 2節點選舉在3種角色直接轉換
# 3、選舉會按照term階段,每次主節點變更就會增加該值,以最大階段選舉的主節點為主
# 4、選舉管理節點毫秒級完成
# 5、7.x版本以上

?
### 集群狀態維護
## 集群狀態維護
# 1、集群管理節點負責集群所有狀態維護
# 2、節點更新數據優先更新到集群管理節點
# 3、索引更新優先更新到管理節點,然后分發到其它節點
# 4、在大規模集群架構+大規模索引分片中,增加新索引特別要小心(控制創建頻率,減少master)
# 5、Cluster Metadata


### 集群節點增加
## 集群節點增加
# 1、連接其中任意節點,即可加入集群
# 2、從Master節點獲取集群節點信息
# 3、從Master節點獲取集群meta信息


### 集群節點移除
## 集群節點移除
# 1、Master節點移除節點
# 2、Master節點更新Meta信息
# 3、Master同步集群Meta信息到所有節點

### 集群容錯性檢測
# 1、集群節點之間由于網絡或者進程響應問題,存在一定的延遲通信
# 2、通過設置集群容錯性,避免集群過于敏感,造成集群動蕩
# 3、超時時間 timeout-gap


### 組建2節點集群
# 1:配置節點通信2個
# 2:配置初始化管理節點1個

# 先初始化一個節點為master
# 1、解壓 elasticsearch-8.6.2
# 2、重命名文件夾 elasticsearch-8.6.2-9201
# 3、修改jvm.options jvm配置 為1g
# 4、修改elasticsearch.yml es配置
# 4.1、集群名 cluster.name: my-application
# 4.2、節點名 node.name: node-9201
# 4.3、host最好是對外通信ip network.host: 0.0.0.0
# 4.4、http端口,對外服務 http.port: 9201
# 4.5、tcp通信端口,對內提供集群服務 transport.port: 9301
# 4.6、master第一次啟動配自己就可以 cluster.initial_master_nodes: ["node-9201"]
# 4.7、關閉安全策略,xpack.security開頭的都設為false
# 4.8、開啟跨域, http.cors.enabled: true 和 http.cors.allow-origin: "*"
# 4.9、關閉gep更新 ingest.geoip.downloader.enabled: false
# 5、啟動

第一個節點的完整配置如下:

cluster.name: my-application
node.name: node-9201
http.port: 9201transport.port: 9301
cluster.initial_master_nodes: ["node-9201"]xpack.security.enabled: falsexpack.security.enrollment.enabled: falsexpack.security.http.ssl:enabled: falsekeystore.path: certs/http.p12xpack.security.transport.ssl:enabled: falseverification_mode: certificatekeystore.path: certs/transport.p12truststore.path: certs/transport.p12# 關閉gep更新
ingest.geoip.downloader.enabled: false# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"

? ? ? ? ?當第一個節點啟動完成后,就會組成由它自己形成的獨立集群。

?使用es-head查看單個節點集群

新增第二個節點并加入集群

# 由于es是彈性擴展的,可以直接加入master節點
# 在新增一個節點,加入前面的master
# 1、解壓 elasticsearch-8.6.2
# 2、重命名文件夾 elasticsearch-8.6.2-9202
# 3、修改jvm.options jvm配置 為1g
# 4、修改elasticsearch.yml es配置
# 4.1、集群名 cluster.name: my-cluster
# 4.2、節點名 node.name: node-9202
# 4.3、host最好是對外通信ip network.host: 0.0.0.0
# 4.4、http端口 http.port: 9202
# 4.5、tcp通信端口 transport.port: 9302
# 4.6、集群節點通信地址,配master tcp的地址 discovery.seed_hosts: ["127.0.0.1:9301"]
# 4.7、關閉安全策略,xpack.security開頭的都設為false
# 4.8、開啟跨域, http.cors.enabled: true 和 http.cors.allow-origin: "*"
# 4.9、關閉gep更新 ingest.geoip.downloader.enabled: false
# 5、啟動

第二個節點的完整配置如下:


cluster.name: my-application
node.name: node-9202
network.host: 0.0.0.0
http.port: 9202
transport.port: 9302
discovery.seed_hosts: ["127.0.0.1:9301"]
xpack.security.enabled: falsexpack.security.enrollment.enabled: false# 關閉gep更新
ingest.geoip.downloader.enabled: false# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"

使用es-head查看2個節點集群?

### 集群增加節點
# 逐步增加節點

discovery.seed_hosts 配非master也可以

# 在新增第三個節點,加入前面的master
# 1、解壓 elasticsearch-8.6.2
# 2、重命名文件夾 elasticsearch-8.6.2-9202
# 3、修改jvm.options jvm配置 為1g
# 4、修改elasticsearch.yml es配置
# 4.1、集群名 cluster.name: my-cluster
# 4.2、節點名 node.name: node-9203
# 4.3、host最好是對外通信ip network.host: 0.0.0.0
# 4.4、http端口 http.port: 9203
# 4.5、tcp通信端口 transport.port: 9303
# 4.6、與其他節點通信地址,配非master也可以 discovery.seed_hosts: ["127.0.0.1:9302"]
# 4.7、關閉安全策略,xpack.security開頭的都設為false
# 4.8、開啟跨域, http.cors.enabled: true 和 http.cors.allow-origin: "*"
# 4.9、關閉gep更新 ingest.geoip.downloader.enabled: false
# 5、啟動

第三個節點的完整配置如下:

cluster.name: my-application
node.name: node-9203
network.host: 0.0.0.0
http.port: 9203
transport.port: 9303
discovery.seed_hosts: ["127.0.0.1:9302"]
xpack.security.enabled: falsexpack.security.enrollment.enabled: false# 關閉gep更新
ingest.geoip.downloader.enabled: false# 是否支持跨域
http.cors.enabled: true
# *表示支持所有域名
http.cors.allow-origin: "*"

使用es-head查看3個節點集群?

????????到這里就完成了3個節點的es集群配置,由于es的彈性擴展,當我們的集群資源不足時,可以動態的添加節點,es會自動幫助我們平衡節點上的數據,利用這個自動平衡節點數據的特性,我們可以很方便的做機房遷移,只要在新機房把節點部署起來并連接上集群,待數據都分配到新節點上后,可以依次關閉老機房的節點,但是自動平衡數據也有缺點,如果單個節點上的數據過大,集群間的網絡帶寬可能會被打滿。

### 集群節點減少

## 注意事項

# 節點減少不要錯過n/2+1個,會導致集群不可用

? ? ? ? es其他的一些配置項

#----節點通信------#
# 節點之間通信間隔,默認 1S
discovery.find_peers_interval: ls
#節點之間探查連接超時時間,默認3s
discovery.probe.connect_timeout: 3s
#節點探查握手確定超時時間,是確定節點已經連接之后,默認1sdiscovery.probe.handshake timeout: ls
#節點之間請求確認回復,超時時間,默認3s
discovery.request_peers_timeout:3s
#節點域名解析,并發數,默認10
discovery.seed_resolver.max_concurrent_resolvers:10
#節點域名解析,超時時間,默認 10
discovery.seed_resolver.timeout:5s#----集群節點選舉投票井---------#
#集群投票節點,移除之后是否自動收縮,從集群中移除,默認true#若設置為 false,關閉集群節點之后,需要手動 API操作,移除此節點
cluster.auto_shrink_voting_configuration: true
#集群節點選舉失敗時,回退時間補償,默認100ms,一般不用修改,慎重
cluster.election.back_off_time: 100ms#集群節點選舉持續時間,在確認節點參與選舉失敗時,默認 500ms,一般不用修改,慎重,調大此值集群選舉時間過長,調小此值,集群過于敏感
cluster.election.duration:500ms
#集群節點選舉初始化,確認超時時間,默認100ms
cluster.election.initial_timeout:100ms
#集群節點選舉,最大超時時間,默認10S
cluster.election.max_timeout: 10s#---------集群容錯設置--------#
#集群主節點確認 非主節點檢查校驗時間間隔,是集群所有節點,默認1S
cluster.fault_detection.follower_check.interval: 1s
#集群主節點確認 非主節點已經與集群脫離 超時時間,默認10S
cluster.fault_detection.follower_check.timeout: 10s
#集群主節點與非主節點失去連接之后,嘗試連接次數,默認3
cluster.fault_detection.follower_check.retry_count: 3
#非主節點與主節點確認檢查消炎間隔時間,默認 1s
cluster.fault_detection.leader check.interval: 1s
#默認 10S
cluster.fault_detection.leader_check.timeout: 10s
#默認 3
cluster.fault_detection.leader_check.retry_count: 3
#非主節點與主節點確認,延遲超時時間,默認90s
cluster.follower_lag.timeout: 90s
#集群新節點加入集群,確認失敗,超時時間,默認30S
cluster.join.timeout: 30s
#移除集群投票選舉節點,最大數量,默認10
cluster.max_voting_config_exclusions:10#---------集群狀態發布--------------------#
#主節點與非主節點之間,確認集群所有狀態更新已經通知到所有節點,并得到應
#記錄某個節點是否響應慢,超時時間 ,默認 10s
cluster.publish.info_timeout: 10s
#主節點與非主節點之間,確認集群所有狀態更新已經通知到所有節點,并得到響應,超時時間,默認 60s
cluster.publish.timeout: 60s#--------集群主節點異堂默認操作-----------#
#集群主節點異常,讀寫操作全部停止
cluster.no_master_block: all
#集群主節點異常,寫操作停止
cluster.no_master_block: write

### 集群動態設置
# 1:有很多參數調節的設置,無需在集群啟動之前設置,可以在集群啟動之后,依據實際需求動態調整,即刻生效。
### 臨時設置與持久設置
##查詢參數
# PUT_cluster/settings,集群設置接口
# persistent,集群持久化設置,集群重啟依然有效
# transient,集群臨時設置,集群重啟失效

# 查看集群設置
GET _cluster/settings

# 查看集群健康信息
GET _cluster/health
# 查看集群狀態
GET _cluster/state

####?集群組建建議以及經驗分享

#?集群節點數量限制,不宜過大,正常30~40節點合適;大規模無需超過100

#?避免頻繁集群節點增加與移除

#?避免集群節點多個版本,盡量一致

# modules-discovery 集群組建發現
# https://www.elastic.co/guide/en/elasticsearch/reference/8.6/modules-discovery.html
# modules-discovery-settings 集群組建設置
# https://www.elastic.co/guide/en/elasticsearch/reference/8.6/modules-discovery-settings.html
# Cluster APls 集群操作 AP!
# https://www.elastic.co/guide/en/elasticsearch/reference/8.6/cluster.html
# voting-config-exclusions 移除節點投票資格
# https://www.elastic.co/guide/en/elasticsearch/reference/8.6/voting-config-exclusions.html
??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76339.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76339.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76339.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android學習總結之通信篇

一、Binder跨進程通信的底層實現細節(掛科率35%) 高頻問題:“Binder如何實現一次跨進程方法調用?”   候選人常見錯誤:   僅回答“通過Binder驅動傳輸數據”,缺乏對內存映射和線程調度的描述混淆Binde…

數據結構C語言練習(兩個棧實現隊列)

一、引言 在數據結構的學習中,我們經常會遇到一些有趣的問題,比如如何用一種數據結構去實現另一種數據結構的功能。本文將深入探討 “用棧實現隊列” 這一經典問題,詳細解析解題思路、代碼實現以及每個函數的作用,幫助讀者更好地…

前端如何導入谷歌字體庫

#谷歌字體庫內容豐富,涵蓋上千種多語言支持的字體,學習導入谷歌字體庫來增加網站的閱讀性,是必不可少的一項技能# 1,前往谷歌字體網站 要會魔法,裸連很卡 2, 尋找心儀字體 Googles Fonts下面的filters可…

SnapdragonCamera驍龍相機源碼解析

驍龍相機是高通開發的一個測試系統攝像頭的demo,代碼完善,功能強大。可以配合Camera驅動進行功能聯調。 很多邏輯代碼在CaptureModule.java里。 CaptureModule有8000多行,包羅萬象。 涉及到界面顯示要結合CaptureUI.java 一起來實現。 Ca…

多線程猜數問題

題目:線程 A 生成隨機數,另外兩個線程來猜數,線程 A 可以告訴猜的結果是大還是小,兩個線程都猜對后,游戲結束,編寫代碼完成。 一、Semaphore 多個線程可以同時操作同一信號量,由此實現線程同步…

seq2seq

理解 transformer 中的 encoder decoder 詳細的 transformer 教程見:【極速版 – 大模型入門到進階】Transformer 文章目錄 🌊 Encoder: 給一排向量輸出另外一排向量🌊 Encoder vs. Decoder: multi-head attention vs. masked multi-head at…

Proxmox pct 部署ubuntu

pct 前言 PCT(Proxmox Container Tool)是 PVE 中用于管理 Linux 容器(LXC)的命令行工具。通過 PCT,用戶可以執行各種容器管理任務,例如創建新的容器、啟動和停止容器、更新容器、安裝軟件包、導出和導入容器等。PCT 提供了與 Web 界面相同的功能,但通過命令行進行操作,…

Google Play關鍵字優化:關鍵排名因素與實戰策略

如果您準備發布應用程序或開始專注于關鍵字優化,您可能想知道如何向Google Play上的應用程序添加關鍵字。Google Play上的搜索量和排名與App Store不同,而且被索引排名的關鍵字也不同。在此文中,我們將確定Google Play上的關鍵排名因素&#…

Kafka延遲隊列實現分級重試

技術方案 方案背景 Kafka隊列消息消費處理過程中,發生處理異常,需要實現重試機制,并基于重試次數實現不同延遲時間重試方案。 方案介紹 通過實現Kafka延遲隊列來實現消息重試機制。 目標: 支持所有業務場景的延遲重試支持多…

Maven核心配置文件深度解析:pom.xml完全指南

🧑 博主簡介:CSDN博客專家、全棧領域優質創作者、高級開發工程師、高級信息系統項目管理師、系統架構師,數學與應用數學專業,10年以上多種混合語言開發經驗,從事DICOM醫學影像開發領域多年,熟悉DICOM協議及…

MSTP多域生成樹

協議信息 MSTP 兼容 STP 和 RSTP,既可以快速收斂,又提供了數據轉發的多個冗余路徑,在數據轉發過程中實現 VLAN 數據的負載均衡。 MSTP 可以將一個或多個 VLAN 映射到一個 Instance(實例)(一個或多個 VLAN…

MQTT 服務器(emqx)搭建及使用(一)

一. EMQX 服務器搭建 1.下載EMQX 下載鏈接:Windows | EMQX 文檔 官方手冊 2.下載內容解壓至盤符根目錄 3.進入bin文件夾,在地址欄輸入cmd 4.依次輸入下面命令安裝服務 .\emqx.cmd install .\emqx.cmd console 5.設置自啟動 創建批處理文件&#x…

在Thinkphp中使用JWT 包括JWT是什么,JWT的優勢

首先了解一下什么是JWT JWT 是一種開放標準(RFC 7519),用于在各方之間以 JSON 對象形式安全傳輸信息4。其核心特點包括: 結構:由三部分組成(Header、Payload、Signature),通過點號…

hackmyvn-casino

arp-scan -l nmap -sS -v 192.168.255.205 目錄掃描 dirsearch -u http://192.168.255.205/ -e * gobuster dir -u http://192.168.255.205 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php -b 301,401,403,404 80端口 隨便注冊一個賬號 玩游戲時的…

圖表配置表增加分析指標字段

在設計報表圖表配置表時,為存儲 同比、環比 這類分析指標,建議通過以下方式定義字段結構和命名: 一、字段設計方案 // 配置表示例結構 interface ChartConfig {id: string; // 唯一標識name: string; // 圖表…

廣州SMT貼片加工廠精密制造工藝解析

內容概要 在電子制造領域,SMT貼片加工技術已成為現代電子產品精密組裝的核心環節。廣州作為華南地區電子產業的重要樞紐,其SMT貼片加工廠通過融合自動化設備與嚴格工藝標準,構建起高效可靠的制造體系。 對于電子產品制造商而言,…

RK3568-適配ov5647攝像頭

硬件原理圖 CAM_GPIO是攝像頭電源控制引腳,連接芯片GPIO4_C2 CAM_LEDON是攝像頭led燈控制引腳,連接芯片GPIO4_C3編寫設備樹 / {ext_cam_clk: external-camera-clock {compatible = "fixed-clock";clock-frequency = <25000000>;clock-output-names = "…

關于 @Autowired 和 @Value 使用 private 字段的警告問題分析與解決方案

問題背景 在使用 Spring 框架進行開發時&#xff0c;我們經常會使用 Autowired 和 Value 注解來進行依賴注入和屬性值注入。然而&#xff0c;當我們將這些注解應用于 private 字段時&#xff0c;IDE&#xff08;如 IntelliJ IDEA&#xff09;可能會顯示警告信息&#xff0c;提…

Flutter 開發環境配置--宇宙級教學!

目錄 一、安裝環境&#xff08;Windows&#xff09;二、Android 創建Flutter項目三、VSCode 搭建環境四、補充 一、安裝環境&#xff08;Windows&#xff09; Flutter SDK 下載 推薦使用中國鏡像站點下載 Flutter SDK&#xff0c;速度更快&#xff1a;中國環境 或者從官網下載…

碰一碰發視頻網頁版本開發的源碼搭建指南

引言 在數字化信息快速傳播的時代&#xff0c;近場通信&#xff08;NFC&#xff09;技術為信息交互帶來了新的便捷方式。通過網頁版本實現碰一碰發視頻功能&#xff0c;能夠讓用戶在瀏覽器環境中輕松實現視頻分享&#xff0c;拓展了視頻傳播的途徑。本文將詳細介紹碰一碰發視頻…