原始网页:https://www.cockroachlabs.com/docs/stable/deploy-a-test-cluster.html


本小节将搭建一个非安全模式的多节点CockroachDB集群作为测试环境。具体来说,使用AWS CloudFormation云模板来简化机器安装,使用kubernetes来实现集群的自动部署、运维、负载均衡。

前言

以下是测试环境的系统限制和部署要求。

限制

WARNING: CockroachDB AWS CloudFormation template是专门设计用于测试,不适合直接使用于线上生产环境。

要求

Step 1: 启动CockroachDB

NOTE: 如果启动过程超时或失败,您可能遇到了AWS服务限制。您可以查看事件历史记录中的错误信息。

Step 2: 测试集群

cockroach sql --insecure --url="postgresql://root@Cockroach-ApiLoadB-LVZZ3VVHMIDA-1266691548.us-west-2.elb.amazonaws.com:26257?sslmode=disable"

# Welcome to the cockroach SQL interface.
# All statements must be terminated by a semicolon.
# To exit: CTRL + D.
#
# Server version: CockroachDB CCL v1.1.4 (linux amd64, built 2018/01/08 17:32:42, go1.8.3) (same version as client)
# Cluster ID: bc181e48-da0b-4336-a7a2-a041e195ab5c
#
# Enter \? for a brief introduction.
#
root@Cockroach-ApiLoadB-LVZZ3VVHMIDA-1266691548.us-west-2.elb.amazonaws.com:26257/>
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)

Tip: 使用本地机器的cockroach二进制,其他客户端cockroach命令可以以相同的方式运行。

Step 3: 监控集群

可以在Admin界面监控集群的负载和整个集群的行为。

Step 4: 模拟节点故障

Kubernetes能够保证集群始终保持预设数量的节点(默认3个)。当出现节点故障的时候,Kubernetes能够自动创建跟丢失节点相同网络标志符和持久卷的新节点,补充进集群。

kubectl get pods
NAME            READY     STATUS    RESTARTS   AGE
cockroachdb-0   1/1       Running   0          1h
cockroachdb-1   1/1       Running   0          1h
cockroachdb-2   1/1       Running   0          1h
kubectl delete pod cockroachdb-2
pod "cockroachdb-2" deleted

Step 5: 停止集群

在CloudFormation界面,选择Other Actions - Delete Stack,可以删除所有跟集群相关的AWS资源。注意如果不删除的话AWS会对使用的资源持续计费。