zabbix性能扩展,以TIDB为底层数据库

  • zabbix作为一个监控系统,其信息量的摄入是十分庞大的,单纯的传统关系型数据库南以满足其大数据量的要求,因此可通过将其底层数据库替换会new sql来解决其数据庞大的瓶颈,这里为大家介绍通过TIDB来解决此问题

一、TiDB 整体架构

在这里插入图片描述

二.TiDB 集群的主要三个组件

  • TiDB Server

TiDB Server 负责接收 SQL 请求,处理 SQL 相关的逻辑,并通过 PD 找到存储计算所需数据的 TiKV 地址,与 TiKV 交互获取数据,最终返回结果。 TiDB Server 是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy 或 F5)对外提供统一的接入地址。

  • PD Server

Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个: 一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。

PD 是一个集群,需要部署奇数个节点,一般线上推荐至少部署 3 个节点。

  • TiKV Server

TiKV Server 负责存储数据,从外部看 TiKV 是一个分布式的提供事务的 Key-Value 存储引擎。存储数据的基本单位是 Region,每个 Region 负责存储一个 Key Range (从 StartKey 到 EndKey 的左闭右开区间)的数据,每个 TiKV 节点会负责多个 Region 。TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。

三.核心特性

(1)水平扩展

  • 无限水平扩展是 TiDB 的一大特点,这里说的水平扩展包括两方面:计算能力和存储能力。TiDB Server 负责处理 SQL 请求,随着业务的增长,可以简单的添加 TiDB Server 节点,提高整体的处理能力,提供更高的吞吐。TiKV 负责存储数据,随着数据量的增长,可以部署更多的 TiKV Server 节点解决数据 Scale 的问题。PD 会在 TiKV 节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。所以在业务的早期,可以只部署少量的服务实例(推荐至少部署 3 个 TiKV, 3 个 PD,2 个 TiDB),随着业务量的增长,按照需求添加 TiKV 或者 TiDB 实例。
    (2)高可用
  • 高可用是 TiDB 的另一大特点,TiDB/TiKV/PD 这三个组件都能容忍部分实例失效,不影响整个集群的可用性。下面分别说明这三个组件的可用性、单个实例失效后的后果以及如何恢复。
  • TiDB
    TiDB 是无状态的,推荐至少部署两个实例,前端通过负载均衡组件对外提供服务。当单个实例失效时,会影响正在这个实例上进行的 Session,从应用的角度看,会出现单次请求失败的情况,重新连接后即可继续获得服务。单个实例失效后,可以重启这个实例或者部署一个新的实例。
  • PD
    PD 是一个集群,通过 Raft 协议保持数据的一致性,单个实例失效时,如果这个实例不是 Raft 的 leader,那么服务完全不受影响;如果这个实例是 Raft 的 leader,会重新选出新的 Raft leader,自动恢复服务。PD 在选举的过程中无法对外提供服务,这个时间大约是3秒钟。推荐至少部署三个 PD 实例,单个实例失效后,重启这个实例或者添加新的实例。
  • TiKV
    TiKV 是一个集群,通过 Raft 协议保持数据的一致性(副本数量可配置,默认保存三副本),并通过 PD 做负载均衡调度。单个节点失效时,会影响这个节点上存储的所有 Region。对于 Region 中的 Leader 结点,会中断服务,等待重新选举;对于 Region 中的 Follower 节点,不会影响服务。当某个 TiKV 节点失效,并且在一段时间内(默认 30 分钟)无法恢复,PD 会将其上的数据迁移到其他的 TiKV 节点上。

四.主机环境

主机IP安装的系统服务
server5172.25.19.5PD,TIDB,server,zabbix-server
server6172.25.19.6Tikv1
server7172.25.19.7Tikv2
server8172.25.19.8Tikv3

五,实现zabbix底层tidb数据库配置

  • 本实验是基于zabbix监控平台在server5上搭建好的基础上
  1. 在每个节点都解压tidb的安装包
[root@server5 ~]# tar zxf tidb-latest-linux-amd64.tar.gz
[root@server6 ~]# tar zxf tidb-latest-linux-amd64.tar.gz
[root@server7 ~]# tar zxf tidb-latest-linux-amd64.tar.gz
[root@server8 ~]# tar zxf tidb-latest-linux-amd64.tar.gz
  1. 启动集群(按顺序启动,并将进程打入后台)
  • server5——启动PD
[root@server5 ~]# cd tidb-latest-linux-amd64/bin/
[root@server5 bin]# ./pd-server --name=pd1 --data-dir=pd1 --client-urls="http://172.25.19.5:2379" --peer-urls="http://172.25.19.5:2380" --initial-cluster="pd1=http://172.25.19.5:2380" --log-file=pd.log &
[1] 1440
  • 在server6/7/8上启动Tikv
[root@server6 ~]# cd tidb-latest-linux-amd64/bin/
[root@server6 bin]# ./tikv-server --pd="172.25.19.5:2379" --addr="172.25.19.6:20160" --data-dir=tikv1 --log-file=tilv.log &

[root@server7 ~]# cd tidb-latest-linux-amd64/bin/
[root@server7 bin]# ./tikv-server --pd="172.25.19.7:2379" --addr="172.25.19.7:20160" --data-dir=tikv1 --log-file=tilv.log &

[root@server8 ~]# cd tidb-latest-linux-amd64/bin/
[root@server7 bin]# ./tikv-server --pd="172.25.19.8:2379" --addr="172.25.19.8:20160" --data-dir=tikv1 --log-file=tilv.log &
  • server5启动tidb-server
[root@server5 bin]# ./tidb-server &
  • server5启动tidb后,重新开启一个shell连接server5,可以查看4000端口
    在这里插入图片描述
  1. 将TIDB与zabbix关联
  • 在TIDB端安装数据库客户端,madiadb即可,然后用4000端口登陆mariadb,如果可以查看数据库,就基本上成功了
    在这里插入图片描述
  • 重新创建zabbix数据库,并建立授权用户
MySQL [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> grant all privileges on zabbix.* to zabbix@'172.25.19.%' identified by 'westos';
Query OK, 1 row affected (0.01 sec)

MySQL [(none)]> quit
Bye
  • 将 zabbix-server-mysql 数据导入TIDB中
[root@server5 conf]# cd /usr/share/doc/zabbix-server-mysql-3.4.6 [root@server1 zabbix-server-mysql-3.4.6]# zcat create.sql.gz | mysql -h172.25.19.5 -uzabbix -P4000 -p zabbix
  • 将TIDB集成到zabbix中
    (1)修改zabbix配置文件:
[root@server5 conf]# vim /etc/zabbix/web/zabbix_server.conf
DBPort=4000

(2)修改zabbix前端配置文件

[root@server5 conf]# vim /etc/zabbix/web/zabbix.conf.php 

在这里插入图片描述
4. 重启服务,然后重新打开一个浏览器,能登陆成功,则代表tidb数据库更换成功

[root@server5 conf]# systemctl restart zabbix-server
[root@server5 conf]# systemctl restart zabbix-agent
  1. 用其他端也可以远程登陆进数据库查看到zabbix库
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值