**主要解決兩個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:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn1UNrRUT10keNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5czMyEjM0EjMxETOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
下附清晰圖:
(2)Bug2 一起讨論用UI界面建立集合索引時,建立了新的Bug
bug如圖:《在解除安裝solr後重新搭建solr cloud仍出現以下情況》
==========》
莫名其妙出現了此bug:
附清晰原圖:
**2.嘗試各種解決方案,各種百度,翻牆。《百度前幾頁帶關鍵字的,外網全部看完,然而========> No解決問題》**
3.嘗試從新的思路尋找着手點:
1)既然solr是cloud模式,并且由zookeeper來進行管理,進而從zookeeper來入手尋找突破點
進入zookeeper,zkCli.sh 進入用戶端 檢視zookeeper裡具體配置檔案類資訊
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
根據上方提取價值資訊,尋找突破點,進入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 檔案
報錯資訊:
後兩個索引zk client ls檢視 資訊如下圖:
索引 edge_index 明顯缺失了 schema.xml
索引 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:
無論在建立,還是執行删除索引語句時,都會報這個錯:
根據以上的總結;
首先 将 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_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中,并建立了集合
索中都有了 建立集合的重要配置檔案:
solrconfig.xml 和 schema.xml 兩個配置資訊
此時建立成功!!
如此: Bug1和Bug2都解決了!!!!!!!!!!!!哈哈!
建立截圖如下:
========================>>>>>>>>>>>>>>>>>>>>>
備注:
寫路比較通俗,但是自己親身解決bug深切感受!
寫之,希望能給你我帶來幫助!!!
Best wishes for you !