Solr集群安装部署

准备工作

下载solr 4.4.0zookeeper-3.4.5版本, 3Redhat 6.1操作系统的虚拟机。其中三台安装搭建zookeeper集群,5台机器上都部署solr应用。

配置主机

更改各个主机的hosts文件,在文件末尾添加:

10.128.90.45 zk1

10.128.90.46 zk2

10.128.90.47 zk3

重启系统。(如果和其他应用冲突,可以更改成其他的主机名称)

配置免登录ssh公钥

三台主机

ip地址       机器名简称

10.128.90.45 zk1

10.128.90.46 zk2

10.128.90.47 zk3

3.1修改三台服务器机器名, 修改方式如下

vi /etc/sysconfig/network

[root@zk1 was]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=zk1

3.2配置hosts文件

vi /etc/hosts

后面加三行

10.128.90.45 zk1

10.128.90.46 zk2

10.128.90.47 zk3

重启后生效

3.3配置jdk

vi /etc/profile

 

export JAVA_HOME=/usr/java/jdk1.7.0_71

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

 

配置后执行以下语句才能生效

source /etc/profile

 

3.4 ssh免登陆

三台服务器分别执行该语句

 ssh-keygen -t rsa

生成的文件目录通过显示日志可以找到在哪

查看生成的文件

cd /root/.ssh

执行以下语句

cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

将其他两台生成的id_rsa.pub重命令后,分别为id_rsa.pub.zk2id_rsa.pub.zk3

都放到第一台服务器的/root/.ssh上,

然后执行以下语句把这两台服务器生成的公钥加到第一台上去

cat id_rsa.pub.zk2 >> authorized_keys

cat id_rsa.pub.zk3 >> authorized_keys

然后将生成的总的authorized_keys分别放到其他两台的/root/.ssh上去

配置完成,验证,

Zk1服务器上执行ssh命令,确保3台服务器通过ssh都能相互免密码进去

如下图是我在第一台主机上登录其他服务器,并且相互切换的列子

 

配置zookeeper集群

zk1主机为例:

4.1 下载zookeeper-3.4.5.tar文件,解压文件生成zookeeper-3.4.5

[root@zk1]# tar -zxvf  zookeeper-3.4.5.tar 

4.2 更改zoo.cfg配置文件

[root@zk1]# cd /zookeeper-3.4.5/conf

[root@zk1]# vi zoo.cfg

文件内容是:

tickTime=2000

initLimit=10

syncLimit=5

dataLogDir=/zookeeper/log/

dataDir=/zookeeper/data/

clientPort=2181

server.1=zk1:2888:3888

server.2=zk2:2888:3888

server.3=zk3:2888:3888

如果该目录中没有这个文件,则创建一个新的文件。注意每一个配置项的后面不要有空格,否则会报错。

4.3  配置myid文件

创建zoo.cfg文件中配置的dataLogDirdataDir文件夹

进入解压缩的zookeeper-3.4.5目录下执行如下命令

[root@zk1]#mkdir data

[root@zk1]#mkdir  log 

dataDir指向的文件夹中创建myid文件里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.XX为什么数字,则myid文件中就输入这个数字,例如当前主机zk1,在zoo.cfg文件中对应的是server.1,所以myid文件中的值应该是1

4.4 启动zookeeper

进入/zookeeper/bin文件夹,执行zkServer.sh文件

[root@zk1]#./zkServer.sh start

查看状态

[root@zk1]#./zkServer.sh status

查看启动日志

[root@zk1] #tail –f zookeeper.out

zk1为案例配置其他两个节点。三个节点全部启动之后,zookeeper会根据选举算法选出一个leader,系统运行正常。

4.5  常见错误

#Cannot open channel to 2 at election address slave-02/192.168.0.178:3888 java.net.ConnectException: Connection refused  

这是因为集群中的某一个节点没有启动完成,导致已经启动的节点无法连接该节点。这个错误在所有节点都启动成功之后消失。

#Cannot open channel to 1 at election address zk1/192.168.1.201:3888

java.net.NoRouteToHostException: No route to host

这是因为防火墙问题,关闭防火墙或开放相应端口

配置solr集群

     说明:先在一台主节点服务器上安装好一个solr单节点环境,测试成功后直接拖多其它服务器上去,改下相关配置就行了,为了方便安装文件管理,建议将zookeeper,tomcat,solr都放到同一个文件夹下。

 

1)新建solrcloud文件并授予权限

[was@zk1 ~]$ mkdir solrcloud

[was@zk1 ~]$ chmod 777 solrcloud

[was@zk1 ~]$ cd /home/was/solrcloud

solrcloud新建solrhome文件

[was@zk1 ~]$ midkr solrhome

 

2)将上传的solr.4.4.0压缩包解压缩,

3)solr.4.4.0/dist/solr-4.4.0.war 复制到/home/was/solrcloud/solrhome 并重命为solr.war

   cp /home/was/solrcloud/solr-4.4.0/dist/solr-4.4.0.war /home/was/solrcloud/solrhome/solr.war

4)将上传的tomcat解压缩

  tar -zxvf apache-tomcat-6.0.44.tar.gz

5)进入tomcat bin目录,启动tomcat

   cd /solrcloud/apache-tomcat-6.0.29/bin 进入bin目录

   ./startup.sh 启动tomcat 此时会在tomcat下的conf文件夹下多出一个目录Catalina

   cd /home/was/solrcloud/apache-tomcat-6.0.29/conf/Catalina/localhost

   在该目录下新建solr.xml内容如下

type="java.lang.String"

value="/home/was/solrcloud/solrhome"

override="true" />

 

   docBase="/home/was/solrcloud/solrhome/solr.war" 指定为solrcloud/solrhome下复制出来solrwar

6)启动tomcat, tomcatwebapps 下边多了解压出来的solr文件夹

进入solr/WEB-INF/ 下修改web.xml

改为 :

solr/home

/home/was/solrcloud/solrhome

java.lang.String

7)/home/was/solrcloud/solr-4.4.0/example/solr 文件夹下所有东西复制到 /home/was/solrcloud/solrhome

 cp -r /home/was/solrcloud/solr-4.4.0/example/solr/* /home/was/solrcloud/solrhome

8)复制/home/was/solrcloud/solr-4.4.0/example/lib/ext下所有jar包到tomcat 下的webapps/solr/WEB-INF/lib

   cp -r /home/was/solrcloud/solr-4.4.0/example/lib/ext/* /home/was/solrcloud/apache-tomcat-6.0.44/webapps/solr/WEB-INF/lib/

 复制 /home/was/solrcloud/solr-4.4.0/example/resources/log4j.properties solr/WEB-INF/class 如果没有class先创建class文件夹,并赋于写权限

     cp /home/was/solrcloud/solr-4.4.0/example/resources/log4j.properties /home/was/solrcloud/apache-tomcat-6.0.44/webapps/solr/WEB-INF/class/

9)启动tomcat 访问 http://localhost:8080/solr 如图,至此单机版solr配制完成

  进入 cd /home/was

  通过scp命令同步到其他两台机器上去,命令如下:

    scp -r solrcloud was@zk2:/home/was/

    scp -r solrcloud was@zk3:/home/was/

  并授予权限: chmod 777 solrcloud

 

 

10)配制集群

zookeepertomcat关联

10.128.90.45(zk1)台主机修改tomcat bin目录下catalina.sh文件在第二行加入

JAVA_OPTS="-Dbootstrap_confdir=/home/was/solrcloud/solrhome/collection1/conf -Dcollection.configName=myconf

-DzkHost=10.128.90.45:2181,10.128.90.46:2181,10.128.90.47:2181 -DnumShards=3"

 

10.128.90.46(zk2)10.128.90.47(zk3)台主机修改tomcat bin目录下catalina.sh文件在第二行加入

JAVA_OPTS="-DzkHost=10.128.90.45:2181,10.128.90.46:2181,10.128.90.47:2181 -DnumShards=3"

 

 

http://10.128.90.45:8080/solr/

http://10.128.90.46:8080/solr/

http://10.128.90.47:8080/solr/

任何一个IP均可访问。




你可能感兴趣的:(Solr,solr)