Cockroachdb 二、手动部署

时间:2021-11-28 12:50:31

二 集群手动部署
**需求**
a 本地已安装CockroachDB
b 可SSH访问每台机器,用于分发二进制文件和证书
c 端口 26257 用于集群内部通信及客户端访问连接HAProxy
8080 Admin UI

**建议**
上篇提到的有关集群拓扑、同步时钟、文件描述符限制。

**第一步,生成证书**
a CA key pair ca.crt和ca.key
b node key pair ,IP 和 机器名
c client key pair 给root用户

提示,在开始之前收集机器的内部IP外网IP ,servername 等。

1 本机安装cockroachDB,如果没有的情况。
2 创建俩个目录
$ mkdir certs
$ mkdir my-safe-directory

certs 目录: 这里将用于存放你生成的CA证书所有的node和client证书和key。并将用于上传到指定的节点中。
my-safe-directory 目录 : 用来存放生成的ca.key。ca.key在生成node,client的证书和key时需要使用。一定要保存好了不能丢!不能让别人拿到!!

3 创建CA证书

$ cockroach cert create-ca \
--certs-dir=certs \
--ca-key=my-safe-directory/ca.key

4 生成第一个节点的证书
$ cockroach cert create-node <node1 internal IP address> <node1 external IP address> <node1 hostname> <other common names for node1> localhost 127.0.0.1 <haproxy internal IP addresses> <haproxy external IP addresses> <haproxy hostnames> <other common names for haproxy instances> --certs-dir=certs --ca-key=my-safe-directory/ca.key

5 证书上传到第一个节点
# Create the certs directory:
$ ssh <username>@<node1 address> "mkdir certs"
# Upload the CA certificate and node certificate and key:
$ scp certs/ca.crt certs/node.crt certs/node.key <username>@<node1 address>:~/certs

6 如法炮制第二、三 ...个节点证书

7 生成root用户证书
$ cockroach cert create-client root --certs-dir=certs --ca-key=my-safe-directory/ca.key

**第二步,启动第一个节点**

$ cockroach start --background --certs-dir=certs --host=<node1 address>

**第三步,加入新节点**

$ cockroach start --background --certs-dir=certs --host=<node address> --join=<node1 address>:26257
加入第二个,第三个....

**第四步,测试集群**

在其中一个节点创建数据库,在其他任意个节点查看创建结果

登录
$cockroach sql --certs-dir=certs --host=<node1 address>
创建
>CREATE DATABASE securenodetest;
退出
CTRL + D, CTRL + C, or \q
查看
>SHOW DATABASES;

**第五步,设置HAproxy 负载均衡**
虽然集群中的每个节点都能作为SQL网关。但是考虑到性能和可用性问题,引入HAproxy。
提示:在使用单个负载均衡时,虽然解决了节点挂机问题但是负载均衡本身仍然存在单点故障。解决方式可采用多节点负载均衡并结合DNS或浮动IP方式

a 生成ha配置文件 haproxy.cfg
$cockroach gen haproxy --certs-dir=certs --host=<address of any node> --port=26257

b 安装ha
apt-get install haproxy

c 启动
$haproxy -f haproxy.cfg

**第六步,测试HA**

a 登录

cockroach sql \
--certs-dir=certs \
--host=<haproxy address>

b 查看

SHOW DATABASES;
>SELECT node_id FROM crdb_internal.node_build_info LIMIT 1;