一.环境准备
Windows 7 64位
java version "1.8.0_65"
solr-5.3.1.tgz
apache-tomcat-8.0.28.zip
zookeeper-3.4.6.tar
二.环境安装
1. Tomcat+solr单机版
1. 下载solr 5.3.1.tgz 压缩包,并解压到D盘
1. 下载地址:http://www.apache.org/dyn/closer.lua/lucene/solr/5.3.1
2. solr5.3.1解压后目录结构如下:
2. 下载apache-tomcat-8.0.28.zip并解压到D盘下的solr_cloud目录里
下载地址:http://tomcat.apache.org/download-80.cgi
在D盘新建文件夹solr_cloud并解压apache-tomcat-8.0.28目录文件夹效果如下:
3. 在D:\solr_cloud\apache-tomcat-8.0.30\webapps下新建solr文件夹,并复制D:\solr-5.3.1\server\solr-webapp\webapp下所有文件,创建solr_home文件,如图:
4. 修改D:\solr_cloud\apache-tomcat-8.0.28\webapps\solr\WEB-INF\web.xml
<!--
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/put/your/solr/home/here</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
-->
改为 :
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:\solr_cloud\apache-tomcat-8.0.28\webapps\solr\solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
5. 把D:\solr-5.3.1\server\lib\ext 中的 jar 全部复制到 D:\solr_cloud\apache-tomcat-8.0.28\webapps\solr\WEB-INF\lib 文件夹下,如图:
6. 将 D:\solr-5.3.1\server\solr 目录下所有的文件都复制到D:\solr_cloud\apache-tomcat-8.0.28\webapps\solr\solr_home
7. 把D:\solr-5.3.1\server\resources\log4j.properties文件复制到D:\solr_cloud \apache-tomcat-8.0.30\webapps\solr\WEB-INF\classes目录下,如果classes文件夹不存在就手动新建一个文件夹,如图:
8. 保存关闭,而后启动tomcat,在浏览器输入http://localhost:8080/solr即可出现Solr的管理界面。
9. 如果本地有多个jdk需要在D:\solr_cloud\apache-tomcat-8.0.28\bin\startup.bat 文件中指定jdk1.8的home地址,如
三.Solr搭建集群应用
1. 配置多Tomcat+Solr同时运行
1. 把apache-tomcat-8.0.28 文件夹复制两份,分别命名为:tomcat-server_1、tomcat-server_2、tomcat-server_3,如下图:
2. 修改tomcat-server_* 中solr_home的在web.xml文件中指定的路径,如图:
solr_home | |
tomcat-server_1 | D:\solr_cloud\tomcat-server_1\webapps\solr\solr_home |
tomcat-server_2 | D:\solr_cloud\tomcat-server_2\webapps\solr\solr_home |
tomcat-server_3 | D:\solr_cloud\tomcat-server_3\webapps\solr\solr_home |
D:\solr_cloud\tomcat-server_1\webapps\solr\WEB-INF\web.xml:
D:\solr_cloud\tomcat-server_2\webapps\solr\WEB-INF\web.xml:
D:\solr_cloud\tomcat-server_3\webapps\solr\WEB-INF\web.xml:
2. 修改tomcat端口
1. tomcat-server_* 中conf的在server.xml端口休息,修改方案如下:
Tomcat Admin Port | HTTP/1.1 Port | AJP/1.3 Port | |
Tomcat-server_1 | 8005 | 8080 | 8009 |
Tomcat-server_2 | 8015 | 8090 | 8019 |
Tomcat-server_3 | 8025 | 8100 | 8029 |
Tomcat Admin Port:
HTTP/1.1 Port:
AJP/1.3 Port:
以上是tomcat-server_1的配置,tomcat-server_2 和 tomcat-server_3同上。
3. 验证修改是否成功,依次启动三个Tomcat。并在浏览器输入如下的URL:
如果都能正常访问到solr的admin页面,那么说明配置是成功。
3.配置 ZooKeeper集群
1. 在solr_cloud目录下创建zookeeper文件夹,并解压zookeeper-3.4.6.tar.gz到D:/solr_cloud/zookeeper目录下,如图:
2. 在zookeeper文件夹下创建一个data文件夹,并在data文件夹下创建zk1、zk2、zk3文件夹,如图:
3. 在zk1、zk2、zk3目录中创建文件myid(不需要后缀名),并在zk1目录myid文件中写入数字1,zk2目录myid文件中写入数字2,zk3目录myid文件中写入数字3,如图:
文件 | 值 | |
Zk1 | myid | 1 |
Zk2 | myid | 2 |
Zk3 | myid | 3 |
4. 在zookeeper文件夹下创建一个logs文件夹,并在logs文件夹下创建zk1、zk2、zk3文件夹,如图:
5. 复制D:\solr_cloud\zookeeper\zookeeper-3.4.6\conf文件夹下的 zoo_sample.cfg 文件复制两份并修改名称为:zoo1.cfg、zoo2.cfg、zoo3.cfg,如图:
6. 修改zoo1.cfg、zoo2.cfg、zoo3.cfg写入如下的配置参数,dataDir和dataLogDir和clientPort。修改方案如下:如图:
dataDir | dataLogDir | clientPort | |
zoo1.cfg | D:/solr_cloud/zookeeper/data/zk1 | D:/solr_cloud/zookeeper/logs/zk1 | 2181 |
zoo2.cfg | D:/solr_cloud/zookeeper/data/zk2 | D:/solr_cloud/zookeeper/logs/zk2 | 2182 |
zoo3.cfg | D:/solr_cloud/zookeeper/data/zk3 | D:/solr_cloud/zookeeper/logs/zk3 | 2183 |
zoo1.cfg:
zoo2.cfg:
zoo3.cfg:
7. 复制D:\solr_cloud\zookeeper\zookeeper-3.4.6\bin文件夹下的zkServerNaNd文件复制两份并修改名称为:zkServer_25pxd、zkServer_50pxd、zkServer_75pxd,如图:
8. 修改zkServer_*NaNd写入如下的配置参数,修改方案如下:如图:
zkServer_25pxd | set ZOOCFG=D:\solr_cloud\zookeeper\zookeeper-3.4.6\conf\zoo1.cfg |
zkServer_50pxd | set ZOOCFG=D:\solr_cloud\zookeeper\zookeeper-3.4.6\conf\zoo2.cfg |
zkServer_75pxd | set ZOOCFG=D:\solr_cloud\zookeeper\zookeeper-3.4.6\conf\zoo3.cfg |
zkServer_25pxd:
zkServer_50pxd:
zkServer_75pxd:
9. 启动服务,在eclipse中验证是否正常启动。
启动zkServer_*NaNd连接三台服务器的任意一台,创建结点,然后连接另外一台,取得结点的数据,如果能够取到,则说明配置是成功。
创建一个java Project 工程,导入zookeeper-3.4.6.jar,并创建ZkClient.java 以下是代码:
package zookeeper_learning;
import java.io.IOException;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
public class ZkClient {
// 创建 一个结点
public static void create(ZooKeeper zk) throws KeeperException, InterruptedException {
System.out.println("/n1. 创建 ZooKeeper 节点 (znode : zoo2, 数据: myData2 ,权限: OPEN_ACL_UNSAFE ,节点类型: Persistent");
zk.create("/zoo2", "myData2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
}
// 修改结点信息
public static void modify(ZooKeeper zk) throws KeeperException, InterruptedException {
System.out.println("/n3. 修改节点数据 ");
zk.setData("/zoo2", "shenlan211314".getBytes(), -1);
}
// 查看结点信息
public static void monitor(ZooKeeper zk) throws KeeperException, InterruptedException {
System.out.println("/n4. 查看节点: ");
System.out.println(new String(zk.getData("/zoo2", false, null)));
}
// 查看结点是否存在
public static void exist(ZooKeeper zk) throws KeeperException, InterruptedException {
System.out.println("/n6. 查看节点是否被删除: ");
System.out.println(" 节点状态: [" + zk.exists("/zoo2", false) + "]");
}
// 删除一个结点
public static void delete(ZooKeeper zk) throws InterruptedException, KeeperException {
System.out.println("/n5. 删除节点 ");
zk.delete("/zoo2", -1);
}
public static ZooKeeper connect(String host) throws IOException {
return new ZooKeeper(host, 3000, new Watcher() {
public void process(WatchedEvent arg0) {
System.out.println("watch " + arg0);
}
});
}
public static void main(String[] args) {
try {
ZooKeeper zk1 = connect("0.0.0.0:2181");
create(zk1);
zk1.close();
ZooKeeper zk2 = connect("0.0.0.0:2182");
monitor(zk2);
zk2.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行结果如下,证明环境没问题。
4.Tomcat关联solr建立集群应用
1. 修改tomcat-server_*中的catalina.bat的参数信息,文件启动关联zookeeper集群功能,方案如下:
tomcat_server_1 | set JAVA_OPTS=-Dsolr.solr.home=D:/solr_cloud/tomcat-server_1/webapps/solr/solr_home -Dbootstrap_confdir=D:/solr_cloud/tomcat-server_1/webapps/solr/solr_home/core1/conf -Dcollection.configName=myconf -DnumShards=2 -DzkHost=127.0.0.1:2181 |
tomcat_server_2 | set JAVA_OPTS=-Dsolr.solr.home=D:/solr_cloud/tomcat_server_2/webapps/solr/solr_home -DzkHost=127.0.0.1:2182 |
tomcat_server_3 | set JAVA_OPTS=-Dsolr.solr.home=D:/solr_cloud/tomcat_server_3/webapps/solr/solr_home -DzkHost=127.0.0.1:2182 |
D:\solr_cloud\tomcat-server_1\bin\catalina.bat:
D:\solr_cloud\tomcat-server_2\bin\catalina.bat:
D:\solr_cloud\tomcat-server_3\bin\catalina.bat:
2. 修改:tomcat-server_*中solr_home 目录下的 solr.xml 文件,方案如果:
host | hostPort | |
tomcat_server_1 | 127.0.0.1 | ${hostPort:8080} |
tomcat_server_2 | 127.0.0.1 | ${hostPort:8090} |
tomcat_server_3 | 127.0.0.1 | ${hostPort:8100} |
D:\solr_cloud\tomcat-server_1\webapps\solr\solr_home\solr.xml:
D:\solr_cloud\tomcat-server_2\webapps\solr\solr_home\solr.xml:
D:\solr_cloud\tomcat-server_3\webapps\solr\solr_home\solr.xml:
3. Solr创建core实例,在tomcat-server_*中solr_home 目录下创建core1文件夹,把 D:\solr-5.3.1\server\solr\configsets\basic_configs 目录下的conf文件复制到solr_home目录中,如图:
Tomcat-server_1、tomcat-server_2、tomcat-server_3中同时复制。
4. 启动tomcat_server_* 服务,进入管理页面选择Core Admin,如图:
创建core1:
tomcat-server_1、tomcat-server_2、tomcat-server_3同时创建core1实例。