前言:在上一篇文章中我们记录了在同城双机房私用公网进行搭建TIDB集群的操作步骤,详见https://tidb.net/blog/3e68a790。由于最近出现的某云故障问题,为了追求高可用的数据库集群,所以我们需要组建一个混合云。
本文记述通过公网环境扩容阿里云ECS节点,组建混合云的TIDB集群操作步骤,组建完成的混合云架构为无锡江阴IDC节点1+无锡惠山IDC节点2+阿里云杭州节点3,通过云服务器+IDC服务器形成高可用的数据库集群,本文是基于测试实现,真正的架构是无锡江阴IDC节点1*2+无锡惠山IDC节点2*2+阿里云杭州节点3*3,形成7个PD,7个tidb-server,7个tikv的生产部署节点。
一、新增阿里云ECS服务器节点
购买云服务器后,在安全组中放行集群其他服务器的网络,本文为了快速测试,所以全部放行了集群其他服务器的ip,生产中建议只放行对应端口
安全组策略如下
二、计划扩容后的服务器分布
新增阿里云ECS为节点4,原集群节点2准备在完成扩容后进行缩容
服务器 | 公网ip | ssh端口-外 | pd端口外 | pd端口外 | tikv端口外 | tikv端口外 | tidb端口外 | tidb端口外 | 告警 | 告警 | 监控 | grafana | ||
原集群-外网地址 | 部署PD、TIDB、TIKV | server1 | 58.214.27.A | 20122 | 12379 | 12380 | 10160 | 10180 | 14000 | 10080 | ||||
部署PD、TIDB、TIKV、ALERT、MONITOR | server3 | 121.235.65.C | 20322 | 32379 | 32380 | 30160 | 30180 | 34000 | 30080 | 9093 | 9094 | 9090 | 3000 | |
新增节点 | 部署PD、TIDB、TIKV | server4 | 116.62.208.D | 22 | 42379 | 42380 | 40160 | 40180 | 44000 | 40080 | ||||
服务器 | 内网ip | ssh端口-内 | pd端口内 | pd端口内 | tikv端口内 | tikv端口内 | tidb端口内 | tidb端口内 | 告警 | 告警 | 监控 | grafana | ||
原集群-内网地址 | 部署PD、TIDB、TIKV | server1 | 192.168.30.201 | 22 | 12379 | 12380 | 10160 | 10180 | 14000 | 10080 | ||||
部署PD、TIDB、TIKV、ALERT、MONITOR | server3 | 192.168.0.203 | 22 | 32379 | 32380 | 30160 | 30180 | 34000 | 30080 | 9093 | 9094 | 9090 | 3000 | |
新增节点 | 部署PD、TIDB、TIKV | server4 | 172.16.0.188 | 22 | 42379 | 42380 | 40160 | 40180 | 44000 | 40080 |
三、编辑扩容文件
# # Global variables are applied to all deployments and used as the default value of
# # the deployments if a specific deployment value is missing.
global:
user: "tsp-tidb"
ssh_port: 22
deploy_dir: "/data/tidb-deploy"
data_dir: "/data/tidb-data"
# # Monitored variables are applied to all the machines.
#monitored:
# node_exporter_port: 9100
# blackbox_exporter_port: 9115
pd_servers:
- host: 116.62.208.D
ssh_port: 22
name: "pd-4"
client_port: 42379
peer_port: 42380
deploy_dir: "/data/tidb-deploy/pd-42379"
data_dir: "/data/tidb-data/pd-42379"
log_dir: "/data/tidb-deploy/pd-42379/log"
tidb_servers:
- host: 116.62.208.D
ssh_port: 22
port: 44000
status_port: 40080
deploy_dir: "/data/tidb-deploy/tidb-44000"
log_dir: "/data/tidb-deploy/tidb-44000/log"
config:
log.slow-query-file: /data/tidb-slow-overwrited.log
tikv_servers:
- host: 116.62.208.D
ssh_port: 22
port: 40160
status_port: 40180
deploy_dir: "/data/tidb-deploy/tikv-40160"
data_dir: "/data/tidb-data/tikv-40160"
log_dir: "/data/tidb-deploy/tikv-40160/log"
四、执行扩容
tiup cluster scale-out qzn scale-out.yaml
扩容完成后发现有个PD节点是DOWN的状态,这是因为PD只能是奇数个节点,不允许出现偶数个节点。由于即将卸载一个PD节点,所以本问题忽略
在控制面板上查看tidb集群的节点状态
五、缩容
基于成本考虑,本环境为为无锡江阴IDC节点1+无锡惠山IDC节点2+阿里云杭州节点3,所以缩容江阴IDC节点2
执行缩容命令
tiup cluster scale-in qzn --node 116.62.208.B:42379
缩容后查看状态,状态为DOWN的节点消失
六、测试sql连接
为了保证正常的使用,我们测试各节点的连接(阿里云节点需要在安全组放行tidb-server的端口44000)
七、至此我们就完成了TIDB集群的混合云部署
经过测试,我们可以通过3个节点的任意一个IP地址连接使用数据库,部署的代码也可以通过内网IP在局域网环境下连接数据库。在此模式下,我们可以将代码分散的部署在各个机房,实现服务的主备部署,在保障数据库高可用的同时也可以保障业务系统的高可用,从而实现系统容灾。
总结:在生产环境中,我们准备使用IDC节点1*2+IDC节点2*2+云服务节点3*3,形成7个PD+7个tidb-server+7个tikv的生产部署节点,每个节点都可以实现高可用。