TiDB 部署

ansible 部署

参考
https://pingcap.com/docs-cn/op-guide/ansible-deployment/

binary部署

参考
https://pingcap.com/docs-cn/op-guide/binary-deployment/

跨公网部署(NAT)环境

跨公网部署NAT要注意,对外发布ip, 和机器实际绑定ip, 官方提供的ansible脚本没有参数设置对外ip和绑定ip, 只能用二进制安装, 不过可以ansible部署完成之后, 直接改动部署后的脚本, 这样就可以继续使用ansible. 这里说一下这种部署的时候的一些坑.

pd-server

  • --advertise-client-urls
  • --advertise-peer-urls
  • --client-urls
  • --initial-cluster
  • --peer-urls
bin/pd-server \
    --name="pd1" \
    --client-urls="http://192.168.100.231:2379" \   # 内网IP
    --advertise-client-urls="http://外网ip1:2379" \  # 外网IP
    --peer-urls="http://192.168.100.231:2380" \ # 内网IP
    --advertise-peer-urls="http://外网ip1:2380" \ # 外网IP
    --data-dir="/data/deploy/data.pd" \
    --initial-cluster="pd1=http://外网ip1:2380,pd2=http://外网ip2:2380,pd3=http://外网ip3:2380" \  # 用外网IP
    --config=conf/pd.toml \
    --log-file="/data/deploy/log/pd.log" 2> "/data/deploy/log/pd_stderr.log

要注意不同ip的绑定, 已经对外宣称的地址, 否则集群初始化连接后拿到的是内网的ip, 最后无法连接.

tikv

  • --addr
  • --advertise-addr
  • --pd
bin/tikv-server \
    --addr "192.168.100.231:20160" \
    --advertise-addr "外网ip1:20160" \
    --pd "外网ip1:2379,外网ip2:2379,外网ip3:2379" \
    --data-dir "/data/deploy/data" \
    --config conf/tikv.toml \
    --log-file "/data/deploy/log/tikv.log" 2> "/data/deploy/log/tikv_stderr.log"

跟前面一样, 要注意对外的IP, 特别是PD.

tidb

  • --path
bin/tidb-server \
    -P 4000 \
    --status="10080" \
    --path="外网ip1:2379,外网ip2:2379,外网ip3:2379" \
    --config=conf/tidb.toml \
    --log-file="/data/deploy/log/tidb.log" 2> "/data/deploy/log/tidb_stderr.log"

监控

参考
https://pingcap.com/docs-cn/op-guide/monitor/

TiDB/PD/TiKV 配置

修改对应的推送地址, 全部改成外网的地址

prometheus

prometheus.yml修改对应的收集地址

---
global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  evaluation_interval: 15s # By default, scrape targets every 15 seconds.
  # scrape_timeout is set to the global default (10s).
  external_labels:
    cluster: 'test-cluster'
    monitor: "prometheus"

scrape_configs:
  - job_name: 'overwritten-cluster'
    scrape_interval: 3s
    honor_labels: true # don't overwrite job & instance labels
    static_configs:
      - targets: ['192.168.100.231:9091']


  - job_name: "overwritten-nodes"
    honor_labels: true # don't overwrite job & instance labels
    static_configs:
    - targets:
      - '外网ip1:9100'
      - '外网ip2:9100'
      - '外网ip3:9100'
# Load and evaluate rules in this file every 'evaluation_interval' seconds.
rule_files:
  - 'alert.rules.yml'

grafana

在导入dashbord的时候, grafana上面的tidb的配置表是旧的, 导致有些信息没有检测到, 可用考虑用ansible部署的监控, 然后导出对应的配置文件.

后记

tidb部署的时候, 有各种坑, 由于刚出的, 部署的人少, 可参考的资料不多, 容易跑到坑里面去, 需要多看几遍官方文档。

欢迎大家订阅雀观代码, 我将给你讲述, 中小企业程序员, 淘金路上的故事.



发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注