solr叢集構建的基本流程介紹
先從第一臺solr伺服器說起:
1. 它首先啟動一個嵌入式的Zookeeper伺服器,作為叢集狀態資訊的管理者,
2. 將自己這個節點註冊到/node_states/目錄下
3. 同時將自己註冊到/live_nodes/目錄下
4. 建立/overseer_elect/leader,為後續Overseer節點的選舉做準備,新建一個Overseer,
5. 更新/clusterstate.json目錄下json格式的叢集狀態資訊
6. 本機從Zookeeper中更新叢集狀態資訊,維持與Zookeeper上的叢集資訊一致
7. 上傳本地配置檔案到Zookeeper中,供叢集中其他solr節點使用
8. 啟動本地的Solr伺服器,
9. Solr啟動完成後,Overseer會得知shard中有第一個節點進來,更新shard狀態資訊,並將本機所在節點設定為shard1的leader節點,並向整個叢集釋出最新的叢集狀態資訊。
10.本機從Zookeeper中再次更新叢集狀態資訊,第一臺solr伺服器啟動完畢。
然後來看第二臺solr伺服器的啟動過程:
1. 本機連線到叢集所在的Zookeeper,
2. 將自己這個節點註冊到/node_states/目錄下
3. 同時將自己註冊到/live_nodes/目錄下
4. 本機從Zookeeper中更新叢集狀態資訊,維持與Zookeeper上的叢集資訊一致
5. 從叢集中儲存的配置檔案載入Solr所需要的配置資訊
6. 啟動本地solr伺服器,
7. solr啟動完成後,將本節點註冊為叢集中的shard,並將本機設定為shard2的Leader節點,
8. 本機從Zookeeper中再次更新叢集狀態資訊,第二臺solr伺服器啟動完畢。
這個叢集現在就具備容錯性了,你可以試著宕掉一臺Solr伺服器,然後再傳送查詢請求。背後的實質是叢集的overseer會監測各個shard的leader節點,如果leader節點掛了,則會啟動自動的容錯機制,會從同一個shard中的其他replica節點集中重新選舉出一個leader節點,甚至如果overseer節點自己也掛了,同樣會自動在其他節點上啟用新的overseer節點,這樣就確保了叢集的高可用性.
1. 它首先啟動一個嵌入式的Zookeeper伺服器,作為叢集狀態資訊的管理者,
2. 將自己這個節點註冊到/node_states/目錄下
3. 同時將自己註冊到/live_nodes/目錄下
4. 建立/overseer_elect/leader,為後續Overseer節點的選舉做準備,新建一個Overseer,
5. 更新/clusterstate.json目錄下json格式的叢集狀態資訊
6. 本機從Zookeeper中更新叢集狀態資訊,維持與Zookeeper上的叢集資訊一致
7. 上傳本地配置檔案到Zookeeper中,供叢集中其他solr節點使用
8. 啟動本地的Solr伺服器,
9. Solr啟動完成後,Overseer會得知shard中有第一個節點進來,更新shard狀態資訊,並將本機所在節點設定為shard1的leader節點,並向整個叢集釋出最新的叢集狀態資訊。
10.本機從Zookeeper中再次更新叢集狀態資訊,第一臺solr伺服器啟動完畢。
然後來看第二臺solr伺服器的啟動過程:
1. 本機連線到叢集所在的Zookeeper,
2. 將自己這個節點註冊到/node_states/目錄下
3. 同時將自己註冊到/live_nodes/目錄下
4. 本機從Zookeeper中更新叢集狀態資訊,維持與Zookeeper上的叢集資訊一致
5. 從叢集中儲存的配置檔案載入Solr所需要的配置資訊
6. 啟動本地solr伺服器,
7. solr啟動完成後,將本節點註冊為叢集中的shard,並將本機設定為shard2的Leader節點,
8. 本機從Zookeeper中再次更新叢集狀態資訊,第二臺solr伺服器啟動完畢。
這個叢集現在就具備容錯性了,你可以試著宕掉一臺Solr伺服器,然後再傳送查詢請求。背後的實質是叢集的overseer會監測各個shard的leader節點,如果leader節點掛了,則會啟動自動的容錯機制,會從同一個shard中的其他replica節點集中重新選舉出一個leader節點,甚至如果overseer節點自己也掛了,同樣會自動在其他節點上啟用新的overseer節點,這樣就確保了叢集的高可用性.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2151669/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ZooKeeper 搭建 solr 叢集Solr
- redis 叢集構建Redis
- ClickHouse 邏輯叢集介紹
- Redis 漸進叢集介紹Redis
- Redis介紹、使用、資料結構和叢集模式總結Redis資料結構模式
- Redis叢集介紹及測試思路Redis
- Etcd叢集的介紹和選主應用
- jQuery Validate表單驗證基本流程介紹jQuery
- Docker構建redis叢集環境DockerRedis
- 【推薦系統篇】--推薦系統介紹和基本架構流程架構
- VictoriaMetrics 中文教程(10)叢集版介紹
- 第76篇 Redis叢集詳細介紹Redis
- Dart建構函式介紹Dart函式
- hazelcast的基本介紹AST
- 使用docker-compose構建elasticsearch叢集DockerElasticsearch
- Mac 下 利用 docker 構建 MySQL 叢集MacDockerMySql
- 使用Keepalived構建LVS高可用叢集
- 構建一機多例項tomcat叢集Tomcat
- redis5.* 手動構建叢集Redis
- ES叢集構建(本人親測有效)
- 三千字介紹Redis主從+哨兵+叢集Redis
- Nginx 架構——【核心流程+模組介紹】Nginx架構
- SAP Commerce Cloud 裡的 Solr 架構簡介CloudSolr架構
- 構建Zookeeper叢集(zkcluster) ~一篇文章玩轉zk叢集^.^
- 構建MHA實現MySQL高可用叢集架構MySql架構
- layui 的基本使用介紹UI
- 重頭構建kubernetes叢集v1.81
- 利用Swarmkit構建Windows/Linux混合Docker叢集SwarmWindowsLinuxDocker
- k8s介紹及與docker搭建叢集K8SDocker
- ipfs基本介紹
- TypeScript基本介紹TypeScript
- LVM基本介紹LVM
- docker 基本介紹Docker
- 程式碼構建軟體架構圖的工具介紹架構
- 介紹一個好用的 Laravel Menu 建構包Laravel
- RabbitMQ從零到叢集高可用(.NetCore5.0) -高可用叢集構建落地MQNetCore
- 構建生產環境可用的高可用kubernetes叢集
- 阿里超大規模 Flink 叢集運維體系介紹阿里運維