Tomcat上部署SolrCloud

本文介绍在 Tomcat 上部署 SolrCloud 集群的完整过程。

环境规划

SolrCloud 服务器

  • s1.solr.com
  • s2.solr.com
  • s3.solr.com

Zookeeper 服务器

  • z1.com
  • z2.com
  • z3.com

默认安装目录: /home/myuser

第一步:启动 Zookeeper 集群

按照顺序启动 z1.com, z2.com, z3.com

1. 下载 Zookeeper

http://hadoop.apache.org/zookeeper/releases.html 下载 zookeeper

2. 解压缩 Zookeeper

1
tar -xf zookeeper-*.tar.gz -C /home/myuser/zookeeper/

3. 编辑 Zookeeper 配置文件

编辑 /home/myuser/zookeeper/conf/zoo.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# The number of milliseconds of each tick
tickTime=2000

# The number of ticks that the initial synchronization phase can take
initLimit=10

# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5

# the directory where the snapshot is stored.
# Choose appropriately for your environment
dataDir=/home/myuser/zookeeper/data/

# the port at which the clients will connect
clientPort=2181

# the directory where transaction log is stored.
# this parameter provides dedicated log device for ZooKeeper
dataLogDir=/home/myuser/zookeeper/log/

# ZooKeeper server and its port no.
# ZooKeeper ensemble should know about every other machine in the ensemble
# specify server id by creating 'myid' file in the dataDir
# use hostname instead of IP address for convenient maintenance
server.1=z1.com:2888:3888
server.2=z2.com:2888:3888
server.3=z3.com:2888:3888

4. 为每个服务器建立 ID 文件

为每个服务器在 data 目录建立一个 id 文件,配置合适的 id:

1
2
3
4
5
6
7
8
# 在 z1.com 上
echo "1" > /home/myuser/zookeeper/data/myid

# 在 z2.com 上
echo "2" > /home/myuser/zookeeper/data/myid

# 在 z3.com 上
echo "3" > /home/myuser/zookeeper/data/myid

myid 文件用于标识 zookeeper 服务器。

5. 启动所有 Zookeeper 服务器

1
2
cd /home/myuser/zookeeper/bin/
./zkServer.sh start

第二步:安装 SolrCloud

现在 zookeeper 集群已经准备好了,我们接下来安装 SolrCloud 服务器:s1.solr.com, s2.solr.com, s3.solr.com

1. 准备 Solr 文件

首先从一台 solr 服务器上加载配置文件

  1. 把 solr.war 放到 s1.solr.com 服务器

  2. 拷贝 solr.war 到 solr-war 目录:

    1
    cp solr.war /home/myuser/solr-war
  3. 解压 solr.war:

    1
    2
    cd /home/myuser/solr-war
    jar xvf solr.war
  4. 拷贝依赖库:

    1
    cp WEB-INF/lib/* /home/myuser/solr-war-lib/
  5. 把所有配置文件(例如 solrconfig.xml, schema.xml 等等)放到:

    1
    /home/myuser/solr-config/

2. 上传配置到 Zookeeper

用 solr zookeeper cli(zookeeper 客户端)上传配置文件到 zookeeper:

1
2
3
4
5
java -classpath .:/home/myuser/solr-war-lib/* org.apache.solr.cloud.ZkCLI \
-cmd upconfig \
-zkhost z1.com:2181,z2.com:2181,z3.com:2181 \
-confdir /home/myuser/solr-config \
-confname myconf

3. 建立 Solr 索引目录

1
mkdir -p /home/myuser/solr-cores/

4. 创建 solr.xml 文件

在 solr-cores 里面建立 solr.xml 文件,内容如下:

1
2
3
4
5
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true" sharedLib="lib">
<cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="8080" hostContext="solr">
</cores>
</solr>

5. 配置 Tomcat

  1. 设置 JVM 参数启动 Tomcat:

    1
    -DzkHost=z1.com:2181,z2.com:2181,z3.com:2181
  2. 部署 solr.war:

    1
    cp solr.war /home/myuser/tomcat/webapps/

    然后重启 tomcat

  3. 编辑 context.xml:
    编辑 /home/myuser/tomcat/webapps/solr/META-INF/context.xml 文件并且重启 tomcat:

    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="utf-8"?>
    <Context docBase="solr.war" debug="0" crossContext="false">
    <Environment name="solr/home" type="java.lang.String"
    value="/home/myuser/solr-cores" override="true"/>
    </Context>

6. 创建 Collection

1
curl 'http://s1.solr.com:8080/solr/admin/collections?action=CREATE&name=mycollection&numShards=3&replicationFactor=1'

完成

至此,SolrCloud 集群部署完成。重复步骤 2 的 5-6 部分在其他服务器上完成整个集群的搭建。

© 2025 Solr Community of China All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero