solr7.5+zookeeper3.5.5如何搭建solr集群

发布时间:2021-07-06 11:43:55 作者:chen
来源:亿速云 阅读:170
# Solr7.5+ZooKeeper3.5.5搭建Solr集群指南

## 前言

Apache Solr是一个基于Lucene构建的高性能、全功能的开源搜索平台,广泛应用于企业级搜索和大数据分析场景。在生产环境中,为了确保高可用性和可扩展性,通常需要以集群模式部署Solr。本文将详细介绍如何使用Solr 7.5和ZooKeeper 3.5.5搭建一个完整的SolrCloud集群。

## 一、环境准备

### 1.1 硬件要求

- 至少3台服务器(物理机或虚拟机)
- 每台服务器建议配置:
  - CPU: 4核以上
  - 内存: 8GB以上
  - 磁盘: 50GB以上(SSD推荐)
  
### 1.2 软件要求

- 操作系统:Linux(CentOS 7/8或Ubuntu 18.04+)
- Java环境:JDK 1.8+
- ZooKeeper 3.5.5
- Solr 7.5.0

### 1.3 网络要求

- 所有节点间网络互通
- 开放以下端口:
  - ZooKeeper: 2181, 2888, 3888
  - Solr: 8983

## 二、ZooKeeper集群部署

### 2.1 下载安装

在所有节点执行:
```bash
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz
tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz
mv apache-zookeeper-3.5.5-bin /opt/zookeeper

2.2 配置ZooKeeper

  1. 创建数据目录:
mkdir -p /data/zookeeper/data
mkdir -p /data/zookeeper/logs
  1. 配置zoo.cfg(以node1为例):
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
  1. 创建myid文件:
echo "1" > /data/zookeeper/data/myid  # node1
echo "2" > /data/zookeeper/data/myid  # node2
echo "3" > /data/zookeeper/data/myid  # node3

2.3 启动ZooKeeper集群

在所有节点执行:

/opt/zookeeper/bin/zkServer.sh start

验证集群状态:

/opt/zookeeper/bin/zkServer.sh status

三、Solr集群部署

3.1 下载安装Solr

在所有节点执行:

wget https://archive.apache.org/dist/lucene/solr/7.5.0/solr-7.5.0.tgz
tar -zxvf solr-7.5.0.tgz
mv solr-7.5.0 /opt/solr

3.2 配置SolrCloud

  1. 创建Solr数据目录:
mkdir -p /data/solr
  1. 修改solr.in.sh配置:
vim /opt/solr/bin/solr.in.sh

修改以下参数:

ZK_HOST="node1:2181,node2:2181,node3:2181"
SOLR_HOST="当前节点IP"
SOLR_PID_DIR=/data/solr
SOLR_HOME=/data/solr/home
SOLR_LOGS_DIR=/data/solr/logs

3.3 启动Solr集群

在所有节点执行:

/opt/solr/bin/solr start -cloud -p 8983

3.4 验证集群状态

访问任意节点的管理界面:

http://<node-ip>:8983/solr/#/~cloud

四、创建集合(Collection)

4.1 使用命令行创建

/opt/solr/bin/solr create -c my_collection \
  -shards 2 -replicationFactor 2 \
  -p 8983 -force

参数说明: - -shards 2: 2个分片 - -replicationFactor 2: 每个分片2个副本

4.2 验证集合状态

在Solr Admin界面的Cloud菜单中,可以看到集合的分片和副本分布情况。

五、集群配置管理

5.1 上传配置到ZooKeeper

/opt/solr/bin/solr zk upconfig \
  -z node1:2181,node2:2181,node3:2181 \
  -n my_config \
  -d /opt/solr/server/solr/configsets/_default/conf

5.2 使用配置创建集合

/opt/solr/bin/solr create -c my_collection_v2 \
  -n my_config \
  -shards 3 -replicationFactor 2

六、集群运维管理

6.1 常用命令

  1. 停止节点:
/opt/solr/bin/solr stop -all
  1. 添加节点:
/opt/solr/bin/solr start -cloud -p 8984 -z node1:2181,node2:2181,node3:2181
  1. 删除集合:
/opt/solr/bin/solr delete -c my_collection

6.2 监控与维护

  1. 使用Solr Admin UI监控集群状态
  2. 定期检查ZooKeeper和Solr日志
  3. 设置日志轮转:
vim /etc/logrotate.d/solr

/data/solr/logs/solr.log {
    daily
    rotate 30
    compress
    missingok
    notifempty
    copytruncate
}

七、安全配置

7.1 基本认证

  1. 修改security.json:
{
  "authentication":{
    "blockUnknown": true,
    "class":"solr.BasicAuthPlugin",
    "credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAa9IFQFTPgAVNfokcG3hCYFQyPY6w9o6V4="}
  },
  "authorization":{
    "class":"solr.RuleBasedAuthorizationPlugin",
    "permissions":[
      {"name":"security-edit","role":"admin"}
    ],
    "user-role":{"solr":"admin"}
  }
}
  1. 上传到ZooKeeper:
/opt/solr/server/scripts/cloud-scripts/zkcli.sh \
  -zkhost node1:2181,node2:2181,node3:2181 \
  -cmd put /security.json '{"authentication":{"blockUnknown":true,"class":"solr.BasicAuthPlugin","credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAa9IFQFTPgAVNfokcG3hCYFQyPY6w9o6V4="}},"authorization":{"class":"solr.RuleBasedAuthorizationPlugin","permissions":[{"name":"security-edit","role":"admin"}],"user-role":{"solr":"admin"}}}'

7.2 SSL配置

  1. 生成密钥库:
keytool -genkeypair -alias solr-ssl -keyalg RSA -keysize 2048 \
  -keypass secret -storepass secret -validity 365 \
  -keystore /opt/solr/server/etc/solr-ssl.keystore.jks \
  -ext SAN=DNS:localhost,IP:127.0.0.1 \
  -dname "CN=localhost, OU=Solr, O=Apache, L=Unknown, ST=Unknown, C=Unknown"
  1. 修改solr.in.sh:
SOLR_SSL_KEY_STORE=/opt/solr/server/etc/solr-ssl.keystore.jks
SOLR_SSL_KEY_STORE_PASSWORD=secret
SOLR_SSL_TRUST_STORE=/opt/solr/server/etc/solr-ssl.keystore.jks
SOLR_SSL_TRUST_STORE_PASSWORD=secret
SOLR_SSL_NEED_CLIENT_AUTH=false
SOLR_SSL_WANT_CLIENT_AUTH=false

八、常见问题解决

8.1 ZooKeeper连接问题

症状:Solr无法连接到ZooKeeper集群 解决方案: 1. 检查ZooKeeper服务是否正常运行 2. 检查防火墙设置 3. 验证solr.in.sh中的ZK_HOST配置

8.2 节点无法加入集群

症状:新节点无法加入现有集群 解决方案: 1. 检查网络连通性 2. 验证ZooKeeper配置 3. 检查Solr版本是否一致

8.3 分片不平衡

症状:数据分布不均匀 解决方案: 1. 手动迁移分片 2. 使用Collection API重新平衡 3. 考虑增加分片数量

九、性能优化建议

  1. JVM调优:
SOLR_JAVA_MEM="-Xms4g -Xmx4g -XX:+UseConcMarkSweepGC"
  1. 索引优化:

    • 合理设置mergeFactor
    • 使用docValues替代fieldCache
    • 考虑使用SSD存储
  2. 查询优化:

    • 合理使用缓存(filterCache, queryResultCache等)
    • 优化查询语法
    • 使用分页查询

十、总结

本文详细介绍了Solr 7.5和ZooKeeper 3.5.5集群的搭建过程,包括: 1. ZooKeeper集群的部署和配置 2. SolrCloud的安装和集群配置 3. 集合的创建和管理 4. 集群的安全配置 5. 常见问题解决方法

通过本文的指导,您可以成功搭建一个高可用的Solr搜索集群,为您的应用程序提供强大的搜索服务。在实际生产环境中,还需要根据具体业务需求进行进一步的调优和监控配置。 “`

推荐阅读:
  1. Solr集群搭建
  2. solr5搭建

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

zookeeper solr

上一篇:maven assembly打包mian的方法

下一篇:Node.js+express如何实现上传大文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》