</table>
這個例子簡單地創建了由兩個Solr服務器組成的集群,Solr服務器實現了一個集合(A Collection)的兩個不同片(shard).下面,展示了有關的實現步驟。 需要兩臺Solr服務器,可以復制一下已有example(下載的Solr4.2包,可以查看到這個目錄)。進入解壓后的目錄后,在cygwin窗口執行命令。
cp -r example example01
下面這個命令將會啟動Solr服務器以及啟動一個新的Solr集群。
java -Djetty.port=8800 -Dbootstrap_confdir=./solr/collection1/conf
-Dcollection.configName=myconf-DzkRun -DnumShards=2 -jar start.jar
· -DzkRun 觸發嵌入在Solr服務器中的Zookeeper運行。
· -Dbootstrap_confdir=./solr/collection1/conf 既然我們還沒在Zookeeper中進行配置,這個參數引起本地的配置目錄./solr/上傳并且作為“myconfig”配置。這個名字“myconfig”是來自"collection.configName"得參數值。
· -Dcollection.configName=myconf setsthe config to use for the new collection. Omitting this param will cause theconfig name to default to "configuration1". 設置新的集合(Collection)的配置去使用,忽略這個配置將會引起配置名默認為"configuration1"。
· -DnumShards=2我們計劃分離索引到幾個邏輯分區,這個指定了對應數量。
· -Djetty.port=8800設置Jetty服務器運行的端口,默認是8983。
瀏覽http://localhost:8800/solr/#/~cloud?view=rgraph,可以看到集群的狀態。點擊Tree,會發現我們的配置文件目錄已經上傳上去了,對應的config目錄也生產了。
</table>
現在,然我們啟動第二個Solr服務器。它將會自動地賦給shard2,原因是我們沒有具體指定這個shard id值。
java-Djetty.port=7800 -DzkHost=localhost:9983 -jar start.jar
當我們指定-DzkHost=localhost:9800,是更具shard的Zookeeper的值來指定的。在沒
有指定Zookeeper端口的情況,嵌入在Solr中的Zookeeper默認為Sorl端口+1000,所以這里的Zookeeper的端口應該是9800。
接下來,建立一些索引文件。為了匆忙地完成,我們才采用 CloudSolrServer實現。
cd exampledocs
java-Durl=http://localhost:8800/solr/collection1/update -jar post.jar *.xml
在瀏覽器中輸入:http://localhost:8800/solr/collection1/select?q=*:*&wt=xml,可以得到以下結果。

2.2 簡單帶有片重復(shard replicas)的兩個片集群

這個例子將會通過復制shard1和shard2來構建先前的例子,額外的備份的shard被用做來實現高有效性和容錯性,或是簡單地提升分布式查詢能力。
首先,保持先前的例子處于運行中。使用命令,復制這兩個實例。
cp -r example01example01_replica
cp -r example02example02_replica
在每個彼此的窗口中開啟這兩個新的不同端口的服務器。
java -Djetty.port=8801-DzkHost=localhost:9800 -jar start.jar
java -Djetty.port=7801-DzkHost=localhost:9800 -jar start.jar

瀏覽Zookeeper窗口http://localhost:8800/solr/#/~cloud,發現有效shard上圖所示。此刻,窗口的查詢日子和有關節點信息如下圖。



你可以嘗試去關閉一個節點,看看查詢是否失效。一旦一個服務器中斷了,發送請求將會發送到剩余啟動的服務器。這時,你會繼續看到整個一樣的結果。如果我們 停掉某個幾點的所有服務器,這個請求對于這些服務器將會得到503錯誤。在shards中,返回僅僅這些存在于有效剩余有效shards的文檔,添加跟隨 的查詢參數便可以生效。
shards.tolerant=true
SolrCloud使用的是實施細節的領導(Leader)和監督者。這意味著,一些nodes/replicas能夠扮演特殊的角色。你沒有必要擔心是 否這個失效的服務器是領導者還是分布式的監督者—如果你碰巧是他們中的一個失效,他們自動透明地選擇新的領導者或者新的監督者來回復使用者以及能無縫地負 責他們各自的工作。任何Solr實例都能提升作為他們對于角色之一。
本文由用戶
jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
sesese色