赞
踩
Redis Download:https://redis.io/download/
Redis Tag:https://github.com/redis/redis/tags
Redis cluster specification:https://redis.io/docs/reference/cluster-spec/
High availability with Redis Sentinel:https://redis.io/docs/management/sentinel/
CentOS7安装部署Redis7:https://blog.csdn.net/u011424614/article/details/132418619
Redis入门和使用实践v2018:https://blog.csdn.net/u011424614/article/details/100170313
[Windows] Redis使用记录:https://blog.csdn.net/u011424614/article/details/101531772
CentOS基础操作命令:https://blog.csdn.net/u011424614/article/details/94555916
Redis Cluster 是 Redis 的一个分布式部署模式,旨在提供高可用性、横向扩展性和分布式数据存储。Redis Cluster 的主要特点包括:
Redis Sentinel(主从复制模式) 是用于监控和管理 Redis 服务器高可用性的工具。它可以确保在 Redis 主节点发生故障时执行自动故障转移操作,将一个从节点升级为新的主节点,以维持系统的可用性。以下是 Redis Sentinel 的主要特点和功能:
机器名 | IP | 端口 |
---|---|---|
sys-cluster-01 | 192.168.249.131 | 3306、33061 |
sys-cluster-02 | 192.168.249.132 | 3306、33061 |
sys-cluster-03 | 192.168.249.133 | 3306、33061 |
在 3 台服务器上安装Redis
安装参考:《CentOS7安装部署Redis7 》
安装目录:/opt/redis/redis-7.0.12/src
修改 3 台服务器的 hosts 文件
cat > /etc/hosts <<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.249.131 sys-cluster-01
192.168.249.132 sys-cluster-02
192.168.249.133 sys-cluster-03
EOF
mkdir -p /opt/redis/redis-7.0.12/{data,logs}
在 3 台服务器上使用相同的配置文件
cat > /opt/redis/redis-7.0.12/redis-cluster-6379.conf <<EOF
# 指定 Redis 服务器绑定的网络接口地址
bind 0.0.0.0
# Redis 服务器监听的端口号
port 6379
# 关闭保护模式
protected-mode no
# Redis 服务器以守护进程的方式运行
# daemonize no
# Redis 服务器的密码
requirepass "redis123456"
# Redis 日志文件的路径和文件名
logfile "/opt/redis/redis-7.0.12/logs/cluster-6379.log"
# 启用Redis的持久化日志
appendonly yes
# 持久化数据文件(快照文件)的文件名
dbfilename "cluster-6379.rdb"
# 持久化数据文件的存储目录
dir "/opt/redis/redis-7.0.12/data/"
# 从节点连接到主节点所需的密码
masterauth "redis123456"
# 是否开启集群
cluster-enabled yes
# 集群端口
cluster-port 16379
# 生成的node文件,记录集群节点信息,默认为 nodes.conf
cluster-config-file nodes-6379.conf
#节点连接超时时间
cluster-node-timeout 20000
EOF
在 3 台服务器上使用相同的配置文件
cat > /etc/systemd/system/redis-server.service <<EOF
[Unit]
Description=The redis-server Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/var/run/redis_6379.pid
ExecStart=/opt/redis/redis-7.0.12/src/redis-server /opt/redis/redis-7.0.12/redis-cluster-6379.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target
EOF
# 重新加载服务配置文件
systemctl daemon-reload
# 启动服务
systemctl start redis-server.service
# 重启服务
systemctl restart redis-server.service
# 服务自启动
systemctl enable redis-server.service
# 停止服务
systemctl stop redis-server.service
# 服务状态
systemctl status redis-server.service
其中一个服务器执行
cd /opt/redis/redis-7.0.12
# 创建集群
# (备用) ./src/redis-cli --cluster create 192.168.249.131:6379 192.168.249.132:6379 192.168.249.133:6379 -a redis123456
./src/redis-cli --cluster create sys-cluster-01:6379 sys-cluster-02:6379 sys-cluster-03:6379 -a redis123456
# 集群访问
#(备用)./src/redis-cli -c -h 192.168.249.131 -p 6379 -a redis123456
./src/redis-cli -c -h sys-cluster-01 -p 6379 -a redis123456
# 查询集群状态
cluster info
# 测试
set name abc
get name
# 停止 redis 服务端
redis-cli shutdown
131 主服务器上修改配置文件
cat > /opt/redis/redis-7.0.12/redis-sentinel-6379.conf <<EOF
# 指定 Redis 服务器绑定的网络接口地址
bind 0.0.0.0
# Redis 服务器监听的端口号
port 6379
# 关闭保护模式
protected-mode no
# Redis 服务器以守护进程的方式运行
# daemonize no
# Redis 服务器的密码
requirepass "redis123456"
# Redis 日志文件的路径和文件名
logfile "/opt/redis/redis-7.0.12/logs/sentinel-6379.log"
# 启用Redis的持久化日志
appendonly yes
# 持久化数据文件(快照文件)的文件名
dbfilename "sentinel-6379.rdb"
# 持久化数据文件的存储目录
dir "/opt/redis/redis-7.0.12/data/"
EOF
132 和133 从服务器上修改配置文件
cat > /opt/redis/redis-7.0.12/redis-sentinel-6379.conf <<EOF
# 指定 Redis 服务器绑定的网络接口地址
bind 0.0.0.0
# Redis 服务器监听的端口号
port 6379
# 关闭保护模式
protected-mode no
# Redis 服务器以守护进程的方式运行
# daemonize no
# Redis 服务器的密码
requirepass "redis123456"
# 从节点连接到主节点所需的密码
masterauth "redis123456"
# Redis 日志文件的路径和文件名
logfile "/opt/redis/redis-7.0.12/logs/sentinel-6379.log"
# 启用Redis的持久化日志
appendonly yes
# 持久化数据文件(快照文件)的文件名
dbfilename "sentinel-6379.rdb"
# 持久化数据文件的存储目录
dir "/opt/redis/redis-7.0.12/data/"
# 指向主节点
replicaof 192.168.249.131 6379
EOF
在 3 台服务器上使用相同的配置文件
cat > /etc/systemd/system/redis-server.service <<EOF
[Unit]
Description=The redis-server Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/var/run/redis_6379.pid
ExecStart=/opt/redis/redis-7.0.12/src/redis-server /opt/redis/redis-7.0.12/redis-sentinel-6379.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target
EOF
# 重新加载服务配置文件
systemctl daemon-reload
# 启动服务
systemctl start redis-server.service
# 重启服务
systemctl restart redis-server.service
# 服务自启动
systemctl enable redis-server.service
# 停止服务
systemctl stop redis-server.service
# 服务状态
systemctl status redis-server.service
在 3 台服务器上使用相同的配置文件
cat > /opt/redis/redis-7.0.12/redis-sentinel-26379.conf <<EOF
# 指定 Redis 服务器绑定的网络接口地址
bind 0.0.0.0
# Redis 服务器监听的端口号
port 26379
# 关闭保护模式
protected-mode no
# Redis 服务器的密码
requirepass "redis123456"
# 从节点连接到主节点所需的密码
masterauth "redis123456"
# Redis 日志文件的路径和文件名
logfile "/opt/redis/redis-7.0.12/logs/sentinel-26379.log"
# 持久化数据文件的存储目录
dir "/opt/redis/redis-7.0.12/data/"
# 设置 Sentinel 监视的 Redis 主节点 mymaster 的认证密码
sentinel auth-pass mymaster redis123456
# Sentinel 监视名为 mymaster 的 Redis 主节点
sentinel monitor mymaster 192.168.249.131 6379 2
# 配置指定了 Sentinel 在认为主节点不可用之前等待的毫秒数
sentinel down-after-milliseconds mymaster 10000
# 定了在进行故障转移时,同时同步的从节点数量
sentinel parallel-syncs mymaster 1
# 配置定义了执行故障转移的超时时间
sentinel failover-timeout mymaster 60000
EOF
在 3 台服务器上使用相同的配置文件
cat > /etc/systemd/system/redis-sentinel.service <<EOF
[Unit]
Description=The redis-sentinel Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/var/run/redis_sentinel_6379.pid
ExecStart=/opt/redis/redis-7.0.12/src/redis-sentinel /opt/redis/redis-7.0.12/redis-sentinel-26379.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target
EOF
# 重新加载服务配置文件
systemctl daemon-reload
# 启动服务
systemctl start redis-sentinel.service
# 重启服务
systemctl restart redis-sentinel.service
# 服务自启动
systemctl enable redis-sentinel.service
# 停止服务
systemctl stop redis-sentinel.service
# 服务状态
systemctl status redis-sentinel.service
其中一个服务器执行
cd /opt/redis/redis-7.0.12
# 客户端连接 redis 服务
./src/redis-cli -h 192.168.249.131 -p 6379 -a redis123456
# 查询主从模式状态
info replication
# 测试
set name abc
get name
# 客户端连接 redis sentinel 服务
./src/redis-cli -h 192.168.249.131 -p 26379 -a redis123456
# 查询 sentinel 状态
info sentinel
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。