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部署的时候, 有各种坑, 由于刚出的, 部署的人少, 可参考的资料不多, 容易跑到坑里面去, 需要多看几遍官方文档。
欢迎大家订阅雀观代码, 我将给你讲述, 中小企业程序员, 淘金路上的故事.