zoukankan      html  css  js  c++  java
  • TIDB集群部署文档

    TIDB集群部署文档

    安装部署

    准备机器

    172.17.0.7 tidb01 centos7.4 运维 8C16G100G 中控机,目标部署机(内存不少于16G)
    172.17.0.8 pd01 centos7.4 运维 4C8G100G 目标部署机
    172.17.0.9 tikv01 centos7.4 运维 8C32G100G 目标部署机
    172.17.0.10 tikv02 centos7.4 运维 8C32G100G 目标部署机
    172.17.0.11 tikv03 centos7.4 运维 8C32G100G 目标部署机
    

    端口说明

    注意提前在青云把下面端口开放:

    TiDB 4000 应用及 DBA 工具访问通信端口
    TiDB 10080 TiDB 状态信息上报通信端口
    TiKV 20160 TiKV 通信端口
    PD 2379 提供 TiDB 和 PD 通信端口
    PD 2380 PD 集群节点间通信端口
    Pump 8250 Pump 通信端口
    Drainer 8249 Drainer 通信端口
    Prometheus 9090 Prometheus 服务通信端口
    Pushgateway 9091 TiDB,TiKV,PD 监控聚合和上报端口
    Node_exporter 9100 TiDB 集群每个节点的系统信息上报通信端口
    Blackbox_exporter 9115 Blackbox_exporter 通信端口,用于 TiDB 集群端口监控
    Grafana 3000 Web 监控服务对外服务和客户端(浏览器)访问端口
    Grafana 8686 grafana_collector 通信端口,用于将 Dashboard 导出为 PDF 格式
    Kafka_exporter 9308 Kafka_exporter 通信端口,用于监控 binlog kafka 集群
    

    软件版本

    tidb-ansible: v3.0.2
    

    1.在中控机上安装系统依赖包

    以 root 用户登录中控机

    #!/bin/bash
    #coding:utf-8
    #
    ## 在中控机安装依赖包
    yum -y install epel-release git curl sshpass
    yum -y install python2-pip
    ## 在中控机上创建 tidb 用户,并生成 ssh key
    useradd -m -d /home/tidb tidb
    echo "tidb321" | passwd --stdin tidb
    cp -a /etc/sudoers{,.bak}
    echo "tidb ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
    su - tidb
    

    2.生成密钥对

    创建 tidb 用户 ssh key, 提示 Enter passphrase 时直接回车即可。执行成功后,ssh 私钥文件为 /home/tidb/.ssh/id_rsa, ssh 公钥文件为 /home/tidb/.ssh/id_rsa.pub

    $ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/tidb/.ssh/id_rsa):
    Created directory '/home/tidb/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/tidb/.ssh/id_rsa.
    Your public key has been saved in /home/tidb/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:eIBykszR1KyECA/h0d7PRKz4fhAeli7IrVphhte7/So tidb@172.16.10.49
    The key's randomart image is:
    +---[RSA 2048]----+
    |=+o+.o. |
    |o=o+o.oo |
    | .O.=.= |
    | . B.B + |
    |o B * B S |
    | * + * + |
    | o + . |
    | o E+ . |
    |o ..+o. |
    +----[SHA256]-----+
    

    3.在中控机器上下载 TiDB-Ansible

    以 tidb 用户登录中控机并进入 /home/tidb 目录。使用以下命令从 TiDB-Ansible 项目上下载 master 分支的 TiDB-Ansible,默认的文件夹名称为 tidb-ansible

    # su - tidb
    $ tag=v3.0.2
    $ git clone -b $tag https://github.com/pingcap/tidb-ansible.git
    

    4.在中控机器上安装 Ansible 及其依赖

    以 tidb 用户登录中控机,请务必按以下方式通过 pip 安装 Ansible 及其相关依赖的指定版本,否则会有兼容问题。安装完成后,可通过 ansible --version 查看 Ansible 版本。目前 release-2.0、release-2.1 及 master 版本兼容 Ansible 2.4 及 Ansible 2.5 版本,Ansible 及相关依赖版本记录在 tidb-ansible/requirements.txt 文件中。

    $ cd /home/tidb/tidb-ansible
    $ sudo pip install -r ./requirements.txt -i https://mirrors.aliyun.com/pypi/simple
    

    5.在中控机上配置部署机器 ssh 互信及 sudo 规则

    以 tidb 用户登录中控机,将你的部署目标机器 IP 添加到 hosts.ini 文件 [servers] 区块下

    [tidb@172-17-0-7 tidb-ansible]$ cat hosts.ini 
    [servers]
    172.17.0.7 ansible_port=52222
    172.17.0.8 ansible_port=52222
    172.17.0.9 ansible_port=52222
    172.17.0.10 ansible_port=52222
    172.17.0.11 ansible_port=52222
    [all:vars]
    username = tidb
    ntp_server = pool.ntp.org
    

    执行以下命令,按提示输入部署目标机器 root 用户密码。该步骤将在部署目标机器上创建 tidb 用户,并配置 sudo 规则,配置中控机与部署目标机器之间的 ssh 互信。

    $ ansible-playbook -i hosts.ini create_users.yml -u root -k
    

    以 tidb 用户登录到中控机,ssh 登录目标机器 IP,不需要输入密码并登录成功,表示 ssh 互信配置成功。

    [tidb@172.17.0.7 ~]$ ssh 172.17.0.7
    

    以 tidb 用户登录到部署目标机器后,执行以下命令,不需要输入密码并切换到 root 用户,表示 tidb 用户 sudo 免密码配置成功。

    [tidb@172.17.0.7 ~]$ sudo -su root
    [root@172.17.0.7 tidb]#
    

    6.分配机器资源,编辑 inventory.ini 文件

    以 tidb 用户登录中控机,inventory.ini 文件路径为 /home/tidb/tidb-ansible/inventory.ini。

    ## TiDB Cluster Part
    [tidb_servers]
    172.17.0.7
    [tikv_servers]
    172.17.0.9
    172.17.0.10
    172.17.0.11
    [pd_servers]
    172.17.0.8
    [spark_master]
    [spark_slaves]
    [lightning_server]
    [importer_server]
    ## Monitoring Part
    # prometheus and pushgateway servers
    [monitoring_servers]
    172.17.0.7
    [grafana_servers]
    172.17.0.7
    # node_exporter and blackbox_exporter servers
    [monitored_servers]
    172.17.0.7
    172.17.0.8
    172.17.0.9
    172.17.0.10
    172.17.0.11
    [alertmanager_servers]
    172.17.0.7
    [kafka_exporter_servers]
    ## Binlog Part
    [pump_servers]
    [drainer_servers]
    ## Group variables
    [pd_servers:vars]
    # location_labels = ["zone","rack","host"]
    ## Global variables
    [all:vars]
    deploy_dir = /home/tidb/deploy
    ## Connection
    # ssh via normal user
    ansible_user = tidb
    ansible_port=52222
    cluster_name = test-cluster
    tidb_version = v3.0.2
    # process supervision, [systemd, supervise]
    process_supervision = systemd
    timezone = Asia/Shanghai
    enable_firewalld = False
    # check NTP service
    enable_ntpd = True
    set_hostname = False
    ## binlog trigger
    enable_binlog = False
    # kafka cluster address for monitoring, example:
    # kafka_addrs = "192.168.0.11:9092,192.168.0.12:9092,192.168.0.13:9092"
    kafka_addrs = ""
    # zookeeper address of kafka cluster for monitoring, example:
    # zookeeper_addrs = "192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181"
    zookeeper_addrs = ""
    # enable TLS authentication in the TiDB cluster
    enable_tls = False
    # KV mode
    deploy_without_tidb = False
    # wait for region replication complete before start tidb-server.
    wait_replication = True
    # Optional: Set if you already have a alertmanager server.
    # Format: alertmanager_host:alertmanager_port
    alertmanager_target = ""
    grafana_admin_user = "admin"
    grafana_admin_password = "admin"
    
    ### Collect diagnosis
    collect_log_recent_hours = 2
    enable_bandwidth_limit = True
    # default: 10Mb/s, unit: Kbit/s
    collect_bandwidth_limit = 10000
    

    7.部署任务

    1.确认 tidb-ansible/inventory.ini 文件中 ansible_user = tidb,本例使用 tidb 用户作为服务运行用户,配置如下:

    ## Connection
    # ssh via normal user
    ansible_user = tidb
    

    执行以下命令如果所有 server 返回 tidb 表示 ssh 互信配置成功。

    ansible -i inventory.ini all -m shell -a 'whoami'
    

    执行以下命令如果所有 server 返回 root 表示 tidb 用户 sudo 免密码配置成功。

    ansible -i inventory.ini all -m shell -a 'whoami' -b
    

    2.执行 local_prepare.yml playbook,联网下载 TiDB binary 到中控机:

    ansible-playbook local_prepare.yml
    

    3.初始化系统环境,修改内核参数

    ansible-playbook bootstrap.yml
    

    磁盘压测通不过,需要把该yml文件下面注释

    vim bootstrap.yml
    # - { role: machine_benchmark, when: not dev_mode|default(false) }
    

    4.部署 TiDB 集群软件

    ansible-playbook deploy.yml
    

    如果检测通不过,可以暂时注释相应yml文件,不影响集群部署和启动。
    5.启动 TiDB 集群

    ansible-playbook start.yml
    

    8.测试集群

    找一台安装了mysql工具的节点,执行:

    [root@172-17-0-3 ~]# mysql -u root -h 172.17.0.7 -P 4000
    Welcome to the MariaDB monitor. Commands end with ; or g.
    Your MySQL connection id is 3
    Server version: 5.7.25-TiDB-v3.0.2 MySQL Community Server (Apache License 2.0)
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    MySQL [(none)]> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | INFORMATION_SCHEMA |
    | PERFORMANCE_SCHEMA |
    | mysql |
    | test |
    +--------------------+
    4 rows in set (0.00 sec)
    

    说明启动成功,运行正常!
    grafana地址:

    http://172.17.0.7:3000 默认帐号密码是:admin/admin
    

    至此,tidb集群部署完成!

    知其然知其所以然-深入浅出
  • 相关阅读:
    AptitudeSystem 2.0
    angularjs开发常见问题-2(angularjs内置过滤器)
    经常使用 Java API
    Spring Boot JPA 连接数据库
    机房收费系统个人重构版:软工文档中那些图
    Android
    Spring Boot 动态数据源(多数据源自己主动切换)
    java的nio包的SelectionKey,Selector,SelectableChannel三者的缠绵关系概述
    初探linux子系统集之timer子系统(三)
    mobiscroll 案例git
  • 原文地址:https://www.cnblogs.com/yongj/p/13448890.html
Copyright © 2011-2022 走看看