安装Redis6.2.7主从哨兵集群教程
2023-04-18 15:16:37 时间
一、环境描述
部署模式为1主2从3哨兵,对应的机器如下
操作系统 | IP地址 | 主从分配 | 端口 | 安装服务(可任选) | 安装地址 |
---|---|---|---|---|---|
CentOS 7.9 | 1.0.0.11 | 主 | 10010 | redis-6.2.7.tar.gz | /opt/software/redis |
CentOS 7.9 | 1.0.0.11 | 哨兵1 | 10086 | redis-6.2.7.tar.gz | /opt/software/redis |
CentOS 7.9 | 1.0.0.12 | 从 | 10010 | redis-6.2.7.tar.gz | /opt/software/redis |
CentOS 7.9 | 1.0.0.12 | 哨兵2 | 10086 | redis-6.2.7.tar.gz | /opt/software/redis |
CentOS 7.9 | 1.0.0.13 | 从2 | 10010 | redis-6.2.7.tar.gz | /opt/software/redis |
CentOS 7.9 | 1.0.0.13 | 哨兵3 | 10086 | redis-6.2.7.tar.gz | /opt/software/redis |
二、下载Redis
1、将Redis包先下载到本地
下载地址:https://download.redis.io/releases/redis-6.2.7.tar.gz
2、上传至Linux服务器
三、安装Redis
1、安装Redis所需依赖
# 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装
yum install -y gcc
2、安装Redis
# 进入上传包位置
cd /opt/package/
# 在package目录解压redis安装包
tar -zxvf redis-6.2.7.tar.gz
# 进入redis待安装文件目录下
cd redis-6.2.7/
# 进行编译redis-6.2.7
make
# 进行安装redis-6.2.7并指定安装目录
make install PREFIX=/opt/software/redis
3、启动Redis服务
1、前台启动redis服务
# 进入redis目录
cd /opt/software/redis/bin/
# 启动redis
./redis-server
如上图:redis启动成功,但这种启动需要一直打开窗口,不能进行其他操作,不方便。按 ctrl + c
可以关闭窗口。
2、配置 redis 主从服务
从 redis 的源码目录中复制 redis.conf 到 redis 的安装目录
# 复制redis配置文件
cp /opt/package/redis-6.2.7/redis.conf /opt/software/redis/bin/
# 新建redis日志目录
mkdir -p /data/redis-logs/
# 新建redis日志空文件
echo "" > /data/redis-logs/redis_error.log
1、编辑主节点 redis.conf 配置文件(1.0.0.11)
# 进入redis目录下
cd /opt/software/redis/bin/
# 编辑redis配置文件
vim redis.conf
修改内容
# 绑定为本机IP地址或者0.0.0.0都可访问
由 bind 127.0.0.1 修改成: bind 0.0.0.0
# 注意,此处不要采用默认地址
由 port 6379 修改成: port 10010
# 修改成后台进程启动
由 daemonize no 修改成: daemonize yes
# 配置日志路径
由 logfile "" 修改成: logfile "/data/redis-logs/redis_error.log"
#关闭保护模式(此配置很重要,不配置将无法实现主从切换)
由 protected-mode yes 修改成: protected-mode no
# 以下配置主从节点密码,追加在最后即可
# 由# requirepass foobared 去掉#修改成:requirepass redis@2023
# 配置主节点的密码,哨兵容灾切换使用
masterauth redis@2023
# 配置从节点密码
requirepass redis@2023
# 以下配置追加在配置文件后面,防止运维误操作这些不安全的命令
# 禁用命令
rename-command KEYS ""
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
2、编辑从节点 redis.conf 配置文件(1.0.0.12、1.0.0.13)
# 进入redis目录下
cd /opt/software/redis/bin/
# 编辑redis配置文件
vim redis.conf
修改内容
# 绑定为本机IP地址或者0.0.0.0都可访问
由 bind 127.0.0.1 修改成: bind 0.0.0.0
# 注意,此处不要采用默认地址
由 port 6379 修改成: port 10010
# 修改成后台进程启动
由 daemonize no 修改成: daemonize yes
# 配置日志路径
由 logfile "" 修改成: logfile "/data/redis-logs/redis_error.log"
#关闭保护模式(此配置很重要,不配置将无法实现主从切换)
由 protected-mode yes 修改成: protected-mode no
# 以下配置主从节点密码,追加在最后即可
# 由requirepass foobared 去掉#修改成:requirepass redis@2023
# 配置主节点的密码,哨兵容灾切换使用
masterauth redis@2023
# 配置从节点密码
requirepass redis@2023
# 以下配置主节点ip、端口,追加在最后即可
# 主节点ip、端口
slaveof 1.0.0.11 10010
# 以下配置追加在配置文件后面,防止运维误操作这些不安全的命令
# 禁用命令
rename-command KEYS ""
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
3、配置 sentinel 哨兵服务
从 redis 的源码目录中复制 sentinel.conf 到 redis 的安装目录
# 复制redis配置文件
cp /opt/package/redis-6.2.7/sentinel.conf /opt/software/redis/bin/
# 新建redis日志目录
mkdir -p /data/redis-logs/
# 新建redis日志目录
echo "" > /data/redis-logs/sentinel_error.log
1、编辑哨兵 sentinel.conf 配置文件(1.0.0.11、1.0.0.12、1.0.0.13)
# 进入redis目录下
cd /opt/software/redis/bin/
# 编辑redis配置文件
vim sentinel.conf
修改内容
# 注意,此处不要采用默认地址
由 port 26379 修改成: port 10086
#关闭保护模式(此配置很重要,不配置将无法实现主从切换)
由 #protected-mode no 去掉修改成: protected-mode no
# 修改成后台进程启动
由 daemonize no 修改成: daemonize yes
# 配置日志路径
由 logfile "" 修改成: logfile "/data/redis-logs/sentinel_error.log"
# 监控主节点的ip与端口(注意最后2不变)
由 sentinel monitor mymaster 127.0.0.1 6379 2
修改成:sentinel monitor mymaster 1.0.0.11 10010 2
# master 密码
由 # sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
修改成:sentinel auth-pass mymaster redis@2023
4、配置环境变量
# 修改配置文件
vim /etc/profile
# 在最后面加入
export REDIS_HOME=/opt/software/redis
export PATH=$PATH:$REDIS_HOME/bin
# 使配置文件立即生效
source /etc/profile
5、设置开机启动
1、添加开机启动redis服务
vim /etc/systemd/system/redis.service
复制粘贴以下内容
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/opt/software/redis/bin/redis-server /opt/software/redis/bin/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
注意:ExecStart配置成自己的路径
redis服务操作命令
# 启动redis服务
service redis start
systemctl start redis.service
# 停止redis服务
service redis stop
systemctl stop redis.service
# 重新启动服务
service redis restart
systemctl restart redis.service
# 查看服务当前状态
service redis status
systemctl status redis.service
# 设置开机自启动
systemctl enable redis.service
# 停止开机自启动
systemctl disable redis.service
# 重新加载redis服务的配置文件
systemctl daemon-reload
2、添加开机启动sentinel服务
vim /etc/systemd/system/sentinel.service
复制粘贴以下内容
[Unit]
Description=redis-sentinel
After=network.target
[Service]
Type=forking
ExecStart=/opt/software/redis/bin/redis-sentinel /opt/software/redis/bin/sentinel.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
注意:ExecStart配置成自己的路径
sentinel服务操作命令
# 启动redis服务
systemctl start sentinel
# 停止redis服务
systemctl stop sentinel
# 重新启动服务
systemctl restart sentinel
# 查看服务当前状态
systemctl status sentinel
# 设置开机自启动
systemctl enable sentinel
# 停止开机自启动
systemctl disable sentinel
# 重新加载redis服务的配置文件
systemctl daemon-reload
彩蛋:查看redis版本
redis-server -v
6、验证主从是否正常
1、启动redis服务
# 启动redis服务
systemctl start redis
# 查看状态
[root@nwtest1 ~]# ps -ef | grep redis
root 958 1 0 14:31 ? 00:00:00 /opt/software/redis/bin/redis-server 0.0.0.0:10010
root 2234 1 0 14:32 ? 00:00:00 /opt/software/redis/bin/redis-sentinel *:10086 [sentinel]
root 2241 218 0 14:32 pts/0 00:00:00 grep --color=auto redis
2、在主节点验证
# 连接客户端
[root@nwtest1 /]$ redis-cli -h 1.0.0.11 -p 10010
# 验证密码
1.0.0.11:10010> auth redis@2023
OK
# 查看主节点配置
1.0.0.11:10010> info
主节点,找到Replication模块查看
# Replication
role:master #当前角色是主机
connected_slaves:2 #主节点下有两个丛机
slave1:ip=1.0.0.12,port=10010,state=online,offset=84,lag=1 #从机的IP和端口
slave0:ip=1.0.0.13,port=10010,state=online,offset=84,lag=1 #从机的IP和端口
master_failover_state:no-failover
master_replid:b946de53f8034fbf0517d55debb909135af4d550
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:84
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:84
3、在从节点验证
# 连接客户端
[root@nwtest2 /]$ redis-cli -h 1.0.0.12 -p 10010
# 验证密码
1.0.0.12:10010> auth redis@2023
OK
# 查看主节点配置
1.0.0.12:10010> info
从节点,找到Replication模块查看
# Replication
role:slave #当前角色是从机
master_host:1.0.0.11 #主机IP
master_port:10010 #主机端口
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_read_repl_offset:365821
slave_repl_offset:365821
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:898b54bb1bba7d833927119184fb1eb554427211
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:365821
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:365821
4、测试主从
1、主节点
1.0.0.11:10010> set k1 v1
OK
1.0.0.11:10010>
2、从节点
1.0.0.12:10010> get k1
"v1"
1.0.0.12:10010>
1.0.0.13:10010> get k1
"v1"
1.0.0.13:10010>
5、启动sentinel服务
# 脚本启动sentinel服务
systemctl start sentinel
# 查看状态
[root@nwtest1 redis]# ps -ef | grep redis
root 933 1 0 10:09 ? 00:00:34 /opt/software/redis/bin/redis-sentinel *:10086 [sentinel]
root 934 1 0 10:09 ? 00:00:29 /opt/software/redis/bin/redis-server 0.0.0.0:10010
root 318 9 0 12:41 pts/0 00:00:00 grep --color=auto redis
6、在任意节点验证
# 连接客户端
[root@nwtest1 /]$ redis-cli -h 1.0.0.11 -p 10086
# 查看哨兵信息
1.0.0.11:10010> info sentinel
找到Sentinel模块查看
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
# 哨兵已经监听到主节点IP端口与运行状态,并且有2个从节点3个哨兵
master0:name=mymaster,status=ok,address=1.0.0.11:10010,slaves=2,sentinels=3
四、卸载Redis
1、停止redis运行
# 查看redis进程
ps -ef | grep redis
# 杀死redis进程:kill -9 进程号
# 或者关闭redis服务
systemctl stop redis.service
2、删除Redis相关文件
# 查找根下所有名字包含Redis的文件
sudo find / -name redis*
# 根据查询地址卸载Redis
rm -rf 相关地址
rm -rf /opt/software/redis
# 删除或注释环境变量中的内容
# export REDIS_HOME=/opt/software/redis
# export PATH=$PATH:$REDIS_HOME/bin
# 保存退出,然后使配置文件生效
source /etc/profile
# 关闭开机自启
chkconfig redis off
# 删除开机启动文件
rm -rf /etc/systemd/system/redis.service
相关文章
- 直接在代码里面对list集合进行分页
- .NET Framework 4.5新特性详解
- 大数据的简要介绍
- 大数据的由来
- 高斯混合模型的自然梯度变量推理
- timing-wheel 仿Kafka实现的时间轮算法
- 使用Navicat软件连接自建数据库(Linux系统)
- 那一天,我被Redis主从架构支配的恐惧
- Redis 深入了解键的过期时间
- C#使用委托调用实现用户端等待闪屏
- 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
- GRAND | 转录调控网络预测数据库
- JFreeChart API中文文档
- 临床相关突变查询数据库
- TIGER | 人类胰岛基因变化查询数据库
- 视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
- Apache Arrow - 大数据在数据湖后的下一个风向标
- 常见的电商数据指标体系
- AKShare-艺人数据-艺人流量价值
- MySQL中多表联合查询与子查询的这些区别,你可能不知道!