容器化部署 Redis Cluster 集群的节点添加、删除和可视化监控
- Redis Cluster 集群回顾
- openEuler 系统查看端口是否被占用
- Redis Cluster 验证
- Redis CLI 客户端命令验证
- Redis GUI 工具验证
- 宿主机安装 RedisInsight
- Docker 容器化部署 RedisInsight
- 添加集群节点
- 启动 Reids 扩容服务
- 添加 Redis Master 主节点
- 添加 Redis Slave/Replica 从节点
- 删除集群节点
- 删除 Redis Master 主节点
- 删除 Redis Slave/Replica 从节点
- 重新分配槽位(slots)
- Redis 新特性
- RedisMod 简介
- Redis 可视化监控
- 使用 RedisMod
Redis Cluster 集群回顾
上一篇文章 中我们讲解了在 openEuler
系统中容器化部署 Redis Cluster
集群模式,部署环境和镜像信息如下:
openEuler 22.03 lts x86_64
,规格4c8g,hdd 100G
硬盘redis:7.2.3-alpine3.18
Docker Engine - Community 24.0.7
Docker Compose version v2.21.0
查看 redis
集群运行状态如下:
[root@redis redis-cluster]# docker compose version
Docker Compose version v2.21.0
[root@redis redis-cluster]# docker compose ls
NAME STATUS CONFIG FILES
redis-cluster running(6) /home/jeff/docker/redis-cluster/redis-compose.yaml
[root@redis redis-cluster]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0b1298e268c8 redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6979
6ab62db8b863 redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6679
89db0baf10ef redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6879
bb52cfab5a13 redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6579
5648246b22fc redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6779
626f5286a324 redis:7.2.3-alpine3.18 "docker-entrypoint.s…" 3 days ago Up 3 days redis6479
- 进入
master
节点redis6479
[root@redis redis-cluster]# docker container exec -it redis6479 /bin/sh
/data # redis-cli -c -h 172.17.97.27 -p 6479 -a '123456' --raw
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
172.17.97.27:6479>
- 查看
redis cluster
信息
172.17.97.27:6479> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:78
cluster_stats_messages_pong_sent:74
cluster_stats_messages_sent:152
cluster_stats_messages_ping_received:69
cluster_stats_messages_pong_received:78
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:152
total_cluster_links_buffer_limit_exceeded:0
- 查看
redis cluster
集群节点信息
172.17.97.27:6479> cluster nodes
dd899a703c3625cc520a63b7d7ff43cd858fee2d 172.17.97.27:6679@16679 master - 0 1699610730191 3 connected 10923-16383
03d72c6c044eca519a8d23819d11378e29a08a5f 172.17.97.27:6479@16479 myself,master - 0 1699610730000 1 connected 0-5460
66b4a1b3a2a2228f2f5e29685d086ea91fb6f088 172.17.97.27:6579@16579 master - 0 1699610732202 2 connected 5461-10922
f3a91b7a89526e176c9b910e8aaddc6a3053779a 172.17.97.27:6779@16779 slave dd899a703c3625cc520a63b7d7ff43cd858fee2d 0 1699610730000 3 connected
95664c7b93b8c750e88c25cf008861dbbbf13af2 172.17.97.27:6879@16879 slave 03d72c6c044eca519a8d23819d11378e29a08a5f 0 1699610731196 1 connected
83e58fd778bf873129d7c97cb0f85e3fefb86b6c 172.17.97.27:6979@16979 slave 66b4a1b3a2a2228f2f5e29685d086ea91fb6f088 0 1699610729185 2 connected
这是我们之前 docker
容器化环境搭建的 redis cluster
环境信息,接下来我们使用 redis-cli
验证下基本的数据存储。
openEuler 系统查看端口是否被占用
此处我们可以使用 lsof
查看 redis
端口占用情况。
dnf
安装lsof
[root@redis redis-cluster]# dnf install -y lsof
Last metadata expiration check: 0:32:37 ago on 2023年11月10日 星期五 13时51分50秒.
Dependencies resolved.
================================================================================================================================
Package Architecture Version Repository Size
================================================================================================================================
Installing:
lsof x86_64 4.94.0-1.oe2203 OS 93 k
Transaction Summary
================================================================================================================================
Install 1 Package
Total download size: 93 k
Installed size: 193 k
Downloading Packages:
lsof-4.94.0-1.oe2203.x86_64.rpm 101 kB/s | 93 kB 00:00
--------------------------------------------------------------------------------------------------------------------------------
Total 69 kB/s | 93 kB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : lsof-4.94.0-1.oe2203.x86_64 1/1
Verifying : lsof-4.94.0-1.oe2203.x86_64 1/1
Installed:
lsof-4.94.0-1.oe2203.x86_64
Complete!
- 指定端口查看,
redis
的master
节点redis6479
[root@redis redis-cluster]# lsof -i:6479
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 45318 systemd-coredump 7u IPv4 118707 0t0 TCP *:6479 (LISTEN)
redis-ser 45318 systemd-coredump 8u IPv6 118708 0t0 TCP *:6479 (LISTEN)
redis-ser 45318 systemd-coredump 23u IPv4 124974 0t0 TCP redis.mshome.net:6479->redis.mshome.net:45068 (ESTABLISHED)
redis-ser 45549 systemd-coredump 23u IPv4 122473 0t0 TCP redis.mshome.net:45068->redis.mshome.net:6479 (ESTABLISHED)
- 查看所有监听端口
lsof -i
注意:上述命令均需要 root 权限才能执行。
Redis Cluster 验证
Redis CLI 客户端命令验证
- 添加一个
test
键,值为"hello,world"
172.17.97.27:6479> set test "hello,world"
-> Redirected to slot [6918] located at 172.17.97.27:6579
OK
172.17.97.27:6579> get test
hello,world
172.17.97.27:6579> PING
PONG
172.17.97.27:6579> exit
通过上面的信息操作验证,redis cli
命令操作正常。
Redis GUI 工具验证
Redis
客户端桌面工具这里我们使用官方推出的 RedisInsight
。
RedisInsight
工具有两种模式,分别是:宿主机直接下载安装或者采用 docker
容器化部署。
宿主机安装 RedisInsight
注意:目前 RedisInsight 支持 Redis 版本 4 及更高版本。
RedisInsight v2.36
,https://github.com/RedisInsight/RedisInsight/releases/tag/2.36.0The best Redis GUI
,https://redis.com/redis-enterprise/redis-insight/
此处为了省事,我就不安装桌面客户端模式了,感兴趣的小伙伴自行下载安装。
Docker 容器化部署 RedisInsight
除了宿主机安装 RedisInsight for windows
桌面工具方式,此处还可以直接下载 docker
镜像 redislabs/redisinsight:latest
,执行命令下载:
PS C:\Users\Jeffrey.Chai> docker pull redislabs/redisinsight
Using default tag: latest
latest: Pulling from redislabs/redisinsight
bd159e379b3b: Pull complete
de08aeb7fd50: Pull complete
7091270c8142: Pull complete
2f44657947b6: Pull complete
55e2b120f544: Pull complete
2334b37e06e6: Pull complete
d31ad784df66: Pull complete
d88ac93467d5: Pull complete
62e1f12ea619: Pull complete
92457786662e: Pull complete
eaeaaab2bb3c: Pull complete
4f4fb700ef54: Pull complete
61895bd73f82: Pull complete
cd4f466154c9: Pull complete
669853c54f83: Pull complete
Digest: sha256:b03ab1426d0d861b0370e05ee670a8819c8ab36b987ca59e4a3e92e0038d089c
Status: Downloaded newer image for redislabs/redisinsight:latest
docker.io/redislabs/redisinsight:latest
运行容器:
PS E:\docker-volume> ls
目录: E:\docker-volume
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2023/4/11 14:15 database
d----- 2023/7/28 13:44 esdata
da---- 2023/9/20 16:56 redisdata
d----- 2023/11/15 15:19 redisinsight
PS E:\docker-volume> docker run -d --name redisinsight -v ./redisinsight:/db -p 8001:8001 redislabs/redisinsight
7b2aac61d63b7b54eb774c9cbcb820758e4452401325ea3398e9fa4e183c3163
本机使用的是 windows
环境,此处新建目录 E:\docker-volume\redisinsight
,上面运行的命令挂载 volume
到指定目录文件夹。
查看运行的容器 redisinsight
,输出如下信息:
PS E:\docker-volume> docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b2aac61d63b redislabs/redisinsight "bash ./docker-entry…" 7 minutes ago Up 7 minutes 0.0.0.0:8001->8001/tcp redisinsight
浏览器输入地址:http://localhost:8001/
显示页面如下:
翻译信息如下:
点击【CONFIRM/确认
】进入后页面显示入下:
此处我们已经有 redis-cluster-server
,选择【I already have a database
】
- 单实例
Redis
连接
由于我本地 docker for windows/wsl2
环境运行了一个单实例的 dapr_redis
,如下所示:
此处我们选择第一项【Connect to a Redis Database
】,先尝试连接下该实例的 dapr_redis
。
查看宿主机 ip
地址:
[root@redis redis-cluster]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:03:36:16 brd ff:ff:ff:ff:ff:ff
inet 172.17.97.27/20 brd 172.17.111.255 scope global dynamic noprefixroute eth0
valid_lft 51316sec preferred_lft 51316sec
inet6 fe80::6789:89e4:df04:ad30/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:25:a8:f6:1f brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
输入如下配置信息:
ip: 192.168.2.46
port: 6379
点击上面的【dapr_redis
】进入如下页面:
- 集群模式
Redis
连接
此时我们继续采用 Docker
容器化部署的 RedisInsight
连接 redis-cluster
环境,redis 集群环境信息如下:
选择左上方的【ADD REDIS DATABASE
】添加 redis-cluster
连接:
输入 redis.conf
配置信息:
IP:Port => 172.17.97.27:6479
Password => 123456
链接 redis-cluster
被拒绝,提示信息如下:
Could not connect: Error 113 connecting to 172.17.97.27:6479. No route to host.
出错原因:redis server
端的防火墙设置了过滤规则。
- 查看防火墙运行状态:
systemctl status firewalld
显示 Active: active (running)
,说明防火墙在运行状态。
解决办法,关闭防火墙。
- 暂时性关闭
systemctl stop firewalld
- 永久性关闭
systemctl disable firewalld
再次查看防火墙的状态,显示信息如下图:
从上图中可以看到状态信息 Active: inactive (dead)
,说明 firewalld
已经停止运行。此时我们在输入上面信息点击【ADD REDIS DATABASE
】即可。
除了使用官方的 Redisinsight GUI
连接访问, 我们还可以使用第三方工具【Another Redis Desktop Manager
】连接测试:
连接进入后,显示信息如下:
博文参考:redis 搭建集群,拒绝连接问题解决 => https://blog.csdn.net/youtiantin/article/details/121972562
添加集群节点
注意:下面的添加集群节点操作环节,均需要进入容器内执行才可执行
redis-cli
命令,因此在下面的环节中就不做过多说明。
启动 Reids 扩容服务
我们当前的 redis-cluster
环境是 3主3从
,现在对该环境进行扩容,变成 4主4从
,另外就还需要启动两个 redis-server
,由于此处的演示环境是采用 1vm
部署 docker
容器化的 reids
服务,因此这里需要启动 2
个 redis
容器。
规划新扩容的两个 redis
服务服下:
redis7079
(当作master
节点),对应端口7079
;redis7179
(当作slave/replica
节点),对应端口7179
;
注意:实际情况中,更具具体情况编排 redis 端口。
为了现有集群环境风格统一,同样在当前目录下新建两个 redis
分别对应的目录文件夹:
mkdir redis7079 redis7179
准备 redis7079
的 redis.conf
文件:
# 修改为后台启动
#daemonize yes
# 修改端口号
port 7079
# 指定数据文件存储位置
#dir /usr/local/redis-app/7079/
# 开启集群模式
cluster-enabled yes
# 集群节点信息文件配置
cluster-config-file nodes-7079.conf
# 集群节点超时间
cluster-node-timeout 15000
# 去掉bind绑定地址
# bind 127.0.0.1 -::1 (这里没写错就是加#注释掉bind配置)
# 关闭保护模式
protected-mode no
# 开启aof模式持久化
appendonly yes
# 设置连接Redis需要密码123(选配)
requirepass 123456
# 设置Redis节点与节点之间访问需要密码123(选配)
masterauth 123456
可以执行命令依次单个运行 redis
,注意 port/端口
编排:
docker run -p 6379:6379 --name redis7079 \
-v /home/jeff/docker/redis-cluster/redis7079/redis.conf:/etc/redis/redis.conf \
-v /home/jeff/docker/redis-cluster/redis7079/data:/data \
-d redis:7.2.3-alpine3.18 redis-server /etc/redis/redis.conf \
--appendonly yes
说明:这里拿一个点举例,其他的类似。
此处为了方便省事,这里就不手动单个运行新扩容的 redis
服务了,直接采用 docker compose
的 yaml
文件动态执行,copy
一份原来的 redis-compose.yaml
文件重命名为 redis-compose-expand.yaml
:
cp ./redis-compose.yaml ./redis-compose-expand.yaml
文件 redis-compose-expand.yaml
修改内容如下:
version: '3.8'
services:
redis7079:
network_mode: 'host'
image: redis:7.2.3-alpine3.18
container_name: redis7079
restart: always
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
logging:
driver: 'json-file'
options:
max-size: '3g'
volumes:
- ./redis6479/data:/data
- ./redis6479/redis.conf:/usr/local/etc/redis/redis.conf
- ./redis6479/logs:/logs
redis7179:
network_mode: 'host'
image: redis:7.2.3-alpine3.18
container_name: redis7179
restart: always
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
logging:
driver: 'json-file'
options:
max-size: '3g'
volumes:
- ./redis6579/data:/data
- ./redis6579/redis.conf:/usr/local/etc/redis/redis.conf
- ./redis6579/logs:/logs
然后再 copy
一份 redis-build.sh
命名为 redis-build-expand.sh
:
cp ./redis-build.sh ./redis-build-expand.sh
文件 redis-build-expand.sh
修改内容如下:
#!/bin/bash
echo "1.创建 redis-app 目录,路径 /usr/local/redis-app/"
cd /usr/local/
sudo mkdir ./redis-app
echo "2.准备 redis7079 节点目录文件"
cd /usr/local/redis-app/
sudo mkdir ./7079
cd /home/jeff/docker/redis-cluster;
sudo mkdir ./redis7079
cp -f ./redis.conf ./redis7079/redis.conf;
sed -i "s/6379/7079/g" ./redis7079/redis.conf;
cd ./redis7079
sudo rm -rf ./redis7079/data;
sudo rm -rf ./redis7079/logs;
echo "3.准备 redis7179 节点目录文件"
cd /usr/local/redis-app/
sudo mkdir ./7179
cd /home/jeff/docker/redis-cluster;
sudo mkdir ./redis7179
cp -f ./redis.conf ./redis7179/redis.conf;
sed -i "s/6379/7179/g" ./redis7179/redis.conf;
cd ./redis7179
sudo rm -rf ./redis7179/data;
sudo rm -rf ./redis7179/logs;
echo "4.指定 redis-compose-expand.yaml 文件执行 docker compose 部署"
cd /home/jeff/docker/redis-cluster;
docker compose -f redis-compose-expand.yaml up -d
准备好上面环节后,此时执行 ./redis-build-expand.sh
脚本启动 redis
扩容服务。
查看 redis 新扩容的容器服务是否启动:
docker container ls
添加 Redis Master 主节点
规划的主节点:172.17.97.27:7079
- 添加主节点
使用如下命令即可添加节点将一个新的节点添加到
redis-cluster
集群中。
# -a 密码认证(没有密码不用带此参数)
# --cluster add-node 添加节点 新节点IP:新节点PORT 任意存活节点IP:任意存活节点PORT
./bin/redis-cli -a 123456 --cluster add-node 172.17.97.27:7079 172.17.97.27:6479
此时我们使用 cluster nodes
命令查看集群信息表,可以看到 7079
已经被添加到了新的集群中了,但是 7079
并且没有任何的槽位信息,这时就需要迁移槽位(slots
)。
- 迁移主节点槽位
使用如下命令将其它主节点的分片迁移到当前节点中。
# -a 密码认证(没有密码不用带此参数)
# --cluster reshard 槽位迁移 从节点IP:节点端口,迁移槽位到当前节点中
./bin/redis-cli --cluster reshard 172.17.97.27:6879
输入完成后会打印一片执行计划给你看,输入 yes
就会把槽位与数据全部迁移到新节点了。
说明:从原来的
redis-cluster
中任意找一个从节点即可。
迁移完毕后再 查看集群信息(cluster nodes)
可以看到新扩展的主节点 7079
已经添加了槽位了。
添加 Redis Slave/Replica 从节点
规划的从节点:172.17.97.27:7179
同上操作,此处我们也需要把该从节点添加到 redis-cluster
集群环境中。
- 添加从节点
使用如下命令即可添加节点将一个新的节点添加到
redis-cluster
集群中。
# -a 密码认证(没有密码不用带此参数)
# --cluster add-node 添加节点 新节点IP:新节点端口 任意存活节点IP:任意存活节点端口
./bin/redis-cli -a 123456 --cluster add-node 172.17.97.27:7179 172.17.97.27:6479
执行命令 cluster nodes
查看集群节点,可以看到 7179
节点已经添加进去了,但是任何的节点添加都是主节点,那么接下来我们需要把 7179
改成从节点。
- 配置从节点
我们需要使用客户端命令连接到刚刚新添加的 7179
节点的上,并且为它设置一个主节点,设置完毕后再次查看集群节点信息,可以看到 7179
已经是 7079
的从节点了。
进入新添加的 7179
从节点容器服务,执行 redis-cli
连接服务:
# 连接需设为从节点的 Redis 服务
./bin/redis-cli -a 123456 -p 7179
# 将当前节点分配为 8cf44439390dc9412813ad27c43858a6bb53365c 的从节点
CLUSTER REPLICATE 8cf44439390dc9412813ad27c43858a6bb53365c
说明:编号
8cf44439390dc9412813ad27c43858a6bb53365c
可以从cluster nodes
集群节点查看,该编号代表的是7079
主节点。
此处我们就在原来 redis-cluster
集群中添加了新扩容的节点集群,由原来的 3主3从
扩容为 4主4从
集群。
删除集群节点
在删除主节点之前,首先需要对该主节点的槽进行迁移,把该主节点槽位移动到别的主节点中,其次在执行删除该主节点操作。
删除 Redis Master 主节点
- 新增的主节点:
172.17.97.27:7079
进入 7079
节点容器环节,执行如下命令:
./bin/redis-cli -a 123456 --cluster reshard 172.17.97.27:6479
迁移完后再次 查看集群节点/cluster nodes
信息,可以看到 6479
的槽位增加了,7079
的槽位已经没有了。
- 删除主节点
执行如下命令删除节点:
# -a 密码认证(没有密码不用带此参数)
# --cluster del-node 连接任意一个存活的节点IP:连接任意一个存活的节点PORT 要删除的节点ID
./bin/redis-cli -a 123456 --cluster del-node 172.17.97.27:6479 8cf44439390dc9412813ad27c43858a6bb53365c
- 删除 redis 对应的容器
由于要删除的 redis 主节点是 docker 容器化运行的,执行完上面步骤后,先停止该节点再执行删除。
# 先停止 redis 节点容器
docker stop <containerid>
# 再删除 redis 节点容器
docker rmi -f <containerid>
删除 Redis Slave/Replica 从节点
- 新增的从节点:
172.17.97.27:7179
从节点删除比较简单,直接删除即可(因为没有槽位要迁移),现在要删除 7179
节点。
- 删除从节点
执行如下命令删除节点:
# -a 密码认证(没有密码不用带此参数)
# --cluster del-node 连接任意一个存活的节点IP:连接任意一个存活的节点端口 要删除的节点ID
./bin/redis-cli -a 123456 --cluster del-node 172.17.97.27:7179 71cb4fe842e83252f0ffabdc2b31eddb98fd4c89
删除成功后,再次 查看集群节点/cluster nodes
,可以看到 7179
节点已经在集群中消失了。
- 删除 redis 对应的容器
从节点也是 docker
容器化部署的,所以同上操作先停止该节点再执行删除。
重新分配槽位(slots)
注意:重新分配槽位慎用!!!
该功能可以让集群的槽位重新平均分配,但是由于涉及到槽位大量迁移会导致整个 Redis
阻塞停止处理客户端的请求。
执行如下命令重新分配槽位:
# -a 密码认证(没有密码不用带此参数)
# --cluster rebalance 重新分配集群中的槽位
./bin/redis-cli -a 123456 --cluster rebalance 172.17.97.27:6479
槽位(slots
)重新分配完成后,再次 查看集群节点/cluster nodes
,可以看到所有的主节点的槽位都被重新分配了。
Redis 新特性
输入命令搜索:
docker search redislabs
输出信息如下:
[root@redis redis-cluster]# docker search redislabs
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redislabs/redisearch Redis With the RedisSearch module pre-loaded… 60
redislabs/rebloom A probablistic datatypes module for Redis 24 [OK]
redislabs/redisinsight RedisInsight - The GUI for Redis 92
redislabs/rejson RedisJSON - Enhanced JSON data type processi… 53
redislabs/operator 7
redislabs/redis Clustered in-memory database engine compatib… 40
redislabs/operator-internal This repository contains pre-released versio… 1
redislabs/redisgraph A graph database module for Redis 26 [OK]
redislabs/redismod An automated build of redismod - latest Redi… 41 [OK]
redislabs/redistimeseries A time series database module for Redis 12
redislabs/redis-py 5
redislabs/k8s-controller-internal 0
redislabs/k8s-controller 2
redislabs/memtier_benchmark Docker image to run memtier_benchmark 0
redislabs/olmtest Test artefact for OLM CSV 1
redislabs/redis-webcli A tiny Flask app to provide access to Redis … 5 [OK]
redislabs/redisai 6
redislabs/ng-redis-raft Redis with redis raft module 0
redislabs/olm-bundle 0
redislabs/redisgears An automated build of RedisGears 4
redislabs/gesher K8s Admission control proxy 0
redislabs/ng-ci-runner 0
redislabs/rcp-kubectl Container for running kubectl commands (plus… 1
redislabs/redisml A Redis module that implements several machi… 3 [OK]
redislabs/fake-kubelet The pod on this node will always be in the r… 0
RedisMod 简介
Redis
经过多年发展,早已不仅仅是一个单纯的内存数据库了。
有了RedisMod
的支持,Redis
的功能将变得非常强大。
RedisMod
中包含了如下增强模块:
RediSearch
:一个功能齐全的搜索引擎;RedisJSON
:对 JSON 类型的原生支持;RedisTimeSeries
:时序数据库支持;RedisGraph
:图数据库支持;RedisBloom
:概率性数据的原生支持;RedisGears
:可编程的数据处理;RedisAI
:机器学习的实时模型管理和部署。
使用 Docker
来安装 Redis
,注意下载 Redis
的完全体版本 RedisMod
,它是内置了所有模块的增强版 Redis
,快速安装操作如下:
- 下载
RedisMod
的镜像
docker pull redislabs/redismod:latest
- 在容器中运行
RedisMod
服务
docker run -p 6379:6379 --name redismod \
-v /mydata/redismod/data:/data \
-d redislabs/redismod:latest
RedisMod
服务安装完毕,接下来我们就使用 RedisInsight
来管理它了。
Redis 可视化监控
除了官方推出的 RedisInsight
工具可以用来可视化监控,还可以使用 Grafana
来作为 redis
的可视化监控。
- 下载
Grafana
的Docker
镜像;
docker pull grafana/grafana:latest
- 下载完成后运行
Grafana
;
docker run -p 3000:3000 --name grafana \
-d grafana/grafana:latest
- 接下来下载
Prometheus
的Docker
镜像;
docker pull prom/prometheus:latest
- 在
/mydata/prometheus/
目录下创建Prometheus
的配置prometheus.yaml
文件:
global:
scrape_interval: 5s
- 运行
Prometheus
,把宿主机中的配置文件prometheus.yaml
挂载到容器中去;
docker run -p 9090:9090 --name prometheus \
-v /mydata/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-d prom/prometheus
- 进入
grafana
容器并安装redis-datasource
插件,安装完成后需要重启grafana
服务。
docker exec -it grafana /bin/bash
grafana-cli plugins install redis-datasource
使用 RedisMod
- 连接到
redismod
需要使用到它的容器IP
地址,使用如下命令查看redismod
容器的IP
地址;
docker inspect redismod | grep IPAddress
- 在
Grafana
中配置好Redis
数据源,使用admin:admin
账户登录,访问地址【http://172.17.97.27:3000/
】
- 配置
Redis
地址信息,注意使用redismod
的容器IP
地址;
- 打开
Grafana
的Dashboard
选择Redis
;
- 接下来就可以看到一个非常完善的
Redis监控仪表盘
了,基本能满足Redis
的监控需求。
欢迎关注/点赞/分享,希望该文章能帮助到您,感兴趣的小伙伴可自行尝试哟。