zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

安装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