http://chenlb.blogjava.net/archive/2008/07/04/212398.html
solr
分布式其實是分發,這概念像Mysql的複製。所有的索引的改變都在主伺服器裡,所有的查詢都在從服務裡。從伺服器不斷地(定時)從主伺服器拉內容,以保
持資料一致。
先描述下我的環境:
solr-master(192.168.1.181), solr-slave(192.168.1.155), jdke1.6.0_06,
tomcat-5.5.26, solr-1.2
tomcat_home在 /home/chenlb/tomcat-5.5.26
solr_home在 /home/chenlb/solr-home
solr解壓後的目錄 /home/chenlb/solr-1.2.0
最好兩機可以ssh無密碼互動,ssh無密碼登入請看:http://www.blogjava.net/chenlb/archive/2008/07/03/212293.html
solr的分發是用rsync的。
快照與分發過程:
1.snapshooter
命令在主伺服器產
生快照。一般在commit和optimize之後被solr調用。
2.snappuller
命令在從伺服器運行,所做的事是從主伺服器拉最新的快照。 用rsync的daemon模式來運行可以獲得更好的效能與更底的CPU利用率。
3.snapinstaller
命令在從伺服器運行,當從伺服器從主伺服器拉完快照後才執行。它會通知本地Solr伺服器開啟一個新的index
reader,然後預熱這個新index reader的緩衝,此時有請求,原來的index reader繼續為這此請求服務。一但預熱完成,Solr
啟用新的index reader,舊的被消亡。
Solr 的Distribution(分發)
在Scripts檔案裡記錄。在solr_home/conf/scripts.conf檔案裡。
我現在這樣配置:
user
=
chenlb//各自伺服器hostname
solr_hostname
=
localhost
solr_port
=
8080
rsyncd_port
=
18080//slaver本地索引檔案路徑
data_dir
=/
home
/
chenlb
/
solr
-
home
/
data
webapp_name
=
solr
master_host
=
192.168
.
1.181
master_data_dir
=/
home
/
chenlb
/
solr
-
home
/
data
master_status_dir
=/
home
/
chenlb
/
solr
-
home
/
logs
上面的配置兩機都一樣。
1.安裝好solr後啟動它們,怎樣在tomcat安裝solr請看:http://www.blogjava.net/chenlb/archive/2008/03/25/188459.html
[chenlb@solr
-
master
~
]$ .
/
tomcat
-
5.5
.
26
/
bin
/
startup.sh
啟用且啟動rsync
[chenlb@solr
-
master
~
]$ .
/
solr
-
home
/
bin
/
rsyncd
-
enable
-
u chenlb
-
v
[chenlb@solr-master
~]$ ./solr-home/bin/rsyncd-start -u chenlb -v
[chenlb@solr
-
slave
~
]$ .
/
tomcat
-
5.5
.
26
/
bin
/
startup.sh
2.solr-master
先修改post.sh
[chenlb@solr
-
master
~
]$ cd solr
-
1.2
.0
/
example
/
exampledocs
/
[chenlb@solr
-
master exampledocs]$ vi post.sh
[chenlb@solr
-
master exampledocs]$
#
把http://localhost:8389/solr/update改下面的
http:
//
localhost:
8080
/
solr
/
update
提交資料
[chenlb@solr
-
master exampledocs]$ .
/
post.sh
*
.xml
產生快照
[chenlb@solr
-
master
~
]$ .
/
solr
-
home
/
bin
/
snapshooter
-
u chenlb
-
v
說明:由於<listener event="postCommit"
class="solr.RunExecutableListener">...</listener>沒有設定成功(出現
java.io.IOException: Cannot run program "snapshooter" (in directory
"solr/bin"): java.io.IOException: error=2, No such file or
directory,現在還沒解決),可以只能手動產生快照(當然也可以cron)
3.solr-slave
啟用快照下拉
[chenlb@solr
-
slave
~
]$ .
/
solr
-
home
/
bin
/
snappuller
-
enable
-
u chenlb
-
v
拉快照
[chenlb@solr
-
slave
~
]$ .
/
solr
-
home
/
bin
/
snappuller
-
u chenlb
-
v
安裝
[chenlb@solr
-
slave
~
]$ .
/
solr
-
home
/
bin
/
snapinstaller
-
u chenlb
-
v
現在可以在solr-slave裡看結果了:
http://192.168.1.155:8080/solr/select?q=solr
http://192.168.1.181:8080/solr/select?q=solr
看結果是否一樣。