SolrCloud階段總結


SolrCloud階段總結

開發類型

全文檢索相關開發

Solr版本

4.2

文件內容

本文介紹SolrCloud的功能使用及相關注意事項

在代碼文本框中如有顯示不全的,請在文本框中按Ctrl+A再復制.

版本

作者/修改人

日期

V1.0

gzk

2013-06-04

 

         SolrCloud是基於Solr和Zookeeper的分布式搜索方案,是Solr4.X的核心組件之一,它的主要思想是使用Zookeeper作為集群的配置信息中心。

                       

       基本可以用上面這幅圖來概述,這是一個擁有4個Solr節點的集群,索引分布在兩個Shard里面,每個Shard包含兩個Solr節點,一個是Leader節點,一個是Replica節點,此外集群中有一個負責維護集群狀態信息的Overseer節點,它是一個總控制器。集群的所有狀態信息都放在Zookeeper集群中統一維護。從圖中還可以看到,任何一個節點都可以接收索引更新的請求,然后再將這個請求轉發到文檔所應該屬於的那個Shard的Leader節點,Leader節點更新同時把文檔轉發給同屬於一個Shard的所有replicas節點。

SolrCloud有幾個特色功能:

1)集中配置

2)自動容錯

3)負載均衡 。

SolrCloud的配置過程

這里為了方便建了4個bat文件並分別命名為對應的角色,先說一下配置的參數:

參數名

說明

-Dbootstrap_confdir

是上傳本地的配置文件上傳到zookeeper中去,作為整個集群共用的配置文件

-Dcollection.configName

是上傳的Solr配置在集群中的名了,如不指定默認為collection1

-DzkRun

啟動一個嵌入式的Zookeeper服務器,它會作為solr服務器的一部分

-DnumShards

指定了集群的邏輯分組數目

-DzkHost

是指明了Zookeeper集群所在位置

  1. SolrCloudServer-Master-Zookeeper-Host.bat    
         
   
   

java     -Dbootstrap_confdir=./solr/skyCore/conf -Dcollection.configName=myconf     -DzkRun -DzkHost=localhost:9983,localhost:8574,localhost:9900 -DnumShards=2     -jar start.jar

   
   

 

       上面的意思是啟動一個主SolrCloud服務同時啟動內嵌的Zookeeper服務,並上傳本地的Solr配置文件到Zookeeper集群中,其中還配置了3個Zookeeper服務器組成一個集群,確保Solr集群信息的高可用性和容錯性。當Zookeeper服務為3個以上時,能夠更好的實現容災問題,當為3個Zookeeper服務時掛掉其中一個Zookeeper集群服務還會正常運行,當為5個Zookeeper服務時掛掉兩個還是可以正常運行,就像盤陣的Raid機制一樣.只有當所有配置的Zookeeper服務都啟動后整個服務才會繼續運行下去.

  1. SolrCloudServer-Slave-Zookeeper-Host-7574.bat

   

         
   
   

java -Djetty.port=7574 -DzkRun     -DzkHost=localhost:9983,localhost:8574,localhost:9900 -jar start.jar

   
   

 

         上面的意思是啟動一個主SolrCloud服務同時啟動內嵌的Zookeeper服務,其中還配置了3個Zookeeper服務器地址.

  1. SolrCloudServer-Slave-Zookeeper-Host-8900.bat

   

         
   
   

java -Djetty.port=8900 -DzkRun     -DzkHost=localhost:9983,localhost:8574,localhost:9900 -jar start.jar

   
   

 

           上面的意思是啟動一個主SolrCloud服務同時啟動內嵌的Zookeeper服務,其中還配置了3個Zookeeper服務器地址.

  1. SolrCloudServer.bat

   

         
   
   

java -Djetty.port=7500     -DzkHost=localhost:9983,localhost:8574,localhost:9900 -jar start.jar

   
   

 

         上面的意思是啟動一個主SolrCloud服務.並配置了Zookeeper服務器所在.       當服務啟動成功后可以在管理界面中SolrCloud情況,通過Cloud->Tree可以查看當前詳細的服務情況,如圖:

 

       通過上面的圖我們可以看到當前有兩個shard,每個shard下面有兩個節點,還可以看到剛才配置中指定的myconf名稱,點開后就可以看到上傳的配置文件了,點擊下面第一個節點都可以看到

 

集群狀態json:

   

         
   
   

{"skyCore":{

   

        "shards":{

   

          "shard1":{

   

            "range":"80000000-ffffffff",

   

            "state":"active",

   

            "replicas":{

   

              "10.0.4.84:8983_solr_skyCore":{

   

                "shard":"shard1",

   

                "state":"active",

   

                "core":"skyCore",

   

                "collection":"skyCore",

   

                "node_name":"10.0.4.84:8983_solr",

   

                "base_url":"http://10.0.4.84:8983/solr"},

   

              "10.0.4.84:7500_solr_skyCore":{

   

            "shard":"shard1",

   

                "state":"active",

   

                "core":"skyCore",

   

                "collection":"skyCore",

   

                "node_name":"10.0.4.84:7500_solr",

   

                "base_url":"http://10.0.4.84:7500/solr",

   

                "leader":"true"}}},

   

          "shard2":{

   

            "range":"0-7fffffff",

   

            "state":"active",

   

            "replicas":{

   

              "10.0.4.84:7574_solr_skyCore":{

   

                "shard":"shard2",

   

                "state":"active",

   

                "core":"skyCore",

   

                "collection":"skyCore",

   

            "node_name":"10.0.4.84:7574_solr",

   

                "base_url":"http://10.0.4.84:7574/solr"},

   

              "10.0.4.84:8900_solr_skyCore":{

   

                "shard":"shard2",

   

                "state":"active",

   

                "core":"skyCore",

   

                "collection":"skyCore",

   

                "node_name":"10.0.4.84:8900_solr",

   

                "base_url":"http://10.0.4.84:8900/solr",

   

                "leader":"true"}}}},

   

        "router":"compositeId"}}

   
   

 

SolrCloud集中式的配置信息

         SolrCloud集群的所有的配置存儲在ZooKeeper. 一旦SolrCloud節點啟動時配置了Dbootstrap_confdir參數, 該節點的配置信息將發送到ZooKeeper上存儲. 基它節點啟動時會應用ZooKeeper上的配置信息,這樣當我們改動配置時就不用一個個機子去更改了.

SolrCloud容災備份

       Shard Replica除了作為容災備份存在, 另外一個作用就是分散查詢請求, 提高整個集群對查詢的負載能力.

SolrCloud索引處理

       索引文檔的更新在Shard和Replica之間是自動和實時的.把一個doc可以發送到任何一個SolrCloud, 然后由SolrCloud完成剩下的事情. SolrCloud會自動選擇一個Shard進行分發任務,當一個Shard的leader收到文檔后同時也會把doc分發給當前Shard所有的副本.

SolrCloud檢索方式

有三種不同的檢索方式:

  1. 在所有Shared上進行檢索一個Core的數據

   

         
   
   

http://localhost:8983/solr/skyCore/select?q=*%3A*

   
   

 

  1. 在指定的Shared上進行檢索一個Core的數據

   

         
   
   

http://localhost:8983/solr/skyCore/select?q=*%3A*&shards=shard1,shard2

   
   

 

  1. 也可以使用shard的地址作為參數

   

         
   
   

http://localhost:8983/solr/skyCore/select?q=*%3A*&shards=     localhost:8983/solr,localhost:7574/solr

   
   

 

  1. 在指定地址的Shared上進行檢索,並支持負載一個Core的數據

   

         
   
   

http://localhost:8983/solr/skyCore/select?q=*%3A*&shards=localhost:8983/solr|localhost:8900/solr,localhost:7574/solr|localhost:7500/solr

   
   

 

  1. 在所有Shared上進行檢索指定的Core,並合並結果

   

         
   
   

http://localhost:8983/solr/skyCore/select?q=*%3A*&collection=TestCore,skyCore

   
   

 

  1. 當有shard沒有啟動時查詢是會報錯的.為了讓查詢能正常進行,在查詢時加入參數shards.tolerant=true就可以正常查詢了.

   

         
   
   

http://localhost:8983/solr/skyCore/select?q=*%3A*&shards.tolerant=true

   
   

 

SolrCloud的集合(SolrCores)管理API

  1. 添加集合

   

         
   
   

http://localhost:8983/solr/admin/collections?action=CREATE&name=mycollection&numShards=1&replicationFactor=4

   
   

 

參數名

說明

Name

要創建的集合名稱

numShards

指定集合Shard的數量

replicationFactor

指定每個Shard副本數量

maxShardsPerNode

每個Solr服務器節點上最大Shard數量

createNodeSet

還不明白什么用

collection.configName

配置的名稱(必須已存儲在ZooKeeper)使用這個新的集合。如果沒有提供創建操作將默認配置名稱的集合名稱。

 

  1. 刪除集合

   

         
   
   

http://localhost:8983/solr/admin/collections?action=DELETE&name=mycollection

   
   

 

  1. 重新加載

   

         
   
   

http://localhost:8983/solr/admin/collections?action=RELOAD&name=mycollection

   
   

動態添加SolrCore示例

 

在服務運行時新添加的MyCore分布在3個Shared上面每個兩個節點

   

         
   
   

http://localhost:8983/solr/admin/collections?action=CREATE&name=MyCore&numShards=3&replicationFactor=2

   
   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM