在没有Zookeeper的Docker Swarm(1.12)上启动Solr云

时间:2016-09-01 12:22:06

标签: docker solr apache-zookeeper docker-swarm

我通过Vagrant在3台CoreOS机器上运行Docker Swarm 1.12。

在群集上启动Solr云的最佳方法是什么? 我需要Zookeeper吗?

我已经达到了这个目的:

docker service create --mode=global --name solr -p 8983:8983 solr:5.3.1 bash -c "/opt/solr/bin/solr start -f -c"

然而云是空的,因为它不知道其他2台机器,我怎么能在这里使用Swarm的电源?

1 个答案:

答案 0 :(得分:3)

文档

container image documentation描述了如何将Zookeeper作为分布式Solr设置的后备存储的互连:

  

您还可以运行Solr节点来运行分布式Solr配置   单独的容器,共享一个ZooKeeper服务器:

     

运行ZooKeeper,并定义一个名称,以便链接到它:

$ docker run --name zookeeper -d -p 2181:2181 -p 2888:2888 -p 3888:3888 jplock/zookeeper
     

运行两个链接到zookeeper容器的Solr节点:

$ docker run --name solr1 --link zookeeper:ZK -d -p 8983:8983 \
      solr \
      bash -c '/opt/solr/bin/solr start -f -z $ZK_PORT_2181_TCP_ADDR:$ZK_PORT_2181_TCP_PORT'

$ docker run --name solr2 --link zookeeper:ZK -d -p 8984:8983 \
      solr \
      bash -c '/opt/solr/bin/solr start -f -z $ZK_PORT_2181_TCP_ADDR:$ZK_PORT_2181_TCP_PORT'

在Docker Swarm上运行分布式Solr

从3节点群开始:

$ docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
2wkpmybf4wni8wia1s46lm2ml *  node1     Ready   Active        Leader
ajrnf5oibgm7b12ayy0hg5i32    node3     Ready   Active        
bbe8n1hybhruhhrhmswn7fjmd    node2     Ready   Active  

创建网络

$ docker network create --driver overlay my-net

启动zookeeper服务并等待它启动

$ docker service create --name zookeeper --replicas 1 --network my-net jplock/zookeeper

启动2个配置为连接到DNS地址“zookeeper”的solr实例。有关群集模式网络的更多信息,请阅读documentation

$ docker service create --name solr --replicas 2 --network my-net -p 8983:8983 \
   solr \
   bash -c '/opt/solr/bin/solr start -f -z zookeeper:2181'

Web UI将在群集中的任何节点上使用

http://192.168.99.100:8983/
http://192.168.99.101:8983/
http://192.168.99.102:8983/

如果检查服务,您会注意到容器分布在群集中的所有3个节点上。这是默认的调度行为

$ docker service ps zookeeper
ID                         NAME         IMAGE             NODE   DESIRED STATE  CURRENT STATE          ERROR
3fhipbsd4jdazmx8d7zum0ohp  zookeeper.1  jplock/zookeeper  node1  Running        Running 7 minutes ago  

$ docker service ps solr
ID                         NAME    IMAGE  NODE   DESIRED STATE  CURRENT STATE           ERROR
bikggwpyz5q6vdxrpqwevlwsr  solr.1  solr   node2  Running        Running 43 seconds ago  
cutbmjsmcxrmi1ld75eox0s9m  solr.2  solr   node3  Running        Running 43 seconds ago