cockroach 集群安装(三节点)+haproxy负载均衡

一、安装前配置

1.1 所有节点禁用防火墙

内部网络建议关闭防火墙 systemctl stop firewalld.service
并且禁止开机启动 systemctl disable firewalld.service

1.2 配置时间同步(所有节点)

1、安装相关软件

yum -y install ntpdate

2、添加定时任务

crontab -e

30  1  * * * /usr/sbin/ntpdate time.windows.com

二、cockroachDB安装

根据需要,下载对应的版本:https://www.cockroachlabs.com/docs/releases

2.1 解压&配置环境变量(所有节点)

1、解压安装包,创建相关目录

# 解压到/root/cockroach

tar -xf cockroach-xxx.tgz

#创建数据目录和证书目录
mkdir	-p /root/cockroach/certs
mkdir	-p /root/cockroach/data

创建完之后目录结构如下:

image

2、配置环境变量


# 在 /etc/profile最后添加
export PATH=$PATH:/root/cockroach


# 生效配置
source /ect/profile

2.2 创建ca证书(在节点1上执行)


# 在/root/cockroach下执行
# 生成数据ca证书
cockroach cert create-ca --certs-dir=certs   --ca-key=certs/ca.key    --allow-ca-key-reuse --overwrite

# 生成client ca证书
cockroach cert create-client root    --certs-dir=certs    --ca-key=certs/ca.key    --overwrite

创建完之后将目录下边的certs目录拷贝到其他两个节点的/root/cockroach下,如下:

scp -rp  certs   <ip2>:/root/cockroach
scp -rp  certs   <ip3>:/root/cockroach

2.3 创建节点证书(三台节点分别执行)


cockroach cert create-node  <ip1>   --certs-dir=certs    --ca-key=certs/ca.key   --overwrite
cockroach cert create-node  <ip2>   --certs-dir=certs    --ca-key=certs/ca.key   --overwrite
cockroach cert create-node  <ip3>   --certs-dir=certs    --ca-key=certs/ca.key   --overwrite

2.4 启动集群(三台节点分别执行)


# 在执行的时候只需要将advertise-host对应的ip改成本节点的ip,然后分别执行

cockroach start    --port=26257  \
--http-port=8081 \
--advertise-host=<ip1>  \
--store=path=/root/cockroach/data  \
--join=<ip1>:26257,<ip2>:26257,<ip3>:26257  \
--certs-dir=/root/cockroach/certs \
--background


cockroach start    --port=26257  \
--http-port=8081 \
--advertise-host=<ip2>  \
--store=path=/root/cockroach/data  \
--join=<ip1>:26257,<ip2>:26257,<ip3>:26257  \
--certs-dir=/root/cockroach/certs \
--background


cockroach start    --port=26257  \
--http-port=8081 \
--advertise-host=<ip3>  \
--store=path=/root/cockroach/data  \
--join=<ip1>:26257,<ip2>:26257,<ip3>:26257  \
--certs-dir=/root/cockroach/certs \
--background

2.4 初始化集群


cockroach init --certs-dir=/home/cockroach/certs --host=<ip> # 这里随便一个集群的ip地址

三、 搭建haproxy负载均衡

3.1 安装haproxy

下载:https://src.fedoraproject.org/repo/pkgs/haproxy/

# 解压并进入倒haproxy目录
tar -xf haproxy-2.8.3.tar.gz
cd haproxy-2.8.3

# 编译安装
make TARGET=linux3100 CPU=x86_64 PREFIX=/usr/local/haprpxy
make install PREFIX=/usr/local/haproxy

# 配置环境变量 加到/etc/profile文件最后
export PATH=$PATH:/usr/local/haproxy/sbin
# 生效配置
source /etc/profile

3.2 配置并启动haproxy

# 添加该配置倒haproxy服务器上
global
  maxconn 4096

defaults
    mode                tcp
    retries             2
    timeout connect     5s
    timeout client      10m
    timeout server      10m
    option              clitcpka

listen psql
    bind :26258
    mode tcp
    balance roundrobin
    option httpchk GET /health?ready=1
    # 修改成相应cockroach节点的IP
    server cockroach1 <ip1>:26257 check port 8081
    server cockroach2 <ip2>:26257 check port 8081
    server cockroach3 <ip3>:26257 check port 8081


listen stats
    mode http
    bind 0.0.0.0:1080
    stats enable
    stats hide-version
    stats uri /stats
    stats realm Haproxy\ Statistics
    stats auth admin:admin123 # haproxy状态页面用户名密码
    stats admin if TRUE

启动haproxy

 haproxy  -f haproxy.cfg  &

查看启动情况

netstat -lntup|grep haproxy
tcp        0      0 0.0.0.0:26258           0.0.0.0:*               LISTEN      14930/haproxy # 数据库连接端口
tcp        0      0 0.0.0.0:1080            0.0.0.0:*               LISTEN      14930/haproxy # haproxy状态端口

五、其他配置

5.1 启动read_committed事务隔离

#在cockroach安装目录下登录
cockroach sql --certs-dir=certs --host=<node ip>:26257

# 启用READ COMMITTED隔离
SET CLUSTER SETTING sql.txn.read_committed_isolation.enabled = 'true';
SET default_transaction_isolation = 'read committed';
ALTER ROLE <username> SET default_transaction_isolation = 'read committed';

# 登录查看是否生效
cockroach sql  --certs-dir=certs --url='postgresql://<username>@<ip>:26257/<dbname>?--options=--default_transaction_isolation=read committed'

SHOW default_transaction_isolation;

5.2 配置用户名密码

# 创建用户
CREATE USER <user> WITH PASSWORD '<password>';

# 赋予权限
GRANT admin TO <user>
GRANT root TO <user>
posted @ 2024-01-26 22:33  EJW  阅读(85)  评论(0编辑  收藏  举报