openEuler 系统操作 Docker Compose 容器化部署 Redis Cluster 集群的节点添加、删除和可视化监控

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!
  • 指定端口查看,redismaster 节点 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.36https://github.com/RedisInsight/RedisInsight/releases/tag/2.36.0
  • The best Redis GUIhttps://redis.com/redis-enterprise/redis-insight/

RedisInsight

此处为了省事,我就不安装桌面客户端模式了,感兴趣的小伙伴自行下载安装。

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/ 显示页面如下:

redisinsight-1

翻译信息如下:

redisinsight-1-1

点击【CONFIRM/确认】进入后页面显示入下:

redisinsight-2

此处我们已经有 redis-cluster-server,选择【I already have a database

redisinsight-3-1

  • 单实例 Redis 连接

由于我本地 docker for windows/wsl2 环境运行了一个单实例的 dapr_redis,如下所示:

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:Port => 172.17.97.27:6479
  • Password => 123456

redisinsight-3-2
redisinsight-3-3

点击上面的【dapr_redis】进入如下页面:

redisinsight-3-4

  • 集群模式 Redis 连接

此时我们继续采用 Docker 容器化部署的 RedisInsight 连接 redis-cluster 环境,redis 集群环境信息如下:

redis-cluster

选择左上方的【ADD REDIS DATABASE】添加 redis-cluster 连接:

redisinsight-4

输入 redis.conf 配置信息:

  • IP:Port => 172.17.97.27:6479
  • Password => 123456

redisinsight-5

链接 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),说明防火墙在运行状态。

Active: active (running)

解决办法,关闭防火墙。

  • 暂时性关闭
systemctl stop firewalld
  • 永久性关闭
systemctl disable firewalld 

再次查看防火墙的状态,显示信息如下图:

Active: inactive (dead)

从上图中可以看到状态信息 Active: inactive (dead) ,说明 firewalld 已经停止运行。此时我们在输入上面信息点击【ADD REDIS DATABASE】即可。

除了使用官方的 Redisinsight GUI 连接访问, 我们还可以使用第三方工具【Another Redis Desktop Manager】连接测试:

Another-Redis-1

连接进入后,显示信息如下:

Another-Redis-2

博文参考:redis 搭建集群,拒绝连接问题解决 => https://blog.csdn.net/youtiantin/article/details/121972562

添加集群节点

注意:下面的添加集群节点操作环节,均需要进入容器内执行才可执行 redis-cli 命令,因此在下面的环节中就不做过多说明。

启动 Reids 扩容服务

我们当前的 redis-cluster 环境是 3主3从,现在对该环境进行扩容,变成 4主4从,另外就还需要启动两个 redis-server,由于此处的演示环境是采用 1vm 部署 docker 容器化的 reids 服务,因此这里需要启动 2redis 容器。

规划新扩容的两个 redis 服务服下:

  • redis7079(当作 master 节点),对应端口 7079
  • redis7179(当作 slave/replica 节点),对应端口 7179

注意:实际情况中,更具具体情况编排 redis 端口。

为了现有集群环境风格统一,同样在当前目录下新建两个 redis 分别对应的目录文件夹:

mkdir redis7079 redis7179

准备 redis7079redis.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 composeyaml 文件动态执行,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 的可视化监控。

  1. 下载 GrafanaDocker 镜像;
docker pull grafana/grafana:latest
  1. 下载完成后运行 Grafana
docker run -p 3000:3000 --name grafana \
-d grafana/grafana:latest
  1. 接下来下载 PrometheusDocker 镜像;
docker pull prom/prometheus:latest
  1. /mydata/prometheus/ 目录下创建 Prometheus 的配置 prometheus.yaml 文件:
global:
  scrape_interval: 5s
  1. 运行 Prometheus,把宿主机中的配置文件 prometheus.yaml 挂载到容器中去;
docker run -p 9090:9090 --name prometheus \
-v /mydata/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-d prom/prometheus
  1. 进入 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/

Grafana添加reids数据源

  • 配置 Redis 地址信息,注意使用 redismod 的容器 IP 地址;

使用redismod容器ip

  • 打开 GrafanaDashboard 选择 Redis

在这里插入图片描述

  • 接下来就可以看到一个非常完善的 Redis监控仪表盘 了,基本能满足Redis 的监控需求。

Redis监控仪表盘

欢迎关注/点赞/分享,希望该文章能帮助到您,感兴趣的小伙伴可自行尝试哟。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChaITSimpleLove

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值