侧边栏壁纸
博主头像
极客日记 博主等级

行动起来,活在当下

  • 累计撰写 93 篇文章
  • 累计创建 17 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

基于docker搭建SolrCloud环境

Jack.Jia
2023-09-28 / 0 评论 / 0 点赞 / 10 阅读 / 0 字

前言

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 啦 ~

0

评论区