同城双机房公网环境下搭建TIDB集群
  cCwsR4XoSJxL 2023年11月22日 28 0

作者: Fly-bird

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

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

第二步:扩容公有云节点

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



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



一、集群架构

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

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

同城双机房公网环境下搭建TIDB集群_配置文件

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

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

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

同城双机房公网环境下搭建TIDB集群_配置文件_03

集群架构如下,其中公网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、安装完成

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



四、功能验证

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

同城双机房公网环境下搭建TIDB集群_配置文件_05

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

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

3、创建数据库

同城双机房公网环境下搭建TIDB集群_公有云_07

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

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月22日 0

暂无评论

推荐阅读
  TZ5i7OqYsozK   2023年12月12日   44   0   0 IPredisIPredis
cCwsR4XoSJxL