同城双机房公网环境下搭建TIDB集群

原创
2023/11/13 00:00
阅读数 19

作者: Fly-bird 原文来源:https://tidb.net/blog/3e68a790

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

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

第二步:扩容公有云节点

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

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

一、集群架构

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

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

企业微信截图_16998568451357.png

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

企业微信截图_16998567292582.png

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

企业微信截图_16998564503063.png

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

服务器 公网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 server2 218.90.180.B 20222 22379 22380 20160 20180 24000 20080
部署PD、TIDB、TIKV、ALERT、MONITOR server3 121.235.65.C 20322 32379 32380 30160 30180 34000 30080 9093 9094 9090 3000
服务器 内网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 server2 192.168.30.202 22 22379 22380 20160 20180 24000 20080
部署PD、TIDB、TIKV、ALERT、MONITOR server3 192.168.0.203 22 32379 32380 30160 30180 34000 30080 9093 9094 9090 3000

二、集群部署配置文件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、安装完成

企业微信截图_16998589635992.png

四、功能验证

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

企业微信截图_16998547802128.png

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

企业微信截图_16998548417748.png

3、创建数据库

image.png

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

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

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部