CentOS下用Tomcat+Zookeeper+Nginx+Solr完美搭建SolrCloud平台(二)
最近单位要用一套能支持日均几十万人访问,存储数据在超百亿条以上的全文检索系统。我们选用了企业级的开源搜索引擎 Solr ,从4.0版本起,Solr 开始支持云计算 SolrCloud。为搭建一个SolrCloud 环境,在网上找了不少资料,发现都讲得不是很全面。经过近一个星期的摸索,在此把我搭建 SolrCloud 环境的过程分享给大家。
·
三、部署独立的 Zookeeper 3.4.5
1、先在solr1.jyga.com主机上部署zookeeper
2、将下载的 zookeeper-3.4.5.tar.gz 包解压缩至 /media/solr/app/zookeeper 目录下。
3、创建 zookeeper 的数据存储目录和日志存储目录
[root@solr1 桌面]# mkdir /media/solr/data/zookeeper
[root@solr2 桌面]# mkdir /media/solr/data/zookeeper/data
[root@solr3 桌面]# mkdir /media/solr/data/zookeeper/logs
4、根据 Zookeeper 的 conf 目录下的zoo_sample.cfg 文件复制一份为 zoo.cfg ,然后修改 zoo.cfg 文件
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/media/solr/data/zookeeper/data #修改为相应的位置,Zookeeper数据存储目录
dataLogDir=/media/solr/data/zookeeper/logs #此行为添加行,Zookeeper日志存储目录
connect
clientPort=2181 #Zookeeper的客户端连接端口,建议不要修改
server.1=solr1.jyga.com:2888:3888
server.2=solr2.jyga.com:2888:3888
server.3=solr3.jyga.com:2888:3888
server.4=solr4.jyga.com:2888:3888
server.5=solr5.jyga.com:2888:3888
server.1=solr1.jyga.com:2888:3888 这行的书写格式为 server.N=YYY:A:B
其中N为Zookeeper的主机编号,这里的主机编号只要能跟下面的myid文件中的编号对应即可;YYY为主机的域名或主机名或者IP地址;A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口;B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。
5、在 /media/solr/data/zookeeper/data 下面创建一个 myid 文件,内容为主机对应的编号
[root@solr1 桌面]# echo "1" >> /media/solr/data/zookeeper/data/myid
6、将已配置好的 Zookeeper 相关文件复制到其它4台主机
[root@solr1 桌面]# scp -r /media/solr/app/zookeeper root@solr2.jyga.com:/media/solr/app/zookeeper
[root@solr1 桌面]# scp -r /media/solr/data/zookeeper root@solr2.jyga.com:/media/solr/data/zookeeper
[root@solr1 桌面]# scp -r /media/solr/app/zookeeper root@solr3.jyga.com:/media/solr/app/zookeeper
[root@solr1 桌面]# scp -r /media/solr/data/zookeeper root@solr3.jyga.com:/media/solr/data/zookeeper
[root@solr1 桌面]# scp -r /media/solr/app/zookeeper root@solr4.jyga.com:/media/solr/app/zookeeper
[root@solr1 桌面]# scp -r /media/solr/data/zookeeper root@solr4.jyga.com:/media/solr/data/zookeeper
[root@solr1 桌面]# scp -r /media/solr/app/zookeeper root@solr5.jyga.com:/media/solr/app/zookeeper
[root@solr1 桌面]# scp -r /media/solr/data/zookeeper root@solr5.jyga.com:/media/solr/data/zookeeper
7、通过 SSH 登录到其它主机,删除对应的 myid 文件,并根据主机对应的编号重新生成 myid 文件
[root@solr1 桌面]# ssh root@solr2.jyga.com
root@solr2.jyga.com's password: <在此输入solr2主机的root帐户的密码,建议所有主机的密码设置成一样的>
[root@solr2 ~]# rm /media/solr/data/zookeeper/data/myid
rm:是否删除普通文件 "/media/solr/data/zookeeper/data/myid"? y
[root@solr2 ~]# echo "2" >> /media/solr/data/zookeeper/data/myid
[root@solr2 ~]# ssh root@solr3.jyga.com
root@solr3.jyga.com's password:
[root@solr3 ~]# rm /media/solr/data/zookeeper/data/myid
rm:是否删除普通文件 "/media/solr/data/zookeeper/data/myid"? y
[root@solr3 ~]# echo "3" >> /media/solr/data/zookeeper/data/myid
[root@solr3 ~]# ssh root@solr4.jyga.com
root@solr4.jyga.com's password:
[root@solr4 ~]# rm /media/solr/data/zookeeper/data/myid
rm:是否删除普通文件 "/media/solr/data/zookeeper/data/myid"? y
[root@solr4 ~]# echo "4" >> /media/solr/data/zookeeper/data/myid
[root@solr4 ~]# ssh root@solr5.jyga.com
root@solr5.jyga.com's password:
[root@solr5 ~]# rm /media/solr/data/zookeeper/data/myid
rm:是否删除普通文件 "/media/solr/data/zookeeper/data/myid"? y
[root@solr5 ~]# echo "5" >> /media/solr/data/zookeeper/data/myid
8、登录到不同的主机启动 zookeeper
[root@solr1 桌面]# /media/solr/app/zookeeper/bin/zkServer.sh start
[root@solr2 ~]# /media/solr/app/zookeeper/bin/zkServer.sh start
[root@solr3 ~]# /media/solr/app/zookeeper/bin/zkServer.sh start
[root@solr4 ~]# /media/solr/app/zookeeper/bin/zkServer.sh start
[root@solr5 ~]# /media/solr/app/zookeeper/bin/zkServer.sh start
9、查看 zookeeper 的运行状态(注意,当只启动所有节点数的一半节点的 Zookeeper 服务的时候,会出现运行错误的提示。要确定 Zookeeper 是否已经运行,可以使用 netstat -tnl 命令看一下有没有2188和3888端口)
[root@solr1 桌面]# /media/solr/app/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /media/solr/app/zookeeper/bin/../conf/zoo.cfg
Mode: follower
当看到Mode为follower或leader时,表明 Zookeeper 集群已经开始运行,并自动选举出了 leader 节点以及 follower 节点,此时可以用 zookeeper 的 zkCli.sh连接到集群中用 ls / 命令查看 zookeeper 中节点下的 Node 信息。
[root@solr1 桌面]# /media/solr/app/zookeeper/bin/zkCli.sh -server solr1.jyga.com:2181
........ <这里省略连接后出现的相关提示信息>
[zk: solr1.jyga.com:2181(CONNECTED) 0] ls /
[zookeeper, overseer, overseer_elect]
10、如果在实际环境中防火墙必须为打开状态的话,需要将 Zookeeper 运行涉及的端口加入防火墙设置。修改 /etc/sysconfig/iptables 文件,在COMMIT前面加入以下几行
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 2181 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 2888 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 3888 -j ACCEPT
更多推荐
已为社区贡献6条内容
所有评论(0)