启动一个本地集群
CockroachDB
安装完成后, 可以本地启动一个单节点服务器
或多节点集群
, 并通过内置的SQL客户端与服务器通信. 集群可以是不安全的
或安全的
方式启动.
- 不安全的
这是启动集群和学习CockroachDB
的最快方法(), 但在客户端和服务器之间没有验证和加密, 因此它仅限于测试和开发. - 安全的
启动一个带有验证的,加密
的客户端/服务端通信, 需要创建证书用于客户端和服务器端的通信.
不安全的(非加密)
1.从包含cockroach
的目录,启动第一个节点:
➜ cockroach git:(master) ./cockroach start --insecure
build: alpha.v1-735-gbfab4ae @ 2016/03/08 05:20:06 (go1.6)
admin: http://localhost:26257
sql: postgresql://root@localhost:26257?sslmode=disable
logs: cockroach-data/logs
store[0]: path=cockroach-data
-
--insecure
设置通信模式为非安全
模式. 服务器默认在端口26257
监听客户端请求, 如要绑定到其他端口, 使用--port=<port>
参数. - 节点存储默认为
cockroach-data
目录. 要存储到不同的位置, 设置--store=<filepath>
. 要使用多个存储, 但对为每一个设置该编辑. - 输出给出了一些
CockroachDB
版本等一些有帮助的信息, 管理UI的URL, 客户端节点的SQL URL, 以及节点数据和日志的存储位置.
2.对于每一个集群中的节点, 重复第一步的命令, 并附加额外的标记:
$ ./cockroach start --insecure --store=<filepath> --port=26258 --join=localhost:26257 &
- 设置
--store
参数指定一个未被其他节点使用的存储位置. 要使用多个存储, 分别为每一个设置该标记
详细的参数可通过 ./cockroach start --help
查看:
- 设置
--port
标记, 指定一个未被使用的端口 -
--join
参数加入该节点到集群. 设置该参数localhost
和第一个节点的端口号
$ ./cockroach sql --insecure
# Welcome to the cockroach SQL interface.
# All statements must be terminated by a semicolon.
# To exit: CTRL + D.
root@:26257> CREATE DATABASE bank;
CREATE DATABASE
root@:26257> SET DATABASE = bank;
SET DATABASE
root@:26257> CREATE TABLE accounts (id INT PRIMARY KEY, balance DECIMAL);
CREATE TABLE
root@26257> INSERT INTO accounts VALUES (1234, DECIMAL '10000');
INSERT 1
root@26257> SELECT * FROM accounts;
+------+---------+
| id | balance |
+------+---------+
| 1234 | 10000 |
+------+---------+
- 浏览器指向
http://localhost:26257
可以查看数据的管理控制台. 这在启动数据库的输出当中有提示.
安全的(加密通信)
1.在 cockroach
二进制程序所在的目录, 创建安全证书:
$ mkdir certs
$ ./cockroach cert create-ca --ca-cert=certs/ca.cert --ca-key=certs/ca.key
$ ./cockroach cert create-node localhost $(hostname) --ca-cert=certs/ca.cert --ca-key=certs/ca.key --cert=certs/node.cert --key=certs/node.key
$ ./cockroach cert create-client root --ca-cert=certs/ca.cert --ca-key=certs/ca.key --cert=certs/root.cert --key=certs/root.key
- 第一条命令创建一个新的目录用于存储证书文件
- 第二条命令创建
Certificate Authority (CA)
证书和秘钥:ca.cert
和ca.key
- 第三条命令创建节点证书和秘钥:
node.cert
和node.key
. 这些文件用于节点之间通信. 通常情况需要为每一个节点生成单独的这些文件, 因为每个节点都有其唯一的地址, 因为我们在本地运行左右节点, 这里只需要生成一个节点证书和秘钥. - 第四个命令创建客户端证书和秘钥, 比如对于
root
用户:root.cert
和root.key
. 这些文件用于内置客户端和集群之间的安全通信.
2.启动首个节点
$ ./cockroach start --ca-cert=certs/ca.cert --cert=certs/node.cert --key=certs/node.key &
build: alpha.v1-903-g51388a2 @ 2016/03/11 14:15:26 (go1.6)
admin: https://ROACHs-MBP:8080
sql: postgresql://root@ROACHs-MBP:26257?sslcert=%2FUsers%2F...
logs: cockroach-data/logs
store[0]: path=cockroach-data
-
--ca-cert
,--cert
, 以及--key
参数指向在第一个中创建的CA证书, 以及节点证书和秘钥. - 安全的内部和客户端通信端口为
26257
, 默认的HTTPS端口为8080. 要绑定不同的端口, 设置--port=<port>
和--http-port=<port>
参数. - 节点的数据默认存储在
cockroach-data
目录. 要存储到其他位置, 设置--store=<filepath>
参数. 要使用多个存储设备, 对每个设备分别设置. - 输出给出了一些CockroachDB版本等一些有帮助的信息, 管理UI的URL, 客户端节点的SQL URL, 以及节点数据和日志的存储位置.
3.对每个其他节点,重复步骤二, 并添加额外的参数:
$ ./cockroach start --store=node2-data --port=26258 --http-port=8081 --join=localhost:26257 --ca-cert=certs/ca.cert --cert=certs/node.cert --key=certs/node.key &
- 设置
--store
参数指定一个未被其他节点使用的存储位置. 要使用多个存储, 分别为每一个设置该标记 - 设置
--port
和--http-port
参数, 指定未被使用的端口 -
--join
参数加入该节点到集群. 设置该参数localhost
和第一个节点的端口号
$ ./cockroach sql --ca-cert=certs/ca.cert --cert=certs/root.cert --key=certs/root.key
# Welcome to the cockroach SQL interface.
# All statements must be terminated by a semicolon.
# To exit: CTRL + D.
-
--ca-cert
和--cert
, 以及--key
参数指向CA证书以及在第一步创建的root
用户的证书和秘钥. - 安全通信的默认端口为
26257
, 要指定不同的端口, 设置--port=<port>
参数.
root@:26257> CREATE DATABASE bank;
CREATE DATABASE
root@:26257> SET DATABASE = bank;
SET DATABASE
root@:26257> CREATE TABLE accounts (id INT PRIMARY KEY, balance DECIMAL);
CREATE TABLE
root@26257> INSERT INTO accounts VALUES (1234, DECIMAL '10000');
INSERT 1
root@26257> SELECT * FROM accounts;
+------+---------+
| id | balance |
+------+---------+
| 1234 | 10000 |
+------+---------+
5.浏览器指向 http://localhost:8080
可以查看数据的管理控制台. 这在启动数据库的输出当中有提示.