day22 : TIDB on K8S (中)

今天就来使用TIUP布建TIDB看看吧,因为我环境会如同之前一样使用GCP,所以今天也一样会透过terraform和ansible把相关的设定一口气完成。

首先透过terraform的方法让gcp自动建出一台管理机器、一定数量的TIDB、3台PD、一定数量的TIKV,脚本大致上如下

provider "google" {
  credentials = “service account key“
  project    = “project id”
  region     = "asia-east1"
}

module "create_gce1" {
  source        = "./gce-db"
  instance_name = “ithome-tidb-01”
  instance_zone = "asia-east1-b"
}

module "create_gce2” {
  source        = "./gce-pd"
  instance_name = “ithome-pd-01”
  instance_zone = "asia-east1-b"
}

以此类推写好provider.tf档案,以及各自元件所需要的的main.tf规格
https://ithelp.ithome.com.tw/upload/images/20210922/20139661qZ6zCHwtcq.png
这种分法原因在於每个元件所需要的规格较为不同,适当地调配空间和memory会能得到较佳的使用体验,接着透过ansible做一些底层调整(为方便做事不管资安的做法)

1.关闭防火墙
2.关闭selinux
3.vi /etc/sysctl.conf
add

vm.swappiness = 0
fs.file-max = 1000000
net.core.somaxconn = 32768
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_syncookies = 0
vm.overcommit_memory = 1
vm.swappiness = 0

sysctl -p 生效
  1. vi /etc/security/limits.conf
    add
 root           soft    nofile          1000000
 root           hard    nofile          1000000
 root           soft    stack          32768
 root           hard    stack          32768

这边建议是TIDB运行的帐号

5.配置/tidb-data空间(并调配nodelalloc,noatime)

6.配置底层设定
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
这代表有开

cat /sys/block/sd[bc]/queue/scheduler

noop [deadline] cfq
noop [deadline] cfq

这代表有用deadline

cpupower frequency-info --policy
analyzing CPU 0:
current policy: frequency should be within 1.20 GHz and 3.10 GHz.
              The governor "powersave" may decide which speed to use within this range.

这代表有用powersave

mkdir /etc/tuned/balanced-tidb-optimal/
vi /etc/tuned/balanced-tidb-optimal/tuned.conf
[main]
include=balanced

[cpu]
governor=performance

[vm]
transparent_hugepages=never

[disk]
devices_udev_regex=(ID_SERIAL=36d0946606d79f90025f3e09a0c1fc035)|(ID_SERIAL=36d0946606d79f90025f3e09a0c1f9e81)
elevator=noop

tuned-adm profile balanced-tidb-optimal

7.不是用gcp环境的话建议关闭swap,gcp帮我关了

以上作业,如果不熟悉ansible module其实也都可以用ansible shell module完成,或是极端一点写sh丢到每一台上执行。

而管理主机不需要上述的作业,不过需要放置tiup的执行工具(https://tiup-mirrors.pingcap.com/tiup-Linux-amd64.tar.gz),以及设定类似yaml档案的tidb配置文件如下。


global:
  user: "root"
  ssh_port: 22
  deploy_dir: "/tidb-deploy"
  data_dir: "/tidb-data"
  arch: "amd64"
server_configs: 
  pd:
    replication.enable-placement-rules: true
monitored:
  node_exporter_port: 9100
  blackbox_exporter_port: 9115
pd_servers:
  - host: PD1_IP
  - host: PD2_IP
  - host: PD3_IP
tidb_servers:
  - host: TIDB1_IP
  - host: TIDB2_IP
  - host: TIDB3_IP
tikv_servers:
  - host: TIKV1_IP
  - host: TIKV2_IP
  - host: TIKV3_IP
monitoring_servers:
  - host: manager_server_IP
grafana_servers:
  - host: manager_server_IP
alertmanager_servers:
  - host: manager_server_IP
如果有想用flash和cdc功能的话
tiflash_servers:
  - host: TIFLash1_IP
    data_dir: /tidb-data/tiflash-9000
    deploy_dir: /tidb-deploy/tiflash-9000
  - host: TIFlash2_IP
    data_dir: /tidb-data/tiflash-9000
    deploy_dir: /tidb-deploy/tiflash-9000
cdc_servers:
  - host: TICDC1_IP
  - host: TICDC2_IP
  - host: TICDC3_IP

有发现吗,这一份文件,是可以用template的功能搭配ansible for回圈自动产出的唷。

完成基础设定後,对管理主机下check的指令检查环境状态,因为会需要看状况,我是用手动执行的
tiup cluster check ./topology.yaml --user root
这一份检查是基於官方文件所做的检查,所以有一些没有符合的,例如时间同步之类的设定,如果有取代方案的话是可以忽略不符合的。
在检查完成并且修正一些检查中发现需要修正的问题後就可以进行安装了
tiup cluster deploy ithome-tidb v5.1.0 ./topology.yaml --user root

集群安装完成後
可以在管理机上用指令启停主机

tiup cluster start ithome-tidb
tiup cluster stop ithome-tidb

也可以用

tiup cluster list
tiup cluster display ithome-tidb

去看一些丛集状况

tidb也会藉由tiup去建出grafana图表,可以从刚刚的配置文件中设定,依据我的配置文件,就会是管理主机上会多出grafana的port,如果想要的话也可以将datasources整到之前设计的grafana上去收拢唷。
https://ithelp.ithome.com.tw/upload/images/20210922/20139661oDt0udJK3U.png

除了grafana可以图表化的观看使用状况以外,从PD介面也可以登入管理者介面查看一些SQL使用状况(指令查询多久、最常使用的语法)之类的。
https://ithelp.ithome.com.tw/upload/images/20210922/20139661WjqTbNN8Ce.png
https://ithelp.ithome.com.tw/upload/images/20210922/20139661ACLr7SvXx3.png
因为TIDB支援mysql语法,所以使用上可以直接用mysql的指令去use database,select table,写资料读资料看看罗。


<<:  Day 7 : 案例分享(2.2) B2B 客制寄仓处理

>>:  [Day13] 介面篇 - 显示血条3

[Day27] 测试场景与角色

今天意外顺利,把预设要做的东西都有做出来 ^_^ 今日目标 搭建测试场景 建立角色在场景上 搭建场景...

一Ryu大师: REST API

tags: Ryu REST API REST: Representational State Tr...

[ Day 16 ] - 事件

事件 指的是在 DOM 上所发生的事件,换句话是可以是特定的动作被触发後,必须要执行对应的事情。 (...

28.MYSQL 资料统整2

继续帮大家整理资料统整的语法 建立一张资料表如下 SUM :栏位的合计值 用法: SELECT SU...

[前端暴龙机,Vue2.x 进化 Vue3 ] Day23.正式进化-Vue3 起手式

ゴキゲンな蝶になって きらめく风に乗って 今すぐキミに会いに行こう 余计な事なんて忘れた方がマシさ...