原始网页:https://www.cockroachlabs.com/docs/stable/orchestrate-cockroachdb-with-mesosphere-insecure.html


本小节将展示如何使用Mesosphere DC/OS工具,来编排部署和管理一个由3个节点构成的以非安全模式启动的CockroachDB集群。

WARNING: 在实际生产业务中不推荐使用非安全模式的集群,后期若能以安全模式部署,我们将会更新此页面。

前言

需求

安全模式 安全账户
strict 需要
permissive 可选
disabled 不需要

限制

CockroachDB在DC/OS中运行除了以下限制以外,跟其他环境一致:

Step 1: 安全和启动DC/OS

启动和运行DC/OS的最快方法是在AWS CloudFormation上使用开源DC/OS模板。此外,参照官方文档还可以使用其他开源或企业版的DC/OS安装方法:

使用AWS CloudFormation,安装过程将耗时10-15分钟。在CloudFormation界面显示CREATE_COMPLETE状态以后,用户需要启动DC/OS,并安装DC/OS CLI

Step 2: 启动CockroachDB

获取CockroachDB配置文件

按需调整。

dcos package describe --config cockroachdb

该配置文件默认创建了3个节点构成的CockroachDB集群,用户需要根据业务场景进行调整(可参考Recommended Production Settings),新配置文件重命名为cockroach.json

启动CockroachDB集群作为DC/OS服务

dcos package install cockroachdb
dcos package install cockroachdb --options=cockroach.json

在DC/OS用户界面的Services标签页监控集群部署状况

NOTE: 用户也可以在DC/OS用户界面安装CockroachDB

Step 3: 测试集群

获取CockroachDB集群的端点

dcos cockroachdb endpoints pg

{
  "address": [
    "10.0.0.212:26257",
    "10.0.2.57:26257",
    "10.0.3.81:26257"
  ],
  "dns": [
    "cockroachdb-0-node-init.cockroachdb.autoip.dcos.thisdcos.directory:26257",
    "cockroachdb-1-node-join.cockroachdb.autoip.dcos.thisdcos.directory:26257",
    "cockroachdb-2-node-join.cockroachdb.autoip.dcos.thisdcos.directory:26257"
  ],
  "vip": "pg.cockroachdb.l4lb.thisdcos.directory:26257"
}

该端点包括:

通常,.mesos端点只在同一个DC / OS集群中有效。 从集群外部,用户可以使用直接IP地址或设置作为CockroachDB实例机器网关的代理服务。 出于开发和测试目的,用户可以使用DC/OS隧道访问群集外部的服务,但此选项不适合生产系统使用。详见内容参考监控集群

SSH登陆DC/OS主节点

dcos node ssh --master-proxy --leader

启动临时容器运行SQL客户端

--host取值于vip端点:

docker run -it cockroachdb/cockroach:v2.0.5  sql --insecure --host=pg.cockroachdb.l4lb.thisdcos.directory

# Welcome to the cockroach SQL interface.
# All statements must be terminated by a semicolon.
# To exit: CTRL + D.
root@pg.cockroachdb.l4lb.thisdcos.directory:26257/>

执行SQL

CREATE DATABASE bank;
CREATE TABLE bank.accounts (id INT PRIMARY KEY, balance DECIMAL);
INSERT INTO bank.accounts VALUES (1, 1000.50);
SELECT * FROM bank.accounts;
+----+---------+
| id | balance |
+----+---------+
|  1 |  1000.5 |
+----+---------+
(1 row)

退出SQL shell并删除临时pod。

Step 4: 监控集群

使用DC/OS隧道运行HTTP代理,并用于访问集群的Admin界面。 - 安装DC/OS隧道包

dcos package install tunnel-cli --cli
sudo dcos tunnel http

Step 5: 拓展集群

默认的cockroachdb服务创建一个3个节点构成的CockroachDB集群。通过更新调度程序进程,可以在启动服务后向集群添加节点:

调度进程将使用新配置重新启动,并验证检测到的配置更改。 返回Admin界面,查看Node List,检查新增节点是否成功添加到群集中。

此外,用户可以SSH登陆到DC/OS的主节点,执行cockroach node status命令创建临时容器,--host取值于vip端点。

dcos node ssh --master-proxy --leader
docker run -it cockroachdb/cockroach:v2.0.5 node status --insecure --host=pg.cockroachdb.l4lb.thisdcos.directory

+----+--------------------------------------------------------------------------+--------+---------------------+---------------------+------------+-----------+-------------+--------------+--------------+------------------+-----------------------+--------+--------------------+------------------------+
| id |                                 address                                  | build  |     updated_at      |     started_at      | live_bytes | key_bytes | value_bytes | intent_bytes | system_bytes | replicas_leaders | replicas_leaseholders | ranges | ranges_unavailable | ranges_underreplicated |
+----+--------------------------------------------------------------------------+--------+---------------------+---------------------+------------+-----------+-------------+--------------+--------------+------------------+-----------------------+--------+--------------------+------------------------+
|  1 | cockroachdb-0-node-init.cockroachdb.autoip.dcos.thisdcos.directory:26257 | v1.1.3 | 2017-12-11 20:59:12 | 2017-12-11 19:14:42 |   41183973 |      1769 |    41187432 |            0 |         6018 |                2 |                     2 |      2 |                  0 |                      0 |
|  2 | cockroachdb-1-node-join.cockroachdb.autoip.dcos.thisdcos.directory:26257 | v1.1.3 | 2017-12-11 20:59:12 | 2017-12-11 19:14:52 |     115448 |     71037 |      209282 |            0 |         6218 |                4 |                     4 |      4 |                  0 |                      0 |
|  3 | cockroachdb-2-node-join.cockroachdb.autoip.dcos.thisdcos.directory:26257 | v1.1.3 | 2017-12-11 20:59:03 | 2017-12-11 19:14:53 |     120325 |     72652 |      217422 |            0 |         6732 |                4 |                     3 |      4 |                  0 |                      0 |
|  4 | cockroachdb-3-node-join.cockroachdb.autoip.dcos.thisdcos.directory:26257 | v1.1.3 | 2017-12-11 20:59:03 | 2017-12-11 20:21:43 |   41248030 |     79147 |    41338632 |            0 |         6569 |                1 |                     1 |      1 |                  0 |                      0 |
|  5 | cockroachdb-4-node-join.cockroachdb.autoip.dcos.thisdcos.directory:26257 | v1.1.3 | 2017-12-11 20:59:04 | 2017-12-11 20:56:54 |   41211967 |     30550 |    41181417 |            0 |         6854 |                1 |                     1 |      1 |                  0 |                      0 |
+----+--------------------------------------------------------------------------+--------+---------------------+---------------------+------------+-----------+-------------+--------------+--------------+------------------+-----------------------+--------+--------------------+------------------------+
(5 rows)

Step 6: 集群维护

更新配置

除了添加节点,用户还可以修改节点的CPU和内存要求,更新放置约束以及更改其他服务设置。参照Step 5操作,需要更新的环境变量。

重启节点

用户可以在同一位置重新启动节点,使用同样的持久卷数据。区别于系统重新启动进程,该操作不会删除不在持久卷上的任何数据。

dcos cockroachdb pod list

[
  "cockroachdb-0",
  "cockroachdb-1",
  "cockroachdb-2",
  "cockroachdb-3",
  "cockroachdb-4",
  "metrics-0"
]
dcos cockroachdb pods restart cockroachdb-<NUM>

替换节点

用户可以将节点移动到新系统,并丢弃先前系统使用的持久卷,以便在新系统中重建。节点不会自动移动,因此必须在合适时机执行节点移动,例如在系统脱机或系统已脱机之前。

dcos cockroachdb pod list

[
  "cockroachdb-0",
  "cockroachdb-1",
  "cockroachdb-2",
  "cockroachdb-3",
  "cockroachdb-4",
  "metrics-0"
]
dcos cockroachdb pods replace cockroachdb-<NUM>

访问日志进行问题定位

可以从DC/OS Web界面查看调度程序和服务(即CockroachDB)的日志。

日志通常通过管道传输到stdout和/或stderr命名的文件。 查看给定节点的日志:

备份和恢复

cockroachdb DC/OS服务能够方便地使用CockroachDB的开源命令cockroach dump将基于每个数据库的数据备份到S3存储桶并从此类备份恢复数据。目前尚不支持使用S3以外的数据存储。

TIPS: 用户若需要S3以外备份和恢复功能,或是需要针对超大数据库进行快速备份、增量备份、快速分布式恢复,可以考虑获取License使用CockroachDB提供的企业版功能。

备份

执行以下命令备份数据库的表

dcos cockroachdb backup [<flags>] <database> <s3-bucket>
flags 简介
--aws-access-key AWS访问密钥
--aws-secret-key AWS Secret密钥
--s3-dir AWS S3目标文件夹
--s3-backup-dir s3-dir里的目标文件夹
--region AWS区域

默认情况下,AWS访问密钥和Secret密钥可以分别从AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量中提取。用户必须定义这些环境变量或指定备份的标签才能生效。

考虑到备份在上载到S3之前会存储在本地硬盘上,占用的空间与表中当前的数据一样多,用户需要确保为节点配置足够的磁盘空间以执行备份操作。

恢复

可以执行以下命令进行恢复操作:

dcos cockroachdb restore [<flags>] <database> <s3-bucket> <s3-backup-dir>
flags 简介
--aws-access-key AWS访问密钥
--aws-secret-key AWS Secret密钥
--s3-dir AWS S3目标文件夹
--s3-backup-dir s3-dir里的目标文件夹
--region AWS区域

默认情况下,AWS访问密钥和Secret密钥可以分别从AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量中提取。用户必须定义这些环境变量或指定备份的标签才能生效。

Step 7: 停止集群

MY_SERVICE_NAME=cockroachdb
dcos package uninstall --app-id=$MY_SERVICE_NAME $MY_SERVICE_NAME
dcos node ssh --master-proxy --leader "docker run mesosphere/janitor /janitor.py \
-r $MY_SERVICE_NAME-role \
-p $MY_SERVICE_NAME-principal \
-z dcos-service-$MY_SERVICE_NAME"