couchbase_使用Portworx和Couchbase的有状态容器

couchbase

容器本应是短暂的,因此可以很好地扩展以用于无状态应用程序。 有状态的容器(例如Couchbase)需要区别对待。 管理Docker容器的持久性概述了如何管理有状态容器的持久性。

该博客将说明如何使用Docker Volume PluginsPortworx创建有状态的容器。

为什么选择Portworx?

Portworx是易于部署的容器数据服务,可提供持久性,复制,快照,加密,安全的RBAC等。 一些好处是:

  1. 容器粒度卷 – Portworx可以在每个主机上占用多个EBS卷,并聚合容量并派生每个容器的容器粒度虚拟(软)卷。
  2. 可用区HA – Portworx将在跨可用区的多个计算实例中以块级别保护数据。 随着复制控制器在不同节点上重新启动Pod,数据仍将在那些节点上具有高可用性。
  3. 支持企业数据操作 – Portworx在可用物理卷之上实施容器粒度快照,服务等级以及分层。
  4. 易于部署和配置 -Portworx本身作为容器部署,并与业务流程工具集成。 DevOps可以以编程方式提供具有任何属性的容器粒度存储,例如大小,服务等级,加密密钥等。

设置AWS EC2实例

Portworx仅在Linux或CoreOS上运行。 在AWS EC2上设置Ubuntu实例:

  1. 使用m3.medium实例类型启动Ubuntu 14.04实例。 确保将端口8091添加到入站安全规则。 这样,以后便可以访问Couchbase Web Console
  2. 使用以下命令登录到EC2实例: ssh -i ~/.ssh/arun-cb-west1.pem ubuntu@<public-ip>
  3. 更新Ubuntu实例: sudo apt-get update
  4. 安装Docker: curl -sSL https://get.docker.com/ | sh curl -sSL https://get.docker.com/ | sh 获取适用于Ubuntu的Docker可获得更多详细说明。
  5. 启用sudo usermod -aG docker ubuntu命令的非root用户访问权限: sudo usermod -aG docker ubuntu
  6. 从EC2实例注销并重新登录

创建AWS EBS卷

  1. docs中所述,使用EC2控制台为10GB创建EBS卷。
  2. 从EC2控制台获取实例ID。 使用此实例ID将此卷附加到EC2实例,使用默认设备名称/dev/sdf.

    /dev/sdf.

  3. 在EC2实例中使用lsblk命令来验证该卷是否已附加到该实例:
    NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0   8G  0 disk
    └─xvda1 202:1    0   8G  0 part /
    xvdb    202:16   0  30G  0 disk /mnt
    xvdf    202:80   0  10G  0 disk

Portworx集装箱

  1. 每个节点的物理存储结构,集群中所有已配置的卷及其容器映射都存储在etcd集群中。 启动一个etcd集群:
    docker run -v \
      /data/varlib/etcd \
      -p 4001:4001 \
      -d \
      portworx/etcd:latest
  2. 默认情况下,不允许共享根安装的卷。 使用以下命令启用此功能:
    sudo mount --make-shared /

    有关更多信息,请参见Ubuntu配置和共享安装

  3. 带有Docker Engine的服务器上的PX-Developer(px-dev)容器将该服务器转变为横向扩展存储节点。 另一方面,PX-Enterprise提供了多集群和多云支持,受管理的存储可以在内部部署,也可以在AWS等公共云中进行。
    对于此博客,我们将启动一个px-dev容器:
    docker run --restart=always --name px -d --net=host \
      --privileged=true                             \
      -v /run/docker/plugins:/run/docker/plugins    \
      -v /var/lib/osd:/var/lib/osd:shared           \
      -v /dev:/dev                                  \
      -v /etc/pwx:/etc/pwx                          \
      -v /opt/pwx/bin:/export_bin:shared            \
      -v /var/run/docker.sock:/var/run/docker.sock  \
      -v /var/cores:/var/cores                      \
      -v /usr/src:/usr/src                           \
      --ipc=host                                    \
      portworx/px-dev -daemon -k etcd://localhost:4001 -c cluster1 -s /dev/xvdf

    使用Docker运行PX中提供了有关此命令的完整详细信息。

  4. 使用docker container logs -f px查找日志,并注意以下语句:
    time="2017-02-16T05:33:26Z" level=info msg="Initialize the scheduler client and the scheduler watch" 
    time="2017-02-16T05:33:26Z" level=info msg="Started a kvdb watch on key : scheduler/containers" 
    time="2017-02-16T05:33:26Z" level=info msg="Started a kvdb watch on key : scheduler/volumes" 
    time="2017-02-16T05:33:26Z" level=info msg="Started a kvdb watch on key : scheduler/nodes/list"
  5. 使用sudo /opt/pwx/bin/pxctl status检查可用于Portworx的附加卷的sudo /opt/pwx/bin/pxctl status以查看输出:
    Status: PX is operational
    Node ID: 679b79b1-f4c3-413e-a8e0-c527348647c9
        IP: 172.31.25.21 
         Local Storage Pool: 1 pool
        Pool    IO_Priority    Size    Used    Status    Zone    Region
        0    LOW        10 GiB    266 MiB    Online    a    us-west-1
        Local Storage Devices: 1 device
        Device    Path        Media Type        Size        Last-Scan
        0:1    /dev/xvdf    STORAGE_MEDIUM_SSD    10 GiB        16 Feb 17 05:33 UTC
        total            -            10 GiB
    Cluster Summary
        Cluster ID: cluster1
        Node IP: 172.31.25.21 - Capacity: 266 MiB/10 GiB Online (This node)
    Global Storage Pool
        Total Used        :  266 MiB
        Total Capacity    :  10 GiB

    它显示了可用和已使用的总容量。

Docker卷

  1. 让我们创建一个Docker卷:
    docker volume create -d pxd -o size=10G -o fs=ext4 --name cbvol

    有关此命令的更多详细信息,请参见使用Docker创建卷

  2. 使用docker volume ls命令检查可用卷的列表:
    DRIVER              VOLUME NAME
    local               70f7b9a356df4c1f0c08e13a4e813f1ef3e174a91001f277a63b62d683a27159
    pxd                 cbvol
    local               f7bc5fa455a88638c106881f1bce98244b670e094d5fdc47917b53a88e46c073

    如图所示, cbvol是使用pxd驱动程序创建的。

带有Portworx卷的Couchbase

  1. 使用Portworx卷创建一个Couchbase容器:
    docker container run \
      -d \
      --name db \
      -v cbvol:/opt/couchbase/var \
      -p 8091-8094:8091-8094 \
      -p 11210:11210 \
      arungupta/couchbase

    注意将所有Couchbase数据存储在容器中的/opt/couchbase/var如何映射到主机上的cbvol卷。 该卷由Portworx映射。

  2. 通过http:// <public-ip>:8091登录到Couchbase Web Console,使用登录Administratorpassword作为密码。
  3. 转到数据桶并创建一个新的数据桶pwx:
  4. 在EC2实例中,请参阅容器列表:
    ubuntu@ip-172-31-25-21:~$ docker container ls
    CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                                                                                               NAMES
    8ae763d9d53b        arungupta/couchbase    "/entrypoint.sh /o..."   5 minutes ago       Up 5 minutes        0.0.0.0:8091-8094->8091-8094/tcp, 11207/tcp, 11211/tcp, 0.0.0.0:11210->11210/tcp, 18091-18093/tcp   db
    5423bcd9b426        portworx/px-dev        "/docker-entry-poi..."   14 minutes ago      Up 14 minutes                                                                                                           px
    cf3c779a4459        portworx/etcd:latest   "/entrypoint.sh /b..."   21 minutes ago      Up 21 minutes       2379-2380/tcp, 7001/tcp, 0.0.0.0:4001->4001/tcp                                                     youthful_jepsen

    etcdpx-devdb容器正在运行。

  5. 杀死db容器:
    docker container rm -f db
  6. 重新启动数据库容器为:
    docker container run \
      -d \
      --name db \
      -v cbvol:/opt/couchbase/var \
      -p 8091-8094:8091-8094 \
      -p 11210:11210 \
      arungupta/couchbase

    现在,由于cbvol再次映射到/opt/couchbase/var ,因此在重新启动/opt/couchbase/var保留数据。 可以通过访问Couchbase Web控制台并检查先前创建的pwx存储桶来验证这一点。

另一个有趣的观点也是为什么数据库不用于容器? 。 仅仅因为有了Docker,并不意味着您所有的数据库需求都应该被Docker化。 但是,如果需要,则有很多选择,可以在生产级应用程序中使用。

想更多地了解如何在容器中运行Couchbase?

翻译自: https://www.javacodegeeks.com/2017/03/stateful-containers-using-portworx-couchbase.html

couchbase

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值