天天看點

solr cloud模式踩坑之路(Atlas)

**主要解決兩個Bug(bug糊裡糊塗産生的===========> 建立索引核心失誤後的教訓!!!)**

1.bug的由來:

目的:部署Atlas2.0建立集合 --》索引建立

建立指令:

$SOLR_BIN/solr create -c vertex_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor
  $SOLR_BIN/solr create -c edge_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor
  $SOLR_BIN/solr create -c fulltext_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor
           

(1) bug1:

solr cloud模式踩坑之路(Atlas)

下附清晰圖:

solr cloud模式踩坑之路(Atlas)

(2)Bug2 一起讨論用UI界面建立集合索引時,建立了新的Bug

bug如圖:《在解除安裝solr後重新搭建solr cloud仍出現以下情況》

==========》

莫名其妙出現了此bug:

solr cloud模式踩坑之路(Atlas)

附清晰原圖:

solr cloud模式踩坑之路(Atlas)

**2.嘗試各種解決方案,各種百度,翻牆。《百度前幾頁帶關鍵字的,外網全部看完,然而========> No解決問題》**

3.嘗試從新的思路尋找着手點:

1)既然solr是cloud模式,并且由zookeeper來進行管理,進而從zookeeper來入手尋找突破點

進入zookeeper,zkCli.sh 進入用戶端 檢視zookeeper裡具體配置檔案類資訊

solr cloud模式踩坑之路(Atlas)
solr cloud模式踩坑之路(Atlas)

4.根據以上思路,順藤摸瓜,決定将 solr cloud模式詳細資訊進行了閱讀深究:

solr搭建+zk

http://www.chepoo.com/solrcloud-tomcat-install-3.html

接着上一篇文章:solrcloud在tomcat下安裝(二)

現在來說說第三種情況:多台zookeeper伺服器,多台solr伺服器

多台zookeeper伺服器具備系統高可靠性,高可用性,任意一台zookeeper伺服器挂掉,系統會選舉出一台伺服器為leader。任意一台solr伺服器挂掉,系統還是可以用的。

1.在分别在機器上192.168.1.2,192.168.1.3,192.168.1.4安裝tomcat和solr。具體請參考:tomcat7下安裝solr 4.3

2.更改192.168.1.2的solr_home目錄下的solr.xml檔案,将hostPort端口更新為8080;host改為本機192.168.1.2,改為192.168.1.2原因是,假如你本機有多個ip,host可能被認識成别的ip。

按照以上方法,分别配置192.168.1.3,192.168.1.4的solr_home目錄下的solr.xml檔案

3.更改192.168.1.2的solr_home目錄下的zoo.cfg檔案,增加如下内容:

server.1=192.168.1.2:2888:3888

server.2=192.168.1.3:2888:3888

server.3=192.168.1.4:2888:3888

假如你是單機僞分布式

server.1=localhost:2888:3888

server.2=localhost:2889:3889

server.3=localhost:2889:3889

zoo.cfg配置參數詳解:

tickTime:心跳時間,為了確定連接配接存在的,以毫秒為機關,最小逾時時間為兩個心跳時間

initLimit:多少個心跳時間内,允許其他server連接配接并初始化資料,如果ZooKeeper管理的資料較大,則應相應增大這個值

clientPort:服務的監聽端口

dataDir:用于存放記憶體資料庫快照的檔案夾,同時用于叢集的myid檔案也存在這個檔案夾裡(注意:一個配置檔案隻能包含一個dataDir字樣,即使它被注釋掉了。)

dataLogDir:用于單獨設定transaction log的目錄,transaction log分離可以避免和普通log還有快照的競争

syncLimit:多少個tickTime内,允許follower同步,如果follower落後太多,則會被丢棄。

4.更改192.168.1.2的solr_home目錄,建立zoo_data目錄(第一次的時候需要建立),在zoo_data目錄建立myid檔案,設定内容為1。

sudo sh -c ‘echo “1” >> myid’

5.更改192.168.1.3的solr_home目錄下的zoo.cfg檔案,增加如下内容:

server.1=192.168.1.2:2888:3888

server.2=192.168.1.3:2888:3888

server.3=192.168.1.4:2888:3888

6.更改192.168.1.3的solr_home目錄,建立zoo_data目錄(第一次的時候需要建立),在zoo_data目錄建立myid檔案,設定内容為2。

sudo sh -c ‘echo “2” >> myid’

7.更改192.168.1.4的solr_home目錄下的zoo.cfg檔案,增加如下内容:

server.1=192.168.1.2:2888:3888

server.2=192.168.1.3:2888:3888

server.3=192.168.1.4:2888:3888

8.更改192.168.1.4的solr_home目錄,建立zoo_data目錄(第一次的時候需要建立),在zoo_data目錄建立myid檔案,設定内容為3。

sudo sh -c ‘echo “3” >> myid’

9.在192.168.1.2的tomcat\bin目錄下,編輯catalina.bat檔案,修改最開頭的set JAVA_OPTS為:

set JAVA_OPTS=-Dbootstrap_confdir=e:/sdk/solrhome/collection1/conf -Dcollection.configName=xq -DzkRun -DzkHost=192.168.1.2:9080,192.168.1.3:9080,192.168.1.4:9080 -DnumShards=1

在linux下為:

export JAVA_OPTS=-Dbootstrap_confdir==/home/develop/xq/solrhome/collection1/conf -Dcollection.configName=xq -DzkRun -DzkHost=192.168.1.2:9080,192.168.1.3:9080,192.168.1.4:9080 -DnumShards=1

10.在192.168.1.3的tomcat\bin目錄下,編輯catalina.bat檔案,修改最開頭的set JAVA_OPTS為:

set JAVA_OPTS=-DzkRun -DzkHost=192.168.1.2:9080,192.168.1.3:9080,192.168.1.4:9080

在linux下為:

export JAVA_OPTS=-DzkRun -DzkHost=192.168.1.2:9080,192.168.1.3:9080,192.168.1.4:9080

11.在192.168.1.4的tomcat\bin目錄下,編輯catalina.bat檔案,修改最開頭的set JAVA_OPTS為:

set JAVA_OPTS=-DzkRun -DzkHost=192.168.1.2:9080,192.168.1.3:9080,192.168.1.4:9080

在linux下為:

export JAVA_OPTS=-DzkRun -DzkHost=192.168.1.2:9080,192.168.1.3:9080,192.168.1.4:9080

12.清理之前運作時zookeeper生成的節點資訊内容。删除下各個tomcat下的solr_home下的zoo_data檔案中的version-2檔案夾即可。

13.到此全部配置完成,啟動3個tomcat後,通路http://192.168.1.3:8080/solr/#/~cloud 即可

備注:當你啟動tomcat後,看到報錯,connection refused,沒有關系,zookeeper需要等待其他另個節點的加入,全部啟動之後就正常了。

zookeeper-msg

configs:儲存上傳的配置檔案資訊

clusterstate.json:叢集狀态json

aliases:别名json

live_node:當solr伺服器啟動的時候,會注冊到這裡

overseer:儲存shard資訊

overseer_elect:節點選舉

collections:所有的collection

我們也可以用http請求去建立一個collection。例如:

http://192.168.1.2:8080/solr/admin/collections?action=CREATE&name=xq_test&numShards=1&replicationFactor=3&maxShardsPerNode=3

本文固定連結: http://www.chepoo.com/solrcloud-tomcat-install-3.html | IT技術精華網

5.根據以上檔案,提取到了價值資訊:

找到zookeeper管理的solr部分具體什麼作用,管理的什麼,具體含義:

具體提取内容為:

zookeeper-msg
configs:儲存上傳的配置檔案資訊
clusterstate.json:叢集狀态json
aliases:别名json
live_node:當solr伺服器啟動的時候,會注冊到這裡
overseer:儲存shard資訊
overseer_elect:節點選舉
collections:所有的collection
           
solr cloud模式踩坑之路(Atlas)

根據上方提取價值資訊,尋找突破點,進入zkCli.sh

ls  /
           

Bug1:

根據用戶端查詢到消息,參考報錯資訊。

原來建立三個索引,隻建立成功一個:

$SOLR_BIN/solr create -c vertex_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor

**$SOLR_BIN/solr create -c edge_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor
  $SOLR_BIN/solr create -c fulltext_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor**
           

發現後兩個中正好缺失報錯資訊中的資源

schema.xml 檔案

報錯資訊:

solr cloud模式踩坑之路(Atlas)

後兩個索引zk client ls檢視 資訊如下圖:

solr cloud模式踩坑之路(Atlas)

索引 edge_index 明顯缺失了 schema.xml

solr cloud模式踩坑之路(Atlas)

索引 fulltex_index 也缺失了 schema.xml

特殊聲明:

建立索引核心時,需要

solrconfig.xml 和 schema.xml 兩個配置資訊

其中缺失了其一都不行!!!!!

在未建立 索引前,zkCli.sh 進入 檢視 ls /時

裡面是沒有 configs的

configs的檔案,由建立索引語句時

$SOLR_BIN/solr create -c vertex_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor
           

從SOLR_CONF 直接上傳至 zk。

到此,bug1 算是解決。

6.但是,隻有将bug2 也解決了,索引才可以建立,以上是分析bug1的過程。

bug2:

solr cloud模式踩坑之路(Atlas)

無論在建立,還是執行删除索引語句時,都會報這個錯:

根據以上的總結;

首先 将 zkCli.sh 進入 zk ls / 檢視

将collections集合删除(此集合是問題集合)

後來做了如下嘗試,

将zk 管理的 ls / 下的configs 目錄下檔案都删除

僅僅留下

ls /configs

vertex_index edge_index fulltext_index

但在建立索引的時候,仍報錯bug2.

初步猜測,因為 ls /configs下的 vertex_index edge_index fulltext_index 本身就存在了問題,于是乎,直接執行指令

rmr /configs 将此檔案直接删除,使在執行建立索引指令時候,重新上傳 需要solr的配置檔案到 zk中。

solr cloud模式踩坑之路(Atlas)

$SOLR_BIN/solr create -c vertex_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor

$SOLR_BIN/solr create -c edge_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor

$SOLR_BIN/solr create -c fulltext_index -d SOLR_CONF -shards #numShards -replicationFactor #replicationFactor

執行指令,重新上傳了 configs到zk中,并建立了集合

solr cloud模式踩坑之路(Atlas)

索中都有了 建立集合的重要配置檔案:

solrconfig.xml 和 schema.xml 兩個配置資訊

此時建立成功!!

如此: Bug1和Bug2都解決了!!!!!!!!!!!!哈哈!

建立截圖如下:

========================>>>>>>>>>>>>>>>>>>>>>

solr cloud模式踩坑之路(Atlas)
solr cloud模式踩坑之路(Atlas)

備注:

寫路比較通俗,但是自己親身解決bug深切感受!

寫之,希望能給你我帶來幫助!!!

Best wishes for you !

繼續閱讀