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

Centos8搭建redis6.0.9集群并使用prometheus监控_段晓慢的博客-CSDN博客

Centos8搭建redis6.0.9集群并使用prometheus监控
Centos8搭建redis6.0.9集群
引言
redis
redis是什么
redis的优势
Redis的应用场景
redis6的新特性
Centos8搭建redis6.0.9集群
环境
搭建redis6.0.9集群
创建目录
下载redis6.0.9
解压
编译安装
创建用于存放集群节点的目录
复制/usr/local/redis/bin所有文件到/usr/local/redis6-cluster/redis7000目录下
拷贝解压后文件夹下面的redis.conf至/usr/local/redis6-cluster/redis7000文件夹下
修改/usr/local/redis6-cluster/redis7000文件夹下redis.conf配置文件
在redis6-cluster目录下复制redis7000文件夹5份并修改配置文件为对应端口
启动redis节点
创建集群
测试集群:连接集群中的节点(任意一个都可以)
查看集群中节点信息
查看当前集群信息
测试集群故障转移
查看主节点
再次查看主节点信息
重新启动7001节点,再查看节点信息
redis集群节点加入systemctl管理并设为开机自启动
编写批量启动redis的shell脚本
编写批量停止redis的shell脚本
创建redis-cluster.service服务文件
测试集群
设置为开机自启动
使用prometheus监控
安装使用redis_exporter-v1.14.0
创建目录
下载
解压
拷贝二进制文件至/usr/local/bin目录下
启动
加入systemctl管理并设为开机自启动
创建redis-exporter.service服务文件
设置为开机自启动
修改prometheus.yml
重启prometheus
Grafana导入redis
批量插入数据测试
写shell脚本,批量set数据到redis
验证测试结果
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
1
2
3
4
5
为什么需要三主三从6个节点呢?

Redis集群 至少 需要 3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了,那么该节点才是挂了,所以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/
1
2
下载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
1
2
3
4
5
6
7
8
解压
[root@dxm22 redis6]# tar -zxvf redis-6.0.9.tar.gz
1
编译安装
进入解压后的目录进行编译安装。

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

编译安装完成之后可以看到我们的安装目录(/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
1
2
3
4


复制/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
1
2
3
4
5
6
7
8


注意:这里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/
1


修改/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
1

在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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18


# 复制为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
1
2
3
4
5
6
7
8
9
10
11
12
13
14


# 复制为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
1
2
3
4
5
6
7
8
9
10
11
12
13
14


# 复制为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
1
2
3
4
5
6
7
8
9
10
11
12
13
14


# 复制为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
1
2
3
4
5
6
7
8
9
10
11
12
13
14

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

[root@dxm22 redis6-cluster]# vim start-all-redis.sh
1
内容如下:

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 ..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

从截图看到还缺少可执行权限,我们加上:

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

执行脚本,批量启动6个节点:

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


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意味着我们希望为每个创建的主机都提供一个从机。其他参数是我要用于创建新集群的实例的地址列表。
1
2
3
4
5
6
注意: 这里的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
1
2
这里选择的是redis7000的文件夹,为什么-p后面使用的是7001的端口呢?就是为了让大家明白,任意一个都可以,一样的。


从这两张图可以看出集群中的节点是自动跳转的,这就要归功于命令中的-c选项了,如果不加-c选项节点之间是无法自动跳转的,也可以看出数据的存储是均匀分配到不同节点的。

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


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


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

所以7000、7001和7002是主节点。让我们使用DEBUG SEGFAULT命令使节点7001崩溃 :

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

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

可以看到7001端口已经崩溃,7004从slave变成了master节点。

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


可以看到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 &
1
2
3
4
5
6
7
8
9
10
11
12
13
编写批量停止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
1
2
3
创建redis-cluster.service服务文件
[root@dxm22 redis6-cluster]# vim /etc/systemd/system/redis-cluster.service
1
内容如下:

[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
1
2
3
4
5
6
7
8
9
10
11
12
# 重新加载服务列表
[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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

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
1
2
3
4


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

安装使用redis_exporter-v1.14.0
创建目录
[root@dxm22 redis6-cluster]# mkdir -p /data/redis_exporter
1
下载
[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
1
2
解压
[root@dxm22 redis_exporter]# tar -zxvf redis_exporter-v1.14.0.linux-amd64.tar.gz
1


拷贝二进制文件至/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
1
2
3
4
5
6
7
8
9


启动
[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'
1
2
3
这里输入集群中任意一个节点的端口就可以,然后查看进程

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

浏览器输入IP+9121访问。我这里是http://192.168.0.22:9121/。


加入systemctl管理并设为开机自启动
创建redis-exporter.service服务文件
[root@dxm22 redis_exporter]# vim /etc/systemd/system/redis_exporter.service
1
内容如下:

[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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 重新加载服务列表
[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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


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
1
2
3
4
修改prometheus.yml
[root@dxm22 redis6-cluster]# vim /etc/prometheus/prometheus.yml
1
增加如下内容:

- 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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
重启prometheus
[root@dxm22 redis_exporter-v1.14.0.linux-amd64]# systemctl restart prometheus.service
1
再次访问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
1
2
3
4
5
6
7
8
9
10
11
12
13
14


验证测试结果
再来看看grafana监控:

此时redis性能使用率已经在上升。
至此关于Centos8搭建redis6.0.9集群并使用prometheus监控完成。
————————————————
版权声明:本文为CSDN博主「段晓慢」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44798288/article/details/110950286

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值