CentOS 6学习笔记(十四)–CentOS6环境搭建Solr集群(SolrCloud)
安装 Solr 单机版
建议阅读我之前发布的笔记:
CentOS 6学习笔记(十)–CentOS6环境安装Solr
搭建 ZooKeeper 集群
建议阅读我之前发布的笔记:
CentOS 6学习笔记(十三)–CentOS6环境搭建ZooKeeper集群
搭建 Solr 集群 (SolrCloud)
本笔记通过在单台服务器上运行 4 个 Solr 实例的方式来模拟 SolrCloud。
创建与配置 Tomcat 实例
创建 4 例 Tomcat
#复制4个tomcat
cp -r /usr/local/apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat01
cp -r /usr/local/apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat02
cp -r /usr/local/apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat03
cp -r /usr/local/apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat04
cp -r /usr/local/solr/tomcat/webapps/solr /usr/local/solr-cloud/tomcat01/webapps/
cp -r /usr/local/solr/tomcat/webapps/solr /usr/local/solr-cloud/tomcat02/webapps/
cp -r /usr/local/solr/tomcat/webapps/solr /usr/local/solr-cloud/tomcat03/webapps/
cp -r /usr/local/solr/tomcat/webapps/solr /usr/local/solr-cloud/tomcat04/webapps/
配置实例 1
vim /usr/local/solr-cloud/tomcat01/conf/server.xml
配置以下内容
<Server port="8105" shutdown="SHUTDOWN">
<Connector port="8180" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
配置实例 2
vim /usr/local/solr-cloud/tomcat02/conf/server.xml
配置以下内容
<Server port="8205" shutdown="SHUTDOWN">
<Connector port="8280" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8209" protocol="AJP/1.3" redirectPort="8443" />
配置实例 3
vim /usr/local/solr-cloud/tomcat03/conf/server.xml
配置以下内容
<Server port="8305" shutdown="SHUTDOWN">
<Connector port="8380" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8309" protocol="AJP/1.3" redirectPort="8443" />
配置实例 4
vim /usr/local/solr-cloud/tomcat04/conf/server.xml
配置以下内容
<Server port="8405" shutdown="SHUTDOWN">
<Connector port="8480" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8409" protocol="AJP/1.3" redirectPort="8443" />
创建与配置 Solrhome
创建 4 例 Solrhome
cp -r /usr/local/solr/solrhome /usr/local/solr-cloud/solrhome01
cp -r /usr/local/solr/solrhome /usr/local/solr-cloud/solrhome02
cp -r /usr/local/solr/solrhome /usr/local/solr-cloud/solrhome03
cp -r /usr/local/solr/solrhome /usr/local/solr-cloud/solrhome04
配置 web.xml
配置实例 1 的 web.xml
vim /usr/local/solr-cloud/tomcat01/webapps/solr/WEB-INF/web.xml
配置以下内容
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-cloud/solrhome01/</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
配置实例 2 的 web.xml
vim /usr/local/solr-cloud/tomcat02/webapps/solr/WEB-INF/web.xml
配置以下内容
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-cloud/solrhome02/</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
配置实例 3 的 web.xml
vim /usr/local/solr-cloud/tomcat03/webapps/solr/WEB-INF/web.xml
配置以下内容
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-cloud/solrhome03/</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
配置实例 4 的 web.xml
vim /usr/local/solr-cloud/tomcat04/webapps/solr/WEB-INF/web.xml
配置以下内容
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-cloud/solrhome04/</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
配置 solr.xml
配置实例 1 的 solr.xml
vim /usr/local/solr-cloud/solrhome01/solr.xml
配置以下内容
<solrcloud>
<str name="host">192.168.25.155</str>
<int name="hostPort">8180</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
配置实例 2 的 solr.xml
vim /usr/local/solr-cloud/solrhome02/solr.xml
配置以下内容
<solrcloud>
<str name="host">192.168.25.155</str>
<int name="hostPort">8280</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
配置实例 3 的 solr.xml
vim /usr/local/solr-cloud/solrhome03/solr.xml
配置以下内容
<solrcloud>
<str name="host">192.168.25.155</str>
<int name="hostPort">8380</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
配置实例 4 的 solr.xml
vim /usr/local/solr-cloud/solrhome04/solr.xml
配置以下内容
<solrcloud>
<str name="host">192.168.25.155</str>
<int name="hostPort">8480</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
配置 catalina.sh
配置实例 1 的 catalina.sh
vim /usr/local/solr-cloud/tomcat01/bin/catalina.sh
配置以下内容
JAVA_OPTS="-DzkHost=192.168.25.155:2181,192.168.25.155:2182,192.168.25.155:2183"
配置实例 2 的 catalina.sh
vim /usr/local/solr-cloud/tomcat02/bin/catalina.sh
配置以下内容
JAVA_OPTS="-DzkHost=192.168.25.155:2181,192.168.25.155:2182,192.168.25.155:2183"
配置实例 3 的 catalina.sh
vim /usr/local/solr-cloud/tomcat03/bin/catalina.sh
配置以下内容
JAVA_OPTS="-DzkHost=192.168.25.155:2181,192.168.25.155:2182,192.168.25.155:2183"
配置实例 4 的 catalina.sh
vim /usr/local/solr-cloud/tomcat04/bin/catalina.sh
配置以下内容
JAVA_OPTS="-DzkHost=192.168.25.155:2181,192.168.25.155:2182,192.168.25.155:2183"
使用 zkcli.sh 工具上传配置文件
yum install -y unzip zip
cd /usr/local/solr-4.10.3/example/scripts/cloud-scripts/
./zkcli.sh -zkhost 192.168.25.155:2181,192.168.25.155:2182,192.168.25.155:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf
查看状态
cd /usr/local/solr-cloud/zookeeper01/bin
./zkCli.sh -server 192.168.25.155:2182
ls /configs/myconf
quit
编写启动 Tomcat 集群的脚本
vim /usr/local/solr-cloud/start-tomcat-all.sh
cd /usr/local/solr-cloud/tomcat01/bin
./startup.sh
cd /usr/local/solr-cloud/tomcat02/bin
./startup.sh
cd /usr/local/solr-cloud/tomcat03/bin
./startup.sh
cd /usr/local/solr-cloud/tomcat04/bin
./startup.sh
修改权限
cd /usr/local/solr-cloud
chmod u+x start-tomcat-all.sh
开启 Tomcat 集群
/usr/local/solr-cloud/start-tomcat-all.sh
查看启动日志
tail -f /usr/local/solr-cloud/tomcat01/logs/catalina.out
tail -f /usr/local/solr-cloud/tomcat02/logs/catalina.out
tail -f /usr/local/solr-cloud/tomcat03/logs/catalina.out
tail -f /usr/local/solr-cloud/tomcat04/logs/catalina.out
编写关闭 Tomcat 集群的脚本
vim /usr/local/solr-cloud/shutdown-tomcat-all.sh
cd /usr/local/solr-cloud/tomcat01/bin
./shutdown.sh
cd /usr/local/solr-cloud/tomcat02/bin
./shutdown.sh
cd /usr/local/solr-cloud/tomcat03/bin
./shutdown.sh
cd /usr/local/solr-cloud/tomcat04/bin
./shutdown.sh
修改权限
cd /usr/local/solr-cloud
chmod u+x shutdown-tomcat-all.sh
关闭 Tomcat 集群
/usr/local/solr-cloud/shutdown-tomcat-all.sh
创建新的 Collection 进行分片处理
在浏览器中访问以下网址
http://192.168.25.155:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
访问
http://192.168.25.155:8180/solr/#/~cloud
可看到结果
删除不用的 Collection
在浏览器中访问以下网址
http://192.168.25.155:8180/solr/admin/collections?action=DELETE&name=collection1
访问
http://192.168.25.155:8180/solr/#/~cloud
可看到结果
开机自启
vim /etc/rc.d/rc.local
添加
/usr/local/solr-cloud/start-tomcat-all.sh