公网环境下同城双机房部署 TiDB 集群的实践

网友投稿 568 2024-03-31



前言:最近频繁出现的云服务环境的不稳定,对业务造成了一定的困扰,为了预防公有云和私有云带来的不稳定,我们选择了线下同城双机房+线上云服务的架构大家tidb集群,本次架构改造分为两步进行:

公网环境下同城双机房部署 TiDB 集群的实践

第一步:搭建同城双机房;

第二步:扩容公有云节点

通过两步走的方式实现混合云的部署,本文通过介绍在同城双机房公网环境下搭建TIDB集群,总结经验,查漏补缺,为第二步的扩容做知识储备。

由于专线费用较为昂贵,本文使用公网ip进行网络传输,此线路为公网,费用较低,为了安全,会设置3个公网ip之间的端口只允许ip之间互相访问。

一、集群架构

本集群使用位于无锡的两个机房,其中tidb01和tidb02位于江阴机房

tidb01,机房位于无锡市江阴市,使用的公网IP如下

tidb02机房位于无锡市江阴市,使用的公网IP如下

tidb03,机房位于无锡市惠山区,位于惠山区机房,使用的公网IP如下

集群架构如下,其中公网IP最后一位做了ABC替换处理

服务器公网ipssh端口-外pd端口外pd端口外tikv端口外tikv端口外tidb端口外tidb端口外告警告警监控grafana部署PD、TIDB、TIKVserver158.214.27.A20122123791238010160101801400010080部署PD、TIDB、TIKVserver2218.90.180.B20222223792238020160201802400020080部署PD、TIDB、TIKV、ALERT、MONITORserver3121.235.65.C203223237932380301603018034000300809093909490903000服务器内网ipssh端口-内pd端口内pd端口内tikv端口内tikv端口内tidb端口内tidb端口内告警告警监控grafana部署PD、TIDB、TIKVserver1192.168.30.20122123791238010160101801400010080部署PD、TIDB、TIKVserver2192.168.30.20222223792238020160201802400020080部署PD、TIDB、TIKV、ALERT、MONITORserver3192.168.0.203223237932380301603018034000300809093909490903000

二、集群部署配置文件topology.yaml内容如下

global: user: "tidb" deploy_dir: "/data/tidb-deploy" data_dir: "/data/tidb-data" arch: "amd64" monitored: node_exporter_port: 9100 blackbox_exporter_port: 9115 deploy_dir: "/data/tidb-deploy/monitored-9100" data_dir: "/data/tidb-data/monitored-9100" log_dir: "/data/tidb-deploy/monitored-9100/log" server_configs: tidb: log.slow-threshold: 300 binlog.enable: false binlog.ignore-error: false tikv: readpool.storage.use-unified-pool: false readpool.coprocessor.use-unified-pool: true pd: schedule.leader-schedule-limit: 4 schedule.region-schedule-limit: 2048 schedule.replica-schedule-limit: 64 pd_servers:-host: 58.214.27.A ssh_port: 20122 name: "pd-1" client_port: 12379 peer_port: 12380 deploy_dir: "/data/tidb-deploy/pd-12379" data_dir: "/data/tidb-data/pd-12379" log_dir: "/data/tidb-deploy/pd-12379/log"-host: 218.90.180.B ssh_port: 20222 name: "pd-2" client_port: 22379 peer_port: 22380 deploy_dir: "/data/tidb-deploy/pd-22379" data_dir: "/data/tidb-data/pd-22379" log_dir: "/data/tidb-deploy/pd-22379/log"-host: 121.235.65.C ssh_port: 20322 name: "pd-3" client_port: 32379 peer_port: 32380 deploy_dir: "/data/tidb-deploy/pd-32379" data_dir: "/data/tidb-data/pd-32379" log_dir: "/data/tidb-deploy/pd-32379/log" tidb_servers:-host: 58.214.27.A ssh_port: 20122 port: 14000 status_port: 10080 deploy_dir: "/data/tidb-deploy/tidb-14000" log_dir: "/data/tidb-deploy/tidb-14000/log" config: log.slow-query-file: /data/tidb-slow-overwrited.log-host: 218.90.180.B ssh_port: 20222 port: 24000 status_port: 20080 deploy_dir: "/data/tidb-deploy/tidb-24000" log_dir: "/data/tidb-deploy/tidb-24000/log" config: log.slow-query-file: /data/tidb-slow-overwrited.log-host: 121.235.65.C ssh_port: 20322 port: 34000 status_port: 30080 deploy_dir: "/data/tidb-deploy/tidb-34000" log_dir: "/data/tidb-deploy/tidb-34000/log" config: log.slow-query-file: /data/tidb-slow-overwrited.log tikv_servers:-host: 58.214.27.A ssh_port: 20122 port: 10160 status_port: 10180 deploy_dir: "/data/tidb-deploy/tikv-10160" data_dir: "/data/tidb-data/tikv-10160" log_dir: "/data/tidb-deploy/tikv-10160/log"-host: 218.90.180.B ssh_port: 20222 port: 20160 status_port: 20180 deploy_dir: "/data/tidb-deploy/tikv-20160" data_dir: "/data/tidb-data/tikv-20160" log_dir: "/data/tidb-deploy/tikv-20160/log"-host: 121.235.65.C ssh_port: 20322 port: 30160 status_port: 30180 deploy_dir: "/data/tidb-deploy/tikv-30160" data_dir: "/data/tidb-data/tikv-30160" log_dir: "/data/tidb-deploy/tikv-30160/log" monitoring_servers:-host: 121.235.65.C ssh_port: 20322 port: 9090 deploy_dir: "/data/tidb-deploy/prometheus-8249" data_dir: "/data/tidb-data/prometheus-8249" log_dir: "/data/tidb-deploy/prometheus-8249/log" grafana_servers:-host: 121.235.65.C ssh_port: 20322 port: 3000 deploy_dir: /data/tidb-deploy/grafana-3000 alertmanager_servers:-host: 121.235.65.C ssh_port: 20322 web_port: 9093 cluster_port: 19094 deploy_dir: "/data/tidb-deploy/alertmanager-9093" data_dir: "/data/tidb-data/alertmanager-9093" log_dir: "/data/tidb-deploy/alertmanager-9093/log"

三、集群部署步骤

1、tiup部署在tidb03上

安装tiup工具 curl --proto =https --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh source /root/.bash_profile tiup cluster tiup update --self && tiup update cluster

2、根据配置文件检查并更新配置

检查风险 tiup cluster check ./topology.yaml --user root -p 自动修复风险 tiup cluster check ./topology.yaml --apply --user root -p 检测通过后就可以安装tidb了 tiup cluster deploy qzn v5.4.2 ./topology.yaml --user root -p

3、安装完成

四、功能验证

1、安装完成后通过dashboard查看集群信息

2、使用navicat可以正常连接数据库集群

3、创建数据库

以上完成了同城双机房公网环境下搭建TIDB集群工作。

总结:本文主要记录了同城双机房的集群搭建,处于成本考虑,主要使用了公网ip的方式,毕竟公网只需要拉一条宽带就可以了,专线的费用是宽带的几十倍,基于成本,只能暂且如此,在安全上,我们做了各个ip之间通过防火墙策略限制只能对端ip访问,这样保证了集群的网络安全,目前已经完成了方案验证和测试环境搭建,下一步我们计划增加***节点,通过本地双机房+***服务器,做到混合云部署tidb集群的架构。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:全面解析 Compaction 的13个常见问题
下一篇:分布式数据库的本土替代之路:杭州银行的实践案例
相关文章