Youtube演示视频

Step 1: 安装环境

go get github.com/cockroachdb/loadgen/ycsb

Step 2: 在云端-1开启3个节点

添加节点1

cockroach start --insecure --locality=cloud=1 --store=cloud1node1 --host=localhost --cache=100MB --join=localhost:26257,localhost:26258,localhost:26259

添加节点2

cockroach start --insecure --locality=cloud=1 --store=cloud1node2 --host=localhost --port=25258 --http-port=8081 --cache=100MB --join=localhost:26257,localhost:26258,localhost:26259

添加节点3

cockroach start --insecure --locality=cloud=1 --store=cloud1node3 --host=localhost --port=25259 --http-port=8082 --cache=100MB --join=localhost:26257,localhost:26258,localhost:26259

NOTE: --locality标记该节点所在集群拓扑结构图的一个地理逻辑位置。

Step 3: 初始化集群

cockroach init --insecure --host=localhost --port=26257

Step 4: 配置HAProxy负载均衡

CockroachDB集群的各个节点都能响应SQL请求,为了确保SQL请求负载均匀到各个节点,需要TCP网络负载均衡器。

执行cockroach gen haproxy命令:

cockroach gen haproxy --insecure --host=localhost --port=26257

上面命令会生成一个haproxy.cfg的文件,需要修改bind :26257bind :26000

global
  maxconn 4096

defaults
    mode                tcp
    timeout connect     10s
    timeout client      1m
    timeout server      1m

listen psql
    bind :26000
    mode tcp
    balance roundrobin
    server cockroach1 localhost:26257
    server cockroach2 localhost:26258
    server cockroach3 localhost:26259

开启HAProxy,使用-f标签指定配置文件haproxy.cfg

haproxy -f haproxy.cfg

Step 5: 数据生成

启动ycsb,指向HAProxy端口:

$HOME/go/bin/ycsb -duration 20m -tolerate-errors -concurrency 10 -max-rate 1000 'postgresql://root@localhost:26000?sslmode=disable'

上面命令生成了10个客户端连接,每个连接持续20分钟向集群节点写入、查询数据,总体上保持1000OPS的速度。

Step 6: 查看集群3个节点的数据分布

登陆Admin界面(http://localhost:8080),点击Metrics标签页。

图片

可以在SQL Queries图中看到读写混合负载的比例。

图片

可以在Replicas per Node看到数据冗余情况。

Step 7: 在云端-2添加3个节点的现有集群

添加节点4

cockroach start --insecure --locality=cloud=2 --store=cloud2node4 --host=localhost --port=26260 --http-port=8083 --cache=100MB --join=localhost:26257,localhost:26258,localhost:26259

添加节点5

cockroach start --insecure --locality=cloud=2 --store=cloud2node5 --host=localhost --port=25261 --http-port=8084 --cache=100MB --join=localhost:26257,localhost:26258,localhost:26259

添加节点6

cockroach start --insecure --locality=cloud=2 --store=cloud2node6 --host=localhost --port=25262 --http-port=8085 --cache=100MB --join=localhost:26257,localhost:26258,localhost:26259

NOTE: 此时--locality=cloud=2

Step 8: 查看集群6个节点数据分布

登陆Admin界面,可以看到集群数据重新均衡分布到6个节点当中。

图片

Step 9: 迁移数据到云端2

默认情况下数据随机地均衡分布到集群的各个节点。为了实现数据从云端-1迁移到云端-2,可以使用Hard Constraint功能:

echo 'constraints: [+cloud=2]' | cockroach zone set .default --insecure --host=localhost -f -

Step 10: 查看数据是否迁移

登陆Admin,可以看到数据从云端-2的节点迁移到云端-1的节点。

图片

Step 11: 关闭集群

在各个终端使用Ctrl+C终止程序。

如不再需要测试用的集群,可使用如下指令删除:

rm -rf cloud1node1 cloud1node2 cloud1node3 cloud2node4 cloud2node5 cloud2node6 haproxy.cfg

NOTE: 对于最后两个节点,可能需要花大约1min左右的时间去终止程序。原因是最后只剩下2个节点在集群当中的时候,由于已经丧失了集群当中冗余副本的绝大多数(此情况下是4/6),集群不再允许操作。如需加速终止程序的进程,可以尝试多次Ctrl+C操作。