您的位置:首页 > 其它

在单机上构建 insecure 多节点CockroachDB集群

2018-10-05 17:19 1126 查看

       本文将向大家介绍如何在一台机器上(可以是物理机,也可以是一台虚拟机)创建insecure多节点CockroachDB集群(在示例中我们将创建一个具有3节点的CRDB数据库集群)。这种方式创建的集群非常适合大家学习CRDB使用。在本人后续的很多文章中所描述的示例,为了方便大家试验和运行将采用这种方式创建CRDB集群。

      这里所说的不安全模式 (insecure) 是指集群的各节点之间以及client与集群节点之间的通讯不加密,而安全模式(secure)使用TLS证书对通信进行加密。在生产环境下建议创建secure多节点CockroachDB集群。对于在单机上创建secure多节点CockroachDB集群的方法,在后续的文章中介绍。

环境说明

一个虚拟机:8G Mem 、4 VCores

操作系统:CentOS 7.4

操作系统用户: crdb  用户组:newsql 该用户具有sudo权限(假设读者已经掌握在Linux上创建用户和组以及设置权限的方法,本文不进行描述)

CockroachDB版本:2.0.6 (目前最新的发布版本)

 

下面开始介绍具体的创建方法

     1. 创建目录

         我们需要在操作系统的文件系统中创建一个目录,用于存放CRDB使用的文件

$ sudo mkdir /data/crdb

$ sudo chown crdb:newsql -R /data/crdb

     2. 安装CRDB

$ cd /tmp

$ wget https://binaries.cockroachdb.com/cockroach-v2.0.6.linux-amd64.tgz

$ tar xvfz cockroach-v2.0.6.linux-amd64.tgz

$ sudo mv cockroach-v2.0.6.linux-amd64/cockroach /usr/local/bin   

$ rm -Rf cockroach-v2.0.6.linux-amd64

     3. 启动第一个节点

        使用cockroach start命令启动第一个节点:

$cockroach start --insecure --store="/data/crdb/node1" --host=0.0.0.0 --port=26257 --http-port=8080 --join=0.0.0.0:26257,0.0.0.0:26258,0.0.0.0:26259 &

 

       执行上面的命令后,输出如下:

*

* WARNING: RUNNING IN INSECURE MODE!

*

* - Your cluster is open for any client that can access localhost.

* - Any user, even root, can log in without providing a password.

* - Any user, connecting as root, can read or write any data in your cluster.

* - There is no network encryption nor authentication, and thus no confidentiality.

*

* Check out how to secure your cluster: https://www.cockroachlabs.com/docs/stable/secure-a-cluster.html

*

命令参数说明:

参  数

描 述

--insecure

指示cockroachdb数据库集群节点之间通讯不加密。

当crdb集群头一个节点使用--insecure参数启动时,那么后续在启动节点时或者使用cockroach命令执行操作时都要加上这个参数。

如果不带这个参数,cockroach命令将会查找安全证书以加密通讯。

--store

指定本地目录,用于存储节点的数据和日志

--host

指定节点的主机名或IP地址,这个地址用于节点间通讯或者客户端访问节点时使用。

--port

指定节点的通讯端口,这个端口用于节点间通讯或者客户端访问节点时使用。

这个参数的缺省值是26257。

--http-port

指定CockroachDB admin UI监听的端口。这个参数的缺省值是8080。

--join

创建CockroachDB集群时,所有初始节点的地址和TCP端口。

在启动所有初始节点时,都需要加上这个参数,并且参数值应当相同。

 

 

 

注意:

        可以执行cockroach start --help查看命令的参数描述,也可以执行cockroach --help查看查看所有的命令参数描述。

 

     4. 启动另两个节点

        使用cockroach start命令能够再启动多个节点,这些节点是第1个节点启动时--join参数中指定的初始节点(除第1个节点之外的节点)。

--启动第2个节点

$cockroach start --insecure --store="/data/crdb/node2" --host=0.0.0.0 --port=26258 --http-port=8081 --join=0.0.0.0:26257,0.0.0.0:26258,0.0.0.0:26259 &

--启动第3个节点

$cockroach start --insecure --store="/data/crdb/node3" --host=0.0.0.0 --port=26259 --http-port=8082 --join=0.0.0.0:26257,0.0.0.0:26258,0.0.0.0:26259 &

 

      5. 初始化CockroachDB集群

      在前面的步骤中,我们执行带有--jon参数的cockroach start只是启动了节点,但是这些节点还不能正常工作,需要执行初始化后CRDB集群才完成创建,对外正常工作。

         (1) 执行cockroach init命令初始化集群

  $ cockroach init --insecure 

         你将会看到输出的信息中如果出现如下信息,表示集群初始化成功:

Cluster successfully initialized

         (2) 下面是初始化时3个节点显示的完整输出:

  $ CockroachDB node starting at 2018-10-05 09:12:58.657491019 +0000 UTC (took 65.8s)

build:               CCL v2.0.6 @ 2018/10/01 13:59:40 (go1.10)
admin:               http://0.0.0.0:8080
sql:                 postgresql://root@0.0.0.0:26257?sslmode=disable
logs:                /data/crdb/node1/logs
temp dir:            /data/crdb/node1/cockroach-temp941783697
external I/O path:   /data/crdb/node1/extern
store[0]:            path=/data/crdb/node1
status:              initialized new cluster
clusterID:           c537a7bc-6fee-4c2a-bb1d-d7630b245247
nodeID:              1

CockroachDB node starting at 2018-10-05 09:12:59.137653974 +0000 UTC (took 35.1s)

build:               CCL v2.0.6 @ 2018/10/01 13:59:40 (go1.10)
admin:               http://0.0.0.0:8081
sql:                 postgresql://root@0.0.0.0:26258?sslmode=disable
logs:                /data/crdb/node2/logs
temp dir:            /data/crdb/node2/cockroach-temp477522607
external I/O path:   /data/crdb/node2/extern
store[0]:            path=/data/crdb/node2
status:              initialized new node, joined pre-existing cluster
clusterID:           c537a7bc-6fee-4c2a-bb1d-d7630b245247
nodeID:              2

CockroachDB node starting at 2018-10-05 09:13:00.756600674 +0000 UTC (took 18.5s)

build:               CCL v2.0.6 @ 2018/10/01 13:59:40 (go1.10)
admin:               http://0.0.0.0:8082
sql:                 postgresql://root@0.0.0.0:26259?sslmode=disable
logs:                /data/crdb/node3/logs
temp dir:            /data/crdb/node3/cockroach-temp004902255
external I/O path:   /data/crdb/node3/extern
store[0]:            path=/data/crdb/node3
status:              initialized new node, joined pre-existing cluster
clusterID:           c537a7bc-6fee-4c2a-bb1d-d7630b245247
nodeID:              3

 

下表是输出字段的描述:

字段

描述

build

运行的CockroachDB版本号

admin

Admin UI访问的URL地址

sql

客户端连接CockroachDB的URL

logs

包含日志文件的文件系统目录

store

存储节点数据的目录

status

节点的状态。可能的状态有:

(1) “initialized new cluster”:集群中头一个节点(在执行init 之前启动的第一个节点)。例如:上面输出的nodeID为1的节点。

(2) “initialized new node, joined pre-existing cluster”:第一次加入集群的节点,--join参数指定的除头一个启动的接节点之外的节点都是这个状态。例如:上面输出的节点2和3.

(3) “restarted pre-existing node”:重新加入集群的节点会显示这个状态。

clusterID

集群的唯一标识

nodeID

节点的唯一标识

 

      6. 检验数据库集群状态

         (1) 使用cockroach node status命令检查集群中节点的状态(本示例crdb数据库集群 是由3个节点组成):

 $ cockroach node status --insecure

 

         (2) 使用cockroach sql命令查询数据库情况:

$ cockroach sql --insecure --port=26257 --execute="SHOW DATABASES;"

      (3)访问Admin UI

        通过访问CRDB集群中的任何一个节点的http port端口(在启动节点时--http-port参数制定),我们可以看到用于管理和监控CRDB的web页面。例如:

        http://192.168.1.171:8081  

        下图是显示的Admin UI的界面:        

        到此,我们就在一台机器上构建好具有3个节点的CockroachDB集群了。最后介绍一下停止和启动CRDB集群的方法:

## 停止CRDB集群

$ pkill cockroach

## 启动CRDB集群

编写一个sh脚本(假设叫做start-crdb-3.sh),方便以后每次启动创建好的这个集群。脚本内容如下:

#!/bin/bash

#start first node
cockroach start \
--insecure \
--store="/data/crdb/node1" \
--host=0.0.0.0 \
--port=26257 \
--http-port=8080 \
--join=0.0.0.0:26257,0.0.0.0:26258,0.0.0.0:26259 &

#start second node
cockroach start \
--insecure \
--store="/data/crdb/node2" \
--host=0.0.0.0 \
--port=26258 \
--http-port=8081 \
--join=0.0.0.0:26257,0.0.0.0:26258,0.0.0.0:26259 &

#start third node
cockroach start \
--insecure \
--store="/data/crdb/node3" \
--host=0.0.0.0 \
--port=26259 \
--http-port=8082 \
--join=0.0.0.0:26257,0.0.0.0:26258,0.0.0.0:26259 &

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: