前言
Solr 是一个开源的全文搜索平台,它提供了强大的搜索和分析功能。SolrCloud 是 Solr 的分布式版本,它可以将数据分布在多个节点上,提供高可用性和可扩展性。接下来,我们将使用 Docker 来搭建 SolrCloud。
准备工作
在开始之前,请确保已经安装了 Docker 和 Docker Compose。如果还没有安装,请根据你的操作系统进行安装。
创建 Docker Compose 文件
首先,创建一个名为 docker-compose.yml
的文件,并将以下内容复制到文件中:
version: '3.9'
services:
solr8-01:
image: blog-solr:8.11.2
build: .
container_name: solr8-01
mem_limit: 512m
cpus: 0.5
restart: always
ports:
- "8981:8983"
environment:
- ZK_HOST=zk-01:2181,zk-02:2181,zk-03:2181
networks:
- nginx
volumes:
- /data/docker/solr-cloud/backup:/var/solr/data/backup
depends_on:
- zk-01
- zk-02
- zk-03
solr8-02:
image: blog-solr:8.11.2
build: .
container_name: solr8-02
mem_limit: 512m
cpus: 0.5
restart: always
ports:
- "8982:8983"
environment:
- ZK_HOST=zk-01:2181,zk-02:2181,zk-03:2181
networks:
- nginx
volumes:
- /data/docker/solr-cloud/backup:/var/solr/data/backup
depends_on:
- zk-01
- zk-02
- zk-03
solr8-03:
image: blog-solr:8.11.2
build: .
container_name: solr8-03
mem_limit: 512m
cpus: 0.5
restart: always
ports:
- "8983:8983"
environment:
- ZK_HOST=zk-01:2181,zk-02:2181,zk-03:2181
networks:
- nginx
volumes:
- /data/docker/solr-cloud/backup:/var/solr/data/backup
depends_on:
- zk-01
- zk-02
- zk-03
solr8-04:
image: blog-solr:8.11.2
build: .
container_name: solr8-04
mem_limit: 512m
cpus: 0.5
restart: always
ports:
- "8984:8983"
environment:
- ZK_HOST=zk-01:2181,zk-02:2181,zk-03:2181
networks:
- nginx
volumes:
- /data/docker/solr-cloud/backup:/var/solr/data/backup
depends_on:
- zk-01
- zk-02
- zk-03
solr8-05:
image: blog-solr:8.11.2
build: .
container_name: solr8-05
mem_limit: 512m
cpus: 0.5
restart: always
ports:
- "8985:8983"
environment:
- ZK_HOST=zk-01:2181,zk-02:2181,zk-03:2181
networks:
- nginx
volumes:
- /data/docker/solr-cloud/backup:/var/solr/data/backup
depends_on:
- zk-01
- zk-02
- zk-03
solr8-06:
image: blog-solr:8.11.2
build: .
container_name: solr8-06
mem_limit: 512m
cpus: 0.5
restart: always
ports:
- "8986:8983"
environment:
- ZK_HOST=zk-01:2181,zk-02:2181,zk-03:2181
networks:
- nginx
volumes:
- /data/docker/solr-cloud/backup:/var/solr/data/backup
depends_on:
- zk-01
- zk-02
- zk-03
zk-01:
image: zookeeper:3.6.2
container_name: zk-01
mem_limit: 256m
cpus: 0.5
restart: always
hostname: zk-01
ports:
- "7001:7000"
- "9854:9854"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zk-01:2888:3888;2181 server.2=zk-02:2888:3888;2181 server.3=zk-03:2888:3888;2181
ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok
ZOO_CFG_EXTRA: "metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true"
networks:
- nginx
zk-02:
image: zookeeper:3.6.2
container_name: zk-02
mem_limit: 256m
cpus: 0.5
restart: always
hostname: zk-02
ports:
- 7002:7000
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zk-01:2888:3888;2181 server.2=zk-02:2888:3888;2181 server.3=zk-03:2888:3888;2181
ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok
ZOO_CFG_EXTRA: "metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true"
networks:
- nginx
zk-03:
image: zookeeper:3.6.2
container_name: zk-03
restart: always
hostname: zk-03
ports:
- 7003:7000
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zk-01:2888:3888;2181 server.2=zk-02:2888:3888;2181 server.3=zk-03:2888:3888;2181
ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok
ZOO_CFG_EXTRA: "metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7000 metricsProvider.exportJvmInfo=true"
networks:
- nginx
networks:
nginx:
name: nginx
driver: bridge
external: true
这个 Docker Compose 文件定义了 Solr Cloud 和 ZooKeeper 的容器配置。我们将使用 blog-solr:8.11.2
镜像来构建 Solr 容器,并使用 zookeeper:3.6.2
镜像来构建 ZooKeeper 容器。
构建镜像
在开始之前,我们需要构建 blog-solr:8.11.2
镜像。在当前目录下创建一个名为 Dockerfile
的文件,并将以下内容复制到文件中:
FROM solr:8.11.2
ENV JCSEG_LIB_DIR /opt/solr/server/solr-webapp/webapp/WEB-INF/lib/
COPY ./jar/jcseg-analyzer-2.4.0.jar $JCSEG_LIB_DIR
COPY ./jar/jcseg-core-2.4.0.jar $JCSEG_LIB_DIR
USER root
RUN mkdir -p $SOLR_HOME && chown -R solr:solr $SOLR_HOME && chmod -R 755 $SOLR_HOME
USER $SOLR_UID
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["solr-foreground"]
这个 Dockerfile 使用 solr:8.11.2
镜像作为基础镜像,并将自定义的中文分词器 jcseg 的 jar 文件复制到容器中。
接下来,在终端中执行以下命令来构建镜像:
docker build -t blog-solr:8.11.2 .
构建过程可能需要一些时间,具体时间取决于你的网络速度和系统性能。
启动 Solr Cloud
一旦镜像构建完成,我们可以使用 Docker Compose 启动 Solr Cloud。在终端中执行以下命令:
docker-compose up -d
这将启动 Solr Cloud 和 ZooKeeper 容器,并将它们连接到一个共享的网络中。
配置 Solr Cloud
一旦容器启动完成,我们可以通过访问 Solr 的管理界面来配置 Solr Cloud。打开浏览器,并访问 http://localhost:8981
,你将看到 Solr 的管理界面。
首先,我们需要创建一个 Solr Cloud 集合。点击界面上的 “Collections” 标签页,然后点击 “Add Collection” 按钮。
在 “Add Collection” 页面上,填写以下信息:
- Collection Name: 输入一个集合的名称,例如 “mycollection”.
- Number of Shards: 输入分片的数量,例如 “2”.
- Replication Factor: 输入副本因子的数量,例如 “2”.
点击 “Add Collection” 按钮来创建集合。
创建集合后,我们可以在 “Collections” 标签页上看到新创建的集合。
这样我们就可以在项目中愉快的使用 solr 啦 ~
评论区