首页 > 编程知识 正文

k8s部署nacos集群,MySQL集群

时间:2023-05-03 10:12:01 阅读:284878 作者:2209

CockroachDB支持secure和insecure两种集群部署方式,本文重点介绍secure模式下CockroachDB集群的搭建过程、集群的状态查看方法、集群重启、CockroachDB版本升级以及Trouble Shooting方法。

集群部署

1. 环境准备

1)机器IP列表:192.168.180.21,192.168.180.22 ,192.168.180.23

2)CentOS 6.3以上(也支持Ubuntu)

3)启用NTP服务

4)调整单进程可打开的最大文件句柄数的限制,建议 >100000

5)下载CockroachDB可执行文件(官方下载地址:https://www.cockroachlabs.com/docs/releases/,本文使用版本v1.0.4)

2. 集群搭建(secure模式)

secure模式下CockroachDB集群使用TLS(安全传输层协议)加密节点间以及客户端到节点的通信,集群搭建步骤:

1)使用cockroach certs create-ca命令生成公用的CA证书与私钥

2)使用cockroach cert create-client命令生成root用户的证书与私钥

3)各个节点通过cockroach certs create-node 命令使用公用的CA证书与私钥生成各自的节点证书和私钥(节点启动时通过节点证书和私钥连接到其他节点)

4)逐一启动所有节点(可以使用root用户的证书和私钥以root用户连接至节点检验节点是否成功启动)

使用上述3台机器搭建一个3副本的secure模式CockroachDB集群步骤:

1)各个节点生成cockroach安装目录 /home/cockroach/CockroachDB,证书目录/home/cockroach/CockroachDB/certs和数据目录/ssd/CockroachDB/cockroach-data,下载可执行文件cockroach存放于安装目录中:

wget https://binaries.cockroachdb.com/cockroach

-v1.0.4.linux-amd64.tgz

tar -xvf cockroach-v1.0.4.linux-amd64.tgz

mv cockroach-v1.0.4.linux-amd64/cockroach

/home/cockroach/CockroachDB

2)使用cockroach cert create-ca命令生成CA证书ca.crt和私钥文件ca.key,在192.168.180.21上运行命令:

cd /home/cockroach/CockroachDB

./cockroach cert create-ca –certs-dir=certs

–ca-key=certs/ca.key

–allow-ca-key-reuse –overwrite

3)使用cockroach cert create-client命令生成root用户证书client.root.crt和私钥client.root.key,用于客户端以证书方式访问CockroachDB,在192.168.180.21上运行命令:

cd /home/cockroach/CockroachDB

./cockroach cert create-client root

–certs-dir=certs

–ca-key=certs/ca.key

–overwrite

将/home/cockroach/CockroachDB/certs下的所有文件推送至其他节点的证书目录

4)使用cockroach cert create-node命令创建节点证书node.crt和私钥文件node.key,以192.168.180.21为例,证书生成方式:

cd /home/cockroach/CockroachDB

./cockroach cert create-node 192.168.180.21

–certs-dir=certs

–ca-key=certs/ca.key

–overwrite

同理192.168.180.22,192.168.180.23生成各自的节点证书和私钥

5) 启动节点192.168.180.21

/home/cockroach/CockroachDB/cockroach start

–port=26257 –http-port=8080

–store=path=/ssd/CockroachDB/cockroach-data

–certs-dir=/home/cockroach/CockroachDB/certs

–host=192.168.180.21 –background

检查CockroachDB是否正常启动

/home/cockroach/CockroachDB/cockroach sql

–port=26257 –host=192.168.180.22 -e “select 1”

6) 启动节点192.168.180.22

/home/cockroach/CockroachDB/cockroach start

–port=26257 –http-port=8080

–store=path=/ssd/CockroachDB/cockroach-data

–join=192.168.180.21:26257

–join=192.168.180.22:26257

–certs-dir=/home/cockroach/CockroachDB/certs

–host=192.168.180.22 –background

检查CockroachDB是否正常启动

/home/cockroach/CockroachDB/cockroach sql

–port=26257 –host=192.168.180.22 -e “select 1”

7)启动节点192.168.180.23

/home/cockroach/CockroachDB/cockroach start

–port=26257 –http-port=8080

–store=path=/ssd/CockroachDB/cockroach-data

–join=192.168.180.21:26257

–join=192.168.180.22:26257

–certs-dir=/home/cockroach/CockroachDB/certs

–host=192.168.180.23 –background

检查CockroachDB是否正常启动

/home/cockroach/CockroachDB/cockroach sql

–port=26257 –host=192.168.180.23 -e “select 1”

至此,一个3节点3副本的集群搭建完成。

集群重启

1. 节点重启:单个节点重启可调用cockroach quit命令关闭cockroach进程,然后调用cockroach start 命令启动。

以节点192.168.180.21 为例:

1)关闭节点

/home/cockroach/CockroachDB/cockroach quit

–port=26257

–certs-dir=/home/cockroach/CockroachDB/certs

–host=192.168.180.21

2)重启节点

/home/cockroach/CockroachDB/cockroach start

–port=26257 –http-port=8080

–store=path=/ssd1/CockroachDB/cockroach-data

–join=192.168.180.21:26257

–join=192.168.180.22:26257

–certs-dir=/home/cockroach/CockroachDB/certs

–host=192.168.180.21

–background

2. 集群的重启:逐一关闭集群所有节点,再在所有节点上同时执行启动命令。与第一次搭建集群不同的是,所有节点的启动命令都必须带join参数:

1)集群的关闭方式:逐一关闭关闭节点192.168.180.21,192.168.180.22,192.168.180.23

2)集群的重启:同时在三个节点上运行各自启动命令,节点192.168.180.21启动命令如下:

/home/cockroach/CockroachDB/cockroach start

–port=26257 –http-port=8080

–store=path=/ssd/CockroachDB/cockroach-data

–certs-dir=/home/cockroach/CockroachDB/certs

–host=192.168.180.21 –join=192.168.180.21:26257

–join=192.168.180.22:26257 –background

其他节点启动方式同192.168.180.21。

版本升级

为了达到业务无感知的平滑升级和服务的稳定可用,CockroachDB支持滚动升级,即逐一升级每个节点的CockroachDB版本。对于CockroachDB集群来说,关闭单个节点不影响集群的可用性。

以上述集群为例,将原CockroachDB版本从v1.0.4升级至v1.0.5步骤如下:

1.关闭节点192.168.180.21

/home/cockroach/CockroachDB/cockroach quit

–port=26257

–certs-dir=/home/cockroach/CockroachDB/certs

–host=192.168.180.21

2.替换新版本CockroachDB,并重启

/home/cockroach/CockroachDB/cockroach start

–port=26257 –http-port=8080

–store=path=/ssd1/CockroachDB/cockroach-data

–certs-dir=/home/cockroach/CockroachDB/certs

–host=192.168.180.21 –background

3.确认节点192.168.180.21已经正常启动后,节点192.168.180.22,192.168.180.23的cockroach替换过程同上,依次进行

Trouble Shooting

1. 查看集群正在执行的query

在CockroachDB使用过程中以可能会遇到慢查询,长事务等问题,目前CockroachDB还没有提供类似MySQL的show processlist功能,但crdb_internal库的node_queries表记录了该节点上正在执行的query信息。在节点192.168.180.21上查看query执行示例:

/home/cockroach/CockroachDB/cockroach sql

–port=26257 –host=192.168.180.21

–certs-dir=/home/cockroach/CockroachDB/certs

图中显示query: select * from node_queries执行的起始时间,client端地址等信息。依据query的起始时间可以判断该查询是否是慢查询。

2. 查看事务执行时间

查看长事务需要打开trace信息,在CockroachDB启动前做如下设置:

1)设置环境变量COCKROACH_ENABLE_TRACING

export COCKROACH_ENABLE_TRACING=true

2)设置cockroach内部变量setting server.remote_debugging.mode

/home/cockroach/CockroachDB/cockroach sql

–port=26257 –host=192.168.180.21

–certs-dir=/home/cockroach/CockroachDB/certs

-e ” set cluster setting server.

remote_debugging.mode = ‘any’ ”

例如查看运行超过0.1s的事务:

进入页面https://192.168.180.21:8080/debug/requests?fam=tracing&b=2&exp=1

图中日志显示的事务如下,执行了0.26s(test表大小为121776行) :

BEGIN TRANSACTION

SELECT count(1) FROM test.test

COMMIT TRANSACTION

3. 查看Range信息

当从日志中看到某些range出现大量Error或者Warning信息后,可以查看当前range的状态信息(看长事务需要打开trace信息),以集群14号range为例,在浏览器中输入https://192.168.180.21:8080/debug/range?id=14  :

图中显示了14号Range的所有副本分布信息,leader信息,租约信息等。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。