solr集群搭建(SolrCloud)


  SolrCloud(solr 雲)是 Solr 提供的分布式搜索方案,當你需要大規模,容錯,索引量很大,搜索請求並發很高時可以使用SolrCloud。它是基於 Solr 和Zookeeper的分布式搜索方案,它的主要思想是使用 Zookeeper作為集群的配置信息中心。它有幾個特色功能:

  1)集中式的配置信息

  2)自動容錯

  3)近實時搜索

  4)查詢時自動負載均衡

SolrCloud系統架構圖:

          

  我們可以看到上面的結構圖是 4個solr組成一個solrcloud,每個solr里只有一個core,一個shard指向2個solr服務,一主一從,以zookeeper集群作為注冊中心。

  【1】物理結構

      4個 Solr 實例( 每個實例包括1個 Core  也可以多個),組成一個 SolrCloud。

  【2】邏輯結構

      索引集合包括兩個 Shard分片(shard1 和 shard2),shard1 和 shard2 分別由4個Core 組成,其中一個 Leader 兩個 Replication,Leader 是由 zookeeper 選舉產生,zookeeper 控制每個shard上的Core 的索引數據一致,解決高可用問題。用戶發起索引請求分別從 shard1 和 shard2 上獲取,解決高並發問題。

  【2.1】Collection  

      Collection 在 SolrCloud 集群中是一個邏輯意義上的完整的索引結構。它常常被划分為一個或多個 Shard(分片),它們使用相同的配置信息。比如:針對商品信息搜索可以創建一個 collection。即: collection=shard1+shard2+....+shardX

  【2.2】 Core

      每個 Core 是 Solr 中一個獨立運行單位,提供索引和搜索服務。一個 shard 需要由一個Core 或多個 Core 組成。由於 collection 由多個 shard 組成所以 collection 一般由多個 core 組成。

  【2.3】Master 或 Slave

      Master 是 master-slave 結構中的主結點(通常說主服務器),Slave 是 master-slave 結構中的從結點(通常說從服務器或備服務器)。同一個 Shard 下 master 和 slave 存儲的數據是一致的,這是為了達到高可用目的。

  【2.4】Shard

      Collection 的邏輯分片。每個 Shard 被化成一個或者多個 replication,通過選舉確定哪個是 Leader。   

安裝步驟

    准備工作   1. 安裝好jdk和zookeeper   2. 在win上安裝好了solr 這些准備工作都可以在樓主的Linux入門安裝分類里面找到。

  1. 把配置好的solr復制成4份,修改每個tomcat的原運行端口8085 8080 8009  ,分別為

    8105  8180  8109

    8205  8280  8209

    8305  8380  8309

    8405  8480  8409

  因為我們是偽集群所以要靠端口區分,如果是真實集群運行在不同服務器上,它們的ip不同,是不需要改tomcat端口的。

  2. 我們是用zk作為solr的管理中心,所以要修改tomcat/bin/catalina.sh的運行參數。4個文件都一樣!

 

  3. 修改4個solrhome的配置文件

  4. 剛剛三步已經把所有的准備工作都做完了,接下來我們把solr全部署到服務器上面去。

    4.1 創建文件夾       mkdir /usr/local/wulei/solrcloud    把,4個solr服務和solr原生文件全上傳到該文件夾里面,。

      

    4.2 解壓這4個文件

        unzip solr1.zip

        unzip solr2.zip

        unzip solr3.zip

        unzip solr4.zip

   5. 給4個solr分別指定solrhome的路徑, 我這里以第一個為例:

      vim /usr/local/wulei/solrcloud/solr1/webapps/solr/WEB-INF/web.xml

      

  6. 經過上面 5 步,solr就配置好了。為了讓zookeeper 統一管理配置文件。需要把剛剛mysolrhome/collection1/conf 目錄上傳到zookeeper中。(主要是solrCloud的核心配置文件solrconfig.xml和schema.xml),由於我們4個solr的solrhome都一樣,所以我們這里無論傳哪一個都一樣。當我們上傳到zk管理之后,solr本地的配置屬性就失效了,而是直接讀取zk的配置。我們下載solr時,它里面內置了工具上傳配置文件:solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh。我們剛剛上傳的solr-4.10.3.tgz.tgz就是做這個事的。

    6.1 解壓  tar -zxvf solr-4.10.3.tgz.tgz

    6.2 進入zkcli.sh所在目錄: cd /usr/local/wulei/solrcloud/solr-4.10.3/example/scripts/cloud-scripts

    6.3  執行上傳命令: (必須保證連接的zookeeper已經啟動了)

       ./zkcli.sh -zkhost 192.168.25.100:2181,192.168.25.100:2182,192.168.25.100:2183 -cmd upconfig -confdir /usr/local/wulei/solrcloud/solr1/mysolrhome/collection1/conf -confname mysolrconf

    6.4    分別啟動4個solr服務。(瀏覽器連接有點慢,樓主這里花了大概45秒)

【分片配置】

1. 創建新的 Collection 進行分片處理。

在瀏覽器輸入以下地址,可以按照我們的要求  創建新的Collection 
http://192.168.25.100:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
參數:
name:將被創建的集合的名字
numShards:分片的個數
replicationFactor:從節點的個數。

 

刪除分片規則

http://192.168.25.100:8280/solr/admin/collections?action=DELETE&name=collection1

【模擬集群異常測試】

(1)停止第一個tomcat節點,看查詢是否能正常工作  -- 能!因為還有從節點

(2)停止第三個tomcat節點,看看查詢能夠正常工作  -- 不能,因為整個一片數據全沒了,無法正常工作。

(3)恢復第三個tomcat節點,看看能否正常工作。恢復時間會比較長,大概2分半到3分鍾之間。請耐心等待。


免責聲明!

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



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