使用solrcloud有幾點須要注意的: 索引數據量比較大;配置是統一的(zookeeper會保持配置信息的一致性)java
若是索引數據量不大,而且需求變更比較多,field要常常變更的能夠考慮用multicore的模式。web
規劃apache
虛擬機環境centos6.2 64位系統 三臺1G內存的虛機 網卡模式是NAT(測試環境推薦使用NAT)centos
192.168.139.121 master tomcat
192.168.139.122 slave1app
192.168.139.123 slave2curl
修改 /etc/hosts 文件加入上面的域名webapp
修改主機名 vi /etc/sysconfig/network分佈式
切記關閉防火牆(不然zookeeper啓動 zkServer.sh status查看狀態會找不到各自的角色)ide
Zookeeper集羣的機器個數推薦是奇數臺,半數機器掛掉,服務是能夠正常提供的
全部須要的軟件首先上傳到 /soft下
使用的zookeeper.3.4.5.tar.gz 穩定版
tar –zxvf zookeeper.3.4.5.tar.gz
cd zookeeper.3.4.5/conf
mv zoo_sample.cfg zoo.cfg //修改配置文件名
mkdir /soft/zookeeper-data //zookeeper的數據存儲位置
mkdir /soft/zookeeper-data/logs //zookeeper的日誌文件位置
vi /zookeeper.3.4.5/conf/zoo.cfg
修改
dataDir=/soft/zookeeper-data
dataLogDir=/soft/zookeeper-data/logs
//添加zookeeper的集羣配置
server.1=192.168.139.121:2888:3888
server.2=192.168.139.122:2888:3888
server.3=192.168.139.123:2888:3888
或者用域名
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
而後分別在每臺機器的/soft/zookeeper-data 下建立myid文件存儲該機器的標識碼 好比server.1 的標識碼就是 「1」 myid文件的內容就一行 「1」
配置完一臺可使用scp 把配置發到其餘兩臺(使用scp前提是配置了無密鑰通訊的機器之間,省的來回換機子麻煩)。
Scp –r /soft/zookeeper.3.4.5 master@slave1:/soft/zookeeper.3.4.5
Scp –r /soft/zookeeper.3.4.5 master@slave2:/soft/zookeeper.3.4.5
或者每臺手動作修改
配置完成啓動服務(啓動切記關閉全部的防火牆,否則啓動狀態會沒有角色說明)
Cd /soft/zookeeper.3.4.5/bin
./zkServer.sh start
//查看啓動狀態
./zkServer.sh status
查看啓動的監聽客戶端的端口是2181 默認
Mode:leader表示的是該zookeeper在集羣中的角色
像上述這樣表名zookeeper的集羣啓動成功。
解壓D:\apache-solr-4.3.0\example\webapps\solr.war
並將solr-4.3.1\example\lib\ext下面的jar 拷貝到解壓後的solr/WEB-INF/lib下
建立/usr/local/solrcloud目錄
在目錄/usr/local/solrcloud/config-files 放置solr的全部配置文件好比solrconfig.xml
該目錄下的全部配置文件是 D:\apache-solr-4.3.0\example\solr\collection1\conf 下的全部文件
schema.xml 等
在目錄/usr/local/solrcloud/solr-lib放置solr/WEB-INF/lib下的全部jar包
將整理好的solr項目拷貝到/soft/apache-tomcat-6.0.37/webapps下
建立solr的數據目錄/soft/solr-cores
並在該目錄下生成solr.xml solr的核配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true">
<logging enabled="true">
<watcher size="100" threshold="INFO" />
</logging>
<cores adminPath="/admin/cores" host="${host:}" hostPort="8080" hostContext="${hostContext:solr}" zkClientTimeout="${zkClientTimeout:15000}">
</cores>
</solr>
在/soft/apache-tomcat-6.0.37/conf/Catalina/localhost
建立solr.xml
Solr/home的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/soft/apache-tomcat-6.0.37/webapps/solr" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/soft/solr-cores" override="true"/>
</Context>
同時修改tomcat/bin/cataina.sh
JAVA_OPTS="-DzkHost=master:2188,slave1:2188,slave2:2188"
把修改好的tomcat 打包tomcat.zip 發送到slave1,slave2
Scp tomcat.zip root@slave1:/soft/
Scp tomcat.zip root@slave2:/soft/
./zkCli.sh -server master:2188 //鏈接zookeeper查看上面的文件存儲狀況
上傳配置文件到zookeeper
java -classpath .:/usr/local/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost master:2188 -confdir /usr/local/solrcloud/config-files/ -confname myconf
鏈接zookeeper的配置內容
java -classpath .:/usr/local/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection collection -confname myconf -zkhost master:2188
cd apache-tomcat-6.0.37/bin
./startup.sh
訪問solr url:http://192.168.139.121:8080/solr
由於沒有穿件任何核和節點因此 會有以下的提示頁
//建立數據集collection 並指定 分片數,冗餘節點數
curl 'http://192.168.139.121:8080/solr/admin/collections?action=CREATE&
name=mycollection&numShards=1&replicationFactor=1&maxShardsPerNode=1’
生成的節點信息 (單節點的)
多節點
三臺機器的狀況:
java -classpath .:/usr/local/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost master:2188,slave1:2188,slave2:2188 -confdir /usr/local/solrcloud/config-files/ -confname myconf
鏈接zookeeper的配置信息
java -classpath .:/usr/local/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection collection -confname myconf -zkhost master:2188,slave1:2188,slave2:2188
建立collection 指定最多3個分片和冗餘節點
curl 'http://192.168.139.121:8080/solr/admin/collections?action=CREATE&name=collection&numShards=3&replicationFactor=3&maxShardsPerNode=3'
執行完無報錯信息 說明成功了
建好的collection 還建立未分片
正常的建立效果應該是這樣的
/soft/solr-cores/下會多出索引的存儲目錄
建立分片和副本
//122,123上
//建立121的分片和副本
curl 'http://192.168.139.122:8080/solr/admin/cores?action=CREATE&name=collection_shard1_replica_2&collection=collection&shard=shard1'
curl 'http://192.168.139.123:8080/solr/admin/cores?action=CREATE&name=collection_shard1_replica_2&collection=collection&shard=shard1'
//121,123
//建立122的分片和副本
curl 'http://192.168.139.121:8080/solr/admin/cores?action=CREATE&name=collection_shard2_replica_2&collection=collection&shard=shard2'
curl 'http://192.168.139.123:8080/solr/admin/cores?action=CREATE&name=collection_shard2_replica_2&collection=collection&shard=shard2'
//122,121
//建立123的分片和副本
curl 'http://192.168.139.121:8080/solr/admin/cores?action=CREATE&name=collection_shard3_replica_3&collection=collection&shard=shard3'
curl 'http://192.168.139.122:8080/solr/admin/cores?action=CREATE&name=collection_shard3_replica_3&collection=collection&shard=shard3'