Solr в Docker, Как создать распределенную коллекцию, совместно используемую в каталоге подключенных томов - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь установить облако соларов в докере.Я использую docker-compose, чтобы поднять облако.Я создаю облако, содержащее 3 контейнера zookeepers и 4 solrs (solr1, solr2, solr3, solr4).Создание распределенной коллекции из 4 осколков и 2 реплик является холодным.Проблема заключается в том, что при создании коллекции на смонтированном томе создается резервная копия на машине вне докера.Я могу смонтировать том каталога с компьютера на облачное решение для каждого контейнера, но не могу создать коллекцию там.Когда я создаю распределенную коллекцию по

docker exec -it solr1 /opt/solr/bin/solr create_collection -c publications -s 4 -rf 2 -p 8983

, у меня есть каталоги с двумя ядрами в контейнерах, например, для solr1 есть

/opt/solr/server/solr/publications_shard2_replica_n6

и

/opt/solr/server/solr/publications_shard4_replica_n14

для шарда2, У меня есть каталоги двух ядер в контейнерах, например для solr1 есть

/opt/solr/server/solr/publications_shard1_replica_n1

и

/opt/solr/server/solr/publications_shard3_replica_n8

и т. Д.Имена ядер являются динамическими.

Как их создать в моей папке томов, которая

/root/solr/cores

My docker-compose.yml выглядит следующим образом

version: "3.1"
services:
  solr1:
    image: solr:latest
    environment:
      - JVM_OPTS=-Xmx12g -Xms12g -XX:MaxPermSize=1024m
    ports:
      - "8983:8983"
    restart: always
    container_name: solr1
    volumes:
     - /root/solr/mycores:/opt/solr/server/solr/mycores
    deploy:
      mode: replicated
      replicas: 2
      resources:
    limits:
      memory: 1g
      restart_policy:
    condition: on-failure
    links:
      - zookeeper1
      - zookeeper2
      - zookeeper3
    command: bash -c '/opt/solr/bin/solr start -f -z zookeeper1:2181,zookeeper2:2182,zookeeper2:2183 -m 1g'
  solr2:
    image: solr:latest
    ports:
      - "8984:8984"
    restart: always
    container_name: solr2
    volumes:
     - /root/solr/cores:/opt/solr/server/solr/mycores
    deploy:
      replicas: 2
      resources:
    limits:
      memory: 1g
      restart_policy:
    condition: on-failure
    links:
      - zookeeper1
      - zookeeper2
      - zookeeper3
      - solr1
    command: bash -c '/opt/solr/bin/solr start -f -z zookeeper1:2181,zookeeper2:2182,zookeeper3:2183 -m 1g'
  solr3:
    image: solr:latest
    ports:
      - "8985:8985"
    restart: always
    container_name: solr3
    volumes:
     - /root/solr/cores:/opt/solr/server/solr/mycores
    deploy:
      replicas: 2
      resources:
    limits:
      memory: 1g
      restart_policy:
    condition: on-failure
    links:
      - zookeeper1
      - zookeeper2
      - zookeeper3
      - solr1
      - solr2
    command: bash -c '/opt/solr/bin/solr start -f -z zookeeper1:2181,zookeeper2:2182,zookeeper3:2183 -m 1g'
  solr4:
    image: solr:latest
    ports:
      - "8986:8986"
    restart: always
    container_name: solr4
    volumes:
     - /root/solr/cores:/opt/solr/server/solr/mycores
    deploy:
      replicas: 2
      resources:
    limits:
      memory: 1g
      restart_policy:
    condition: on-failure
    links:
      - zookeeper1
      - zookeeper2
      - zookeeper3
      - solr1
      - solr2
      - solr3
    command: bash -c '/opt/solr/bin/solr start -f -z zookeeper1:2181,zookeeper2:2182,zookeeper3:2183 -m 1g'
  zookeeper1:
    image: jplock/zookeeper:latest
    container_name: zookeeper1
    ports:
      - "2181:2181"
      - "2888:2888"
      - "3888:3888"
    restart: always
  zookeeper2:
    image: jplock/zookeeper:latest
    container_name: zookeeper2
    ports:
      - "2182:2182"
      - "2889:2889"
      - "3889:3889"
    restart: always
  zookeeper3:
    image: jplock/zookeeper:latest
    container_name: zookeeper3
    ports:
      - "2183:2183"
      - "2890:2890"
      - "3890:3890"
    restart: always

1 Ответ

0 голосов
/ 21 мая 2018

Я нашел решение.Нужно было добавить в файл docker-compose.yml параметр -t и доставить каталог данных /opt/solr/server/solr/mycores.Отредактированная строка под

command: bash -c '/opt/solr/bin/solr start -f -z zookeeper1:2181,zookeeper2:2182,zookeeper2:2183 -m 1g -t /opt/solr/server/solr/mycores'
...