Centos8搭建redis6.0.9集群并使用prometheus监控

Centos8搭建redis6.0.9集群

引言

作为一名开发人员,数据库我们都不陌生,因为我们的数据都是使用数据库来进行存储的,但是由于一般情况下不会出现高并发的情况,所以看起来并没有什么问题,可是一旦涉及到大数据量的需求,比如秒杀等场景或者是访问量瞬间较大的时候,单一的使用数据库保存数据的系统会因为磁盘读/写速度比较慢而存在严重的性能弊端,瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,很容易造成数据库系统瘫痪,最终导致服务宕机的严重问题。

为了解决这样的问题,我们通常会引入NoSQL,这是一种基于内存的数据库,并且提供一定的持久化功能。

redis

redis是什么

Redis 是一个使用ANSI C编写的、完全开源的、遵守 BSD 协议、包含多种数据结构、支持网络、基于内存、可选持久性的、高性能的 key-value 数据库。是现在最受欢迎的NoSQL数据库之一,上面说的高并发导致宕机的问题,我们一般都会引入Redis来解决。

redis的优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings、Lists、Hashes、Sets 、 Ordered Sets 及Streams数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe、通知、 key 过期等等特性。

Redis的应用场景

Redis 的应用场景包括但不限于:缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、排行榜、社交网络和实时系统等。还有官网列出的这些,如图:
在这里插入图片描述
上面这些我们都可以在实际的开发中使用,拿我自身的开发经历来说吧,比如开发短链系统的时候,我用到了上面的

  • Redis as an LRU cache(Redis实现LRU=Least Recent Used算法)
  • Redis Lua scripting(Nginx支持OpenResty------OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。我们可以编写LUA脚本来保证高性能
  • Distributed locks 分布式锁
  • Expires 过期
  • Memory optimization 内存优化

redis6的新特性

  • 多线程IO。Redis 6引入多线程IO,但多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。之所以这么设计是不想因为多线程而变得复杂,需要去控制 key、lua、事务、LPUSH/LPOP 等等的并发问题。
  • 重新设计了客户端缓存功能。实现了Client-side-caching(客户端缓存)功能。放弃了caching slot,而只使用key names。
  • 支持RESP3协议。RESP(Redis Serialization Protocol)是 Redis 服务端与客户端之间通信的协议。Redis 5 使用的是 RESP2,而 Redis 6 开始在兼容 RESP2 的基础上,开始支持 RESP3。推出RESP3的目的:一是因为希望能为客户端提供更多的语义化响应,以开发使用旧协议难以实现的功能;另一个原因是实现 Client-side-caching(客户端缓存)功能。
  • 支持SSL。连接支持SSL,更加安全。
  • ACL权限控制。支持对客户端的权限控制,实现对不同的key授予不同的操作权限。有一个新的ACL日志命令,允许查看所有违反ACL的客户机、访问不应该访问的命令、访问不应该访问的密钥或者验证尝试失败。这对于调试ACL问题非常有用。
  • 提升了RDB日志加载速度。根据文件的实际组成(较大或较小的值),可以预期20/30%的改进。当有很多客户机连接时,信息也更快了,这是一个老问题,现在终于解决了。
  • 发布官方的Redis集群代理模块 Redis Cluster proxy。在 Redis 集群中,客户端会非常分散,现在为此引入了一个集群代理,可以为客户端抽象 Redis 群集,使其像正在与单个实例进行对话一样。同时在简单且客户端仅使用简单命令和功能时执行多路复用。
  • 提供了众多的新模块(modules)API

Centos8搭建redis6.0.9集群

环境

由于资源有限,我们的redis集群就搭建在同一台虚拟机里面,安装6个redis(三主三从),用不同的端口来区分。

IP:192.168.0.22
# 三主端口分别是:
7000、7001和7002
# 三从端口分别是:
7003、7004和7005

为什么需要三主三从6个节点呢?

  1. Redis集群 至少 需要 3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了,那么该节点才是挂了,所以2个节点无法构成集群。
  2. 要保证集群的高可用,需要 每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。但是由于我资源有限启动不了那么多虚拟机,所以在这里搭建的是伪分布式集群,即一台虚拟机虚拟运行 6个redis实例,修改端口号为(7000-7005)。当然了,实际生产环境的Redis集群搭建和这里是一样的。

我们给集群应该有几个节点做一个假设:

2个节点,一个宕掉,剩下的1个不超过1半(1),集群停止工作

3个节点,一个宕掉,剩下的两个超过1半(1.5),集群 继续工作

4个节点,一个宕掉,剩下的3个超过1半(2个),集群 继续工作

4个节点,两个宕掉,剩下的2个不超过1半(2个),集群停止工作

所以要保证集群继续工作,不管是3个节点还是4个节点都是只允许一个节点宕掉,由此可见3个节点是最实际的选择。
综上所述,所以redis主从集群最少需要6个节点:master节点至少要3个,slave节点也是3个。
另外redis官网也建议集群三主三从
在这里插入图片描述

搭建redis6.0.9集群
创建目录
[root@dxm22 ~]# mkdir -p /data/redis6
[root@dxm22 ~]# cd /data/redis6/
下载redis6.0.9
# redis官网
[root@dxm22 redis6]# wget https://download.redis.io/releases/redis-6.0.9.tar.gz

# 如果redis官网下载太慢,可以使用华为镜像网站下载,先放着,有需要的同学自取
[root@dxm22 redis6]# wget https://mirrors.huaweicloud.com/redis/redis-6.0.9.tar.gz
[root@dxm22 redis6]# ll -h
总用量 2.2M
-rw-r--r-- 1 root root 2.2M 10月 27 15:14 redis-6.0.9.tar.gz
解压
[root@dxm22 redis6]# tar -zxvf redis-6.0.9.tar.gz
编译安装

进入解压后的目录进行编译安装。

[root@dxm22 redis6]# cd redis-6.0.9/
# PREFIX的值:/usr/local/redis这个是安装目录,可以改成自己想要的安装目录。
[root@dxm22 redis-6.0.9]# make PREFIX=/usr/local/redis install

在这里插入图片描述
编译安装完成之后可以看到我们的安装目录(/usr/local/redis)下就有了bin这个目录。
在这里插入图片描述

创建用于存放集群节点的目录
# 创建目录:redis6-cluster
[root@dxm22 redis-6.0.9]# mkdir -p /usr/local/redis6-cluster
# 查看/usr/local目录
[root@dxm22 redis-6.0.9]# ll /usr/local

在这里插入图片描述

复制/usr/local/redis/bin所有文件到/usr/local/redis6-cluster/redis7000目录下
# 切换目录到/usr/local/
[root@dxm22 redis-6.0.9]# cd /usr/local/
[root@dxm22 local]#

# 切换完成之后复制
[root@dxm22 local]# cp -r redis/bin/ redis6-cluster/redis7000
[root@dxm22 local]# cd redis6-cluster/
[root@dxm22 redis6-cluster]# ll redis7000

在这里插入图片描述

注意:这里redis6-cluster下面redis7000目录不需要手动创建,执行命令之后会 自动创建 的,后面的5个也是如此。

拷贝解压后文件夹下面的redis.conf至/usr/local/redis6-cluster/redis7000文件夹下
[root@dxm22 local]# cp /data/redis6/redis-6.0.9/redis.conf  /usr/local/redis6-cluster/redis7000/

在这里插入图片描述

修改/usr/local/redis6-cluster/redis7000文件夹下redis.conf配置文件

主要修改以下几个地方:1、端口号修改为7000;2、开启集群创建模式,打开注释即可。cluster-enabled yes 表示启用cluster;3、修改bind地址为0.0.0.0;4、修改redis最大占用内存maxmemory为512mb;

[root@dxm22 local]# vim redis6-cluster/redis7000/redis.conf

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在redis6-cluster目录下复制redis7000文件夹5份并修改配置文件为对应端口

复制的5份文件夹的名称分别是redis7001、redis7002、redis7003、redis7004、redis7005

# 切换目录到redis6-cluster
[root@dxm22 local]# cd redis6-cluster/

# 复制为redis7001
[root@dxm22 redis6-cluster]# cp -r redis7000/ redis7001
[root@dxm22 redis6-cluster]# ll redis7001/
总用量 45940
-rwxr-xr-x 1 root root  6384048 12月 10 20:21 redis-benchmark
-rwxr-xr-x 1 root root 11290840 12月 10 20:21 redis-check-aof
-rwxr-xr-x 1 root root 11290840 12月 10 20:21 redis-check-rdb
-rwxr-xr-x 1 root root  6690128 12月 10 20:21 redis-cli
-rw-r--r-- 1 root root    84839 12月 10 20:21 redis.conf
lrwxrwxrwx 1 root root       12 12月 10 20:21 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 11290840 12月 10 20:21 redis-server

# 修改文件夹redis7001下redis.conf端口号为7001
[root@dxm22 redis6-cluster]# cd redis7001/
[root@dxm22 redis7001]# vim redis.conf

在这里插入图片描述

# 复制为redis7002
[root@dxm22 redis6-cluster]# cp -r redis7000/ redis7002
[root@dxm22 redis6-cluster]# cd redis7002
[root@dxm22 redis7002]# ll
总用量 45940
-rwxr-xr-x 1 root root  6384048 12月 10 20:23 redis-benchmark
-rwxr-xr-x 1 root root 11290840 12月 10 20:23 redis-check-aof
-rwxr-xr-x 1 root root 11290840 12月 10 20:23 redis-check-rdb
-rwxr-xr-x 1 root root  6690128 12月 10 20:23 redis-cli
-rw-r--r-- 1 root root    84839 12月 10 20:23 redis.conf
lrwxrwxrwx 1 root root       12 12月 10 20:23 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 11290840 12月 10 20:23 redis-server
# 修改文件夹redis7002下redis.conf端口号为7002
[root@dxm22 redis7002]# vim redis.conf

在这里插入图片描述

# 复制为redis7003
[root@dxm22 redis6-cluster]# cp -r redis7000/ redis7003
[root@dxm22 redis6-cluster]# cd redis7003
[root@dxm22 redis7003]# ll
总用量 45940
-rwxr-xr-x 1 root root  6384048 12月 10 20:26 redis-benchmark
-rwxr-xr-x 1 root root 11290840 12月 10 20:26 redis-check-aof
-rwxr-xr-x 1 root root 11290840 12月 10 20:26 redis-check-rdb
-rwxr-xr-x 1 root root  6690128 12月 10 20:26 redis-cli
-rw-r--r-- 1 root root    84839 12月 10 20:26 redis.conf
lrwxrwxrwx 1 root root       12 12月 10 20:26 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 11290840 12月 10 20:26 redis-server
# 修改文件夹redis7003下redis.conf端口号为7003
[root@dxm22 redis7003]# vim redis.conf

在这里插入图片描述

# 复制为redis7004
[root@dxm22 redis6-cluster]# cp -r redis7000/ redis7004
[root@dxm22 redis6-cluster]# cd redis7004
[root@dxm22 redis7004]# ll
总用量 45940
-rwxr-xr-x 1 root root  6384048 12月 10 20:27 redis-benchmark
-rwxr-xr-x 1 root root 11290840 12月 10 20:27 redis-check-aof
-rwxr-xr-x 1 root root 11290840 12月 10 20:27 redis-check-rdb
-rwxr-xr-x 1 root root  6690128 12月 10 20:27 redis-cli
-rw-r--r-- 1 root root    84839 12月 10 20:27 redis.conf
lrwxrwxrwx 1 root root       12 12月 10 20:27 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 11290840 12月 10 20:27 redis-server
# 修改文件夹redis7004下redis.conf端口号为7004
[root@dxm22 redis7004]# vim redis.conf

在这里插入图片描述

# 复制为redis7005
[root@dxm22 redis6-cluster]# cp -r redis7000/ redis7005
[root@dxm22 redis6-cluster]# cd redis7005
[root@dxm22 redis7005]# ll
总用量 45940
-rwxr-xr-x 1 root root  6384048 12月 10 20:29 redis-benchmark
-rwxr-xr-x 1 root root 11290840 12月 10 20:29 redis-check-aof
-rwxr-xr-x 1 root root 11290840 12月 10 20:29 redis-check-rdb
-rwxr-xr-x 1 root root  6690128 12月 10 20:29 redis-cli
-rw-r--r-- 1 root root    84839 12月 10 20:29 redis.conf
lrwxrwxrwx 1 root root       12 12月 10 20:29 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 11290840 12月 10 20:29 redis-server
# 修改文件夹redis7005下redis.conf端口号为7005
[root@dxm22 redis7005]# vim redis.conf

在这里插入图片描述
在这里插入图片描述

启动redis节点

6个节点挨个启动有点繁琐,这里我们使用脚本文件批量启动。

[root@dxm22 redis6-cluster]# vim start-all-redis.sh

内容如下:

cd redis7000
./redis-server redis.conf &
cd ..
cd redis7001
./redis-server redis.conf &
cd ..
cd redis7002
./redis-server redis.conf &
cd ..
cd redis7003
./redis-server redis.conf &
cd ..
cd redis7004
./redis-server redis.conf &
cd ..
cd redis7005
./redis-server redis.conf &
cd ..

在这里插入图片描述
从截图看到还缺少可执行权限,我们加上:

[root@dxm22 redis6-cluster]# chmod +x start-all-redis.sh

在这里插入图片描述
执行脚本,批量启动6个节点:

[root@dxm22 redis6-cluster]# ./start-all-redis.sh

在这里插入图片描述

Running in cluster mode 说明是集群模式。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建集群

在这里插入图片描述
从redis官网看到要创建集群要使用redis-cli,因为我们这里是redis版本是6.0.9。

[root@dxm22 redis6-cluster]# cd redis7000
[root@dxm22 redis7000]# ./redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 \
> 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \
> --cluster-replicas 1

# 此处使用的命令是create,因为我们要创建一个新集群。该选项--cluster-replicas 1意味着我们希望为每个创建的主机都提供一个从机。其他参数是我要用于创建新集群的实例的地址列表。

注意: 这里的IP和端口要换成自己的IP和端口。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
[OK] All 16384 slots covered.说明16384个槽位全部分配完毕。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此redis6集群搭建完成。从图中可以看到每个节点所分配的slots(哈希槽),这里总共6个节点,其中3个是从节点,所以3个主节点分别映射了0-5460、5461-10922、10933-16383solts。

测试集群:连接集群中的节点(任意一个都可以)
[root@dxm22 redis7000]# ./redis-cli -c -p 7001
127.0.0.1:7001> set a 1

这里选择的是redis7000的文件夹,为什么-p后面使用的是7001的端口呢?就是为了让大家明白,任意一个都可以,一样的。
在这里插入图片描述
在这里插入图片描述
从这两张图可以看出集群中的节点是自动跳转的,这就要归功于命令中的-c选项了,如果不加-c选项节点之间是无法自动跳转的,也可以看出数据的存储是均匀分配到不同节点的。

查看集群中节点信息
127.0.0.1:7000> cluster nodes

在这里插入图片描述

查看当前集群信息
127.0.0.1:7000> cluster info

在这里插入图片描述

测试集群故障转移
查看主节点
[root@dxm22 redis7000]# ./redis-cli -p 7000 cluster nodes | grep master

在这里插入图片描述
所以7000、7001和7002是主节点。让我们使用DEBUG SEGFAULT命令使节点7001崩溃 :

[root@dxm22 redis7000]# ./redis-cli -p 7001 debug segfault

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

再次查看主节点信息
[root@dxm22 redis7000]# ./redis-cli -p 7000 cluster nodes | grep master

在这里插入图片描述
可以看到7001端口已经崩溃,7004从slave变成了master节点。

重新启动7001节点,再查看节点信息
[root@dxm22 redis7000]# cd ../redis7001
[root@dxm22 redis7001]# ./redis-server ./redis.conf &

在这里插入图片描述
在这里插入图片描述
可以看到7001节点作为从节点重新加入了集群。

redis集群节点加入systemctl管理并设为开机自启动

编写批量启动redis的shell脚本

我们把上面那个批量启动redis的脚本做一下改动,内容如下:

[root@dxm22 redis6-cluster]# cat start-all-redis.sh
cd /usr/local/redis6-cluster/redis7000
./redis-server redis.conf &
cd /usr/local/redis6-cluster/redis7001
./redis-server redis.conf &
cd /usr/local/redis6-cluster/redis7002
./redis-server redis.conf &
cd /usr/local/redis6-cluster/redis7003
./redis-server redis.conf &
cd /usr/local/redis6-cluster/redis7004
./redis-server redis.conf &
cd /usr/local/redis6-cluster/redis7005
./redis-server redis.conf &
编写批量停止redis的shell脚本
[root@dxm22 redis6-cluster]# vim stop-all-redis.sh
[root@dxm22 redis6-cluster]# cat stop-all-redis.sh
ps aux|grep redis|awk {print $2}|xargs kill -15
创建redis-cluster.service服务文件
[root@dxm22 redis6-cluster]# vim /etc/systemd/system/redis-cluster.service

内容如下:

[Unit]
Description=Redis6Cluster
After=network.target

[Service]
Type=forking
ExecStart=sh /usr/local/redis6-cluster/start-all-redis.sh
ExecStop=sh /usr/local/redis6-cluster/stop-all-redis.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target
# 重新加载服务列表
[root@dxm22 redis6-cluster]# systemctl daemon-reload

# 先停止掉前面启动的redis进程
[root@dxm22 redis6-cluster]# systemctl stop redis-cluster.service
[root@dxm22 redis6-cluster]# ps aux | grep redis
root       57800  0.0  0.0  12320  1060 pts/0    S+   23:06   0:00 grep --color=auto redis


# 查看开机服务列表是否有redis服务
[root@dxm22 redis7001]# systemctl list-unit-files | grep redis
redis-cluster.service                      disabled

# 存在,且非开启自启动,接着使用systemctl启动redis集群服务
[root@dxm22 redis6-cluster]# systemctl start redis-cluster.service

# 查看服务状态
[root@dxm22 redis6-cluster]# systemctl status redis-cluster.service

在这里插入图片描述
Active: active (running)说明服务是启动状态,再来看看进程。
在这里插入图片描述

测试集群

在这里插入图片描述
可以看到集群没问题。

设置为开机自启动
[root@dxm22 redis7000]# systemctl enable redis-cluster.service
Created symlink /etc/systemd/system/multi-user.target.wants/redis-cluster.service → /etc/systemd/system/redis-cluster.service.
[root@dxm22 redis7000]# systemctl list-unit-files | grep redis
redis-cluster.service                      enabled

在这里插入图片描述

使用prometheus监控

Prometheus监控Redis cluster和监控MySQL是一样的,都是使用 exporter。

安装使用redis_exporter-v1.14.0

创建目录

[root@dxm22 redis6-cluster]# mkdir -p /data/redis_exporter

下载

[root@dxm22 redis6-cluster]# cd /data/redis_exporter/
[root@dxm22 redis_exporter]# wget https://github.com/oliver006/redis_exporter/releases/download/v1.14.0/redis_exporter-v1.14.0.linux-amd64.tar.gz

解压

[root@dxm22 redis_exporter]# tar -zxvf redis_exporter-v1.14.0.linux-amd64.tar.gz

在这里插入图片描述

拷贝二进制文件至/usr/local/bin目录下

[root@dxm22 redis_exporter]# cd redis_exporter-v1.14.0.linux-amd64/
[root@dxm22 redis_exporter-v1.14.0.linux-amd64]# ll
总用量 8512
-rw-r--r-- 1 root root    1063 12月 10 09:09 LICENSE
-rw-r--r-- 1 root root   15864 12月 10 09:09 README.md
-rwxr-xr-x 1 root root 8695808 12月 10 09:08 redis_exporter
[root@dxm22 redis_exporter-v1.14.0.linux-amd64]# cp redis_exporter /usr/local/bin/
[root@dxm22 redis_exporter-v1.14.0.linux-amd64]# ll /usr/local/bin/ | grep redis_exporter
-rwxr-xr-x 1 root          root           8695808 12月 11 00:02 redis_exporter

在这里插入图片描述

启动

[root@dxm22 redis_exporter-v1.14.0.linux-amd64]# nohup /usr/local/bin/redis_exporter -redis.addr=192.168.0.22:7001 –debug &
[1] 58694
[root@dxm22 redis_exporter-v1.14.0.linux-amd64]# nohup: 忽略输入并把输出追加到'nohup.out'

这里输入集群中任意一个节点的端口就可以,然后查看进程

[root@dxm22 redis_exporter-v1.14.0.linux-amd64]# ps aux | grep redis_exporter

在这里插入图片描述
浏览器输入IP+9121访问。我这里是http://192.168.0.22:9121/。
在这里插入图片描述

加入systemctl管理并设为开机自启动

创建redis-exporter.service服务文件
[root@dxm22 redis_exporter]# vim /etc/systemd/system/redis_exporter.service

内容如下:

[Unit]
Description=redis_exporter
After=network.target

[Service]
Type=simple
ExecStart=nohup /usr/local/bin/redis_exporter -redis.addr=192.168.0.22:7001 –debug &
PrivateTmp=true
RestartSec=5
StartLimitInterval=0
Restart=always

[Install]
WantedBy=multi-user.target
# 重新加载服务列表
[root@dxm22 redis_exporter]# systemctl daemon-reload

# 先停止掉前面启动的redis_exporter进程
[root@dxm22 redis_exporter]# ps aux | grep redis_exporter
root       58694  0.2  1.1 713444 21008 pts/0    Sl   00:05   0:11 /usr/local/bin/redis_exporter -redis.addr=192.168.0.22:7001 –debug
root       93164  0.0  0.0  12320   976 pts/0    S+   01:14   0:00 grep --color=auto redis_exporter
[root@dxm22 redis_exporter]# kill -9 58694
[root@dxm22 redis_exporter]# ps aux | grep redis_exporter
root       93174  0.0  0.0  12320   996 pts/0    S+   01:15   0:00 grep --color=auto redis_exporter

# 查看开机服务列表是否有redis_exporter服务
[root@dxm22 redis_exporter]# systemctl list-unit-files  | grep redis_exporter
redis_exporter.service                     disabled

# 存在,且非开启自启动,接着使用systemctl启动redis_exporter服务
[root@dxm22 redis_exporter]# systemctl start redis_exporter

# 查看服务状态
[root@dxm22 redis_exporter]# systemctl status redis_exporter

在这里插入图片描述

Active: active (running)说明服务是启动状态,再来看看进程。
在这里插入图片描述

设置为开机自启动
[root@dxm22 redis_exporter]# systemctl enable redis_exporter.service
Created symlink /etc/systemd/system/multi-user.target.wants/redis_exporter.service → /etc/systemd/system/redis_exporter.service.
[root@dxm22 redis_exporter]# systemctl list-unit-files  | grep redis_exporter
redis_exporter.service                     enabled

修改prometheus.yml

[root@dxm22 redis6-cluster]# vim /etc/prometheus/prometheus.yml

增加如下内容:

- job_name: 'redis_exporter_targets'
    static_configs:
      - targets:
        - redis://192.168.0.22:7000  #这里的IP和端口要换成自己的。
        - redis://192.168.0.22:7001
        - redis://192.168.0.22:7002
        - redis://192.168.0.22:7003
        - redis://192.168.0.22:7004
        - redis://192.168.0.22:7005
    params:
        check-keys: ["metrics:*"]
    metrics_path: /scrape
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 192.168.0.22:9121 #部署节点ip
  ## config for scraping the exporter itself
  - job_name: 'redis_exporter'
    static_configs:
      - targets: ['192.168.0.22:9121'] #部署节点ip

重启prometheus

[root@dxm22 redis_exporter-v1.14.0.linux-amd64]# systemctl restart prometheus.service

再次访问http://192.168.0.22:9090/targets。
在这里插入图片描述
在这里插入图片描述

Grafana导入redis

在这里插入图片描述
在这里插入图片描述
选择prometheus,点击import按钮。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

批量插入数据测试

写shell脚本,批量set数据到redis

内容如下:

[root@dxm22 ~]# cat /usr/local/redis6-cluster/redis7000/for.sh
#!/bin/bash

for((i=1;i<=10000000;i++));
do
echo "set a${i} ${i}" >> ./batch_insert.txt;
echo "get a${i}" >> ./batch_insert.txt;
done

# 执行shell脚本
[root@dxm22 ~]# sh /usr/local/redis6-cluster/redis7000/for.sh

# 批量写入数据
[root@dxm22 redis7000]# cat batch_insert.txt | ./redis-cli -h 127.0.0.1 -c  -p 7002

在这里插入图片描述

验证测试结果

再来看看grafana监控:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时redis性能使用率已经在上升。
至此关于Centos8搭建redis6.0.9集群并使用prometheus监控完成。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值