使用Docker Compose和Docker Machine的Docker Swarm上的Couchbase集群

这篇博客文章将解释如何使用完整的Docker装甲-Docker Machine,Docker Swarm和Docker Compose创建和扩展Couchbase集群。

这是我们要做的:

  • 使用Docker Machine创建3节点Docker Swarm集群
  • 在两个节点上运行Couchbase实例
  • 创建集群
  • 重新平衡集群
  • 再次扩展并重新平衡集群

couchbase-docker-swarm-0

使用Consul的Docker Swarm集群

使用Docker Machine创建一个三节点的Docker Swarm集群:

# Docker Machine for Consul
docker-machine \
   create \
   -d virtualbox \
   consul-machine
 
# Start Consul
docker $(docker-machine config consul-machine) run -d --restart=always \
         -p "8500:8500" \
         -h "consul" \
         progrium/consul -server -bootstrap
 
# Docker Swarm master
docker-machine \
  create \
  -d virtualbox \
  --swarm \
  --swarm-master \
  --swarm-discovery="consul://$(docker-machine ip consul-machine):8500" \
  --engine-opt="cluster-store=consul://$(docker-machine ip consul-machine):8500" \
  --engine-opt="cluster-advertise=eth1:2376" \
  swarm-master
 
# Docker Swarm node-01
docker-machine \
  create \
  -d virtualbox \
  --swarm \
  --swarm-discovery="consul://$(docker-machine ip consul-machine):8500" \
  --engine-opt="cluster-store=consul://$(docker-machine ip consul-machine):8500" \
  --engine-opt="cluster-advertise=eth1:2376" \
  swarm-node-01
 
# Docker Swarm node-02
docker-machine \
  create \
  -d virtualbox \
  --virtualbox-disk-size "5000" \
  --swarm \
  --swarm-discovery="consul://$(docker-machine ip consul-machine):8500" \
  --engine-opt="cluster-store=consul://$(docker-machine ip consul-machine):8500" \
  --engine-opt="cluster-advertise=eth1:2376" \
  swarm-node-02
 
# Configure to use Docker Swarm cluster
eval "$(docker-machine env --swarm swarm-master)"

使用Docker Machine设置Swarm集群可提供有关此脚本执行的原因和操作的更多详细信息。 总结如下:

  • 创建一个Docker Machine并运行Consul进行服务发现
  • 创建三台Docker计算机-一台用于Master节点,两台用于Worker节点。每台计算机都使用--swarm配置为Swarm集群的--swarm 。 它还使用通过--swarm-discovery指定的Consul服务--swarm-discovery

Docker Swarm上的Couchbase节点

使用Docker Compose创建两个Couchbase实例:

version: &2&
services:
  db:
    image: arungupta/couchbase
    network_mode: &host&
    ports:
      - 8091:8091
      - 8092:8092
      - 8093:8093
      - 11210:11210

这里使用arungupta/couchbase图像。 该映像在Couchbase Docker映像中定义 它使用Official Couchbase Docker Image add对其进行配置,如下所述:

  1. 设置索引和数据的内存
  2. 使用索引,数据和查询服务配置Couchbase服务器
  3. 设置用户名和密码凭证
  4. 装载travel-sample

撰写文件使用host网络。 这等效于在--net=host run CLI上使用--net=host 。 它允许容器使用主机网络堆栈。 它还仅将单个Couchbase容器限制在单个Docker Machine上运行。 因此,这意味着我们的Couchbase集群可以根据Docker Machines的数量进行扩展-在我们的示例中为3。

使用此Compose文件的确切命令是:

docker-compose scale db=2
WARNING: The "db" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.
Creating and starting couchbasedockerswarm_db_1 ... 
Creating and starting couchbasedockerswarm_db_2 ... 
Pulling db (arungupta/couchbase:latest)...
swarm-node-02: Pulling arungupta/couchbase:latest...
swarm-master: Pulling arungupta/couchbase:latest...
swarm-node-01: Pulling arungupta/couchbase:latest...
Pulling db (arungupta/couchbase:latest)...
swarm-node-02: Pulling arungupta/couchbase:latest... : downloaded
Creating and starting couchbasedockerswarm_db_1 ... done
Creating and starting couchbasedockerswarm_db_2 ... done

Docker Swarm集群中有三个节点。 默认的调度程序策略spread ,因此容器将传播到不同的主机上。

docker ps可以证明这一点:

docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
4c8c149f4e34        arungupta/couchbase   &/entrypoint.sh /opt/&   44 seconds ago      Up 44 seconds                           swarm-node-02/couchbasedockerswarm_db_1
d3b6a1dbddb5        arungupta/couchbase   &/entrypoint.sh /opt/&   44 seconds ago      Up 44 seconds                           swarm-node-01/couchbasedockerswarm_db_2

请注意,一台Couchbase服务器在swarm-node-01上运行,另一台在swarm-node-02 。 每个服务器都配置有管理员用户名Administrator和密码password

找出Docker机器的IP地址:

docker-machine ls
NAME             ACTIVE      DRIVER       STATE     URL                         SWARM                   DOCKER    ERRORS
consul-machine   -           virtualbox   Running   tcp://192.168.99.106:2376                           v1.11.1   
default          -           virtualbox   Running   tcp://192.168.99.100:2376                           v1.11.0   
swarm-master     * (swarm)   virtualbox   Running   tcp://192.168.99.107:2376   swarm-master (master)   v1.11.1   
swarm-node-01    -           virtualbox   Running   tcp://192.168.99.108:2376   swarm-master            v1.11.1   
swarm-node-02    -           virtualbox   Running   tcp://192.168.99.109:2376   swarm-master            v1.11.1

如果安装了jq,则可以方便地找到IP地址:

docker-machine inspect swarm-node-01 | jq &.Driver.IPAddress&
&192.168.99.108&

Docker Swarm上的Couchbase集群

创建的所有Couchbase服务器节点均相等。 这使Couchbase集群真正可以水平扩展,以满足您不断增长的应用程序需求。 可以通过调用server-add CLI命令server-add独立运行的Couchbase节点添加到群集中。 这通常是一个两步过程。 第一步是添加一个或多个节点。 然后,第二步重新平衡群集,在现有节点上的数据将在更新后的群集之间重新平衡。

在我们的例子中,每个Docker机器上都运行一个Couchbase容器。 让我们选择一个Couchbase节点的IP地址,并添加另一个节点的IP地址:

docker run -it arungupta/couchbase \
couchbase-cli \
server-add \
--cluster=`docker-machine inspect swarm-node-01 | jq -r &.Driver.IPAddress&`:8091 \
--user Administrator \
--password password \
--server-add=`docker-machine inspect swarm-node-02 | jq -r &.Driver.IPAddress&` \
--server-add-username=Administrator \
--server-add-password=password
SUCCESS: server-add 192.168.99.109:8091

两个节点的Couchbase Web控制台将显示类似的输出:

couchbase-docker-swarm-1

couchbase-docker-swarm-2

这表明两个节点现在组成一个集群,需要重新平衡。

重新平衡Couchbase群集

现在,让我们重新平衡集群:

docker run -it arungupta/couchbase couchbase-cli rebalance --cluster=`docker-machine inspect swarm-node-01 | jq -r &.Driver.IPAddress&`:8091 --user Administrator --password password 
INFO: rebalancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
SUCCESS: rebalanced cluster

Couchbase Web Console将被更新,以显示正在发生重新平衡:

couchbase-docker-swarm-3

最后,您将看到一个重新平衡的集群:

couchbase-docker-swarm-4

扩展和重新平衡Couchbase集群

扩展Couchbase集群:

docker-compose scale db=3
WARNING: The &db& service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.
Creating and starting couchbasedockerswarm_db_3 ... done

检查容器是否在其他Docker Machine上运行:

docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
02f94e2bbd3e        arungupta/couchbase   &/entrypoint.sh /opt/&   9 seconds ago       Up 8 seconds                            swarm-master/couchbasedockerswarm_db_3
4c8c149f4e34        arungupta/couchbase   &/entrypoint.sh /opt/&   About an hour ago   Up About an hour                        swarm-node-02/couchbasedockerswarm_db_1
d3b6a1dbddb5        arungupta/couchbase   &/entrypoint.sh /opt/&   About an hour ago   Up About an hour                        swarm-node-01/couchbasedockerswarm_db_2

如前所述,扩展Couchbase集群是一个两步过程。 之所以如此,是因为通常您将添加多个服务器,然后重新平衡群集。 但是,在只需要添加一个Couchbase节点然后重新平衡的情况下,可以使用rebalance命令来实现。

在我们的例子中,如下所示:

docker run -it arungupta/couchbase couchbase-cli rebalance --cluster=`docker-machine inspect swarm-node-01 | jq -r &.Driver.IPAddress&`:8091 --user Administrator --password password --server-add=`docker-machine inspect swarm-master | jq -r &.Driver.IPAddress&` --server-add-username=Administrator --server-add-password=password
SUCCESS: server-add 192.168.99.107:8091
INFO: rebalancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SUCCESS: rebalanced cluster

重新平衡的集群现在看起来像:
couchbase-docker-swarm-5

该博客显示了如何使用Docker Swarm,Machine和Compose轻松创建和扩展Couchbase集群。

请享用!

翻译自: https://www.javacodegeeks.com/2016/05/couchbase-cluster-docker-swarm-using-docker-compose-docker-machine.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值