在linux服务器上部署redis哨兵模式

本文详细记录了在Linux服务器上搭建Redis哨兵模式的过程,包括创建目录、下载安装Redis、配置主从及哨兵、启动服务以及验证数据同步和哨兵监控。通过设置多个从节点和哨兵,实现高可用性和故障切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在linux服务器上部署redis哨兵模式

初次搭建,整理备忘。若有忽略或不正确或冗余操作的地方,欢迎批评指正,谢谢~
以IP为192.168.225.200的服务器为例,工具Xshell。
参考链接:https://blog.youkuaiyun.com/qq_40953197/article/details/108639539

1. 用Xshell连接到服务器,进入usr/local目录下,创建redis目录

cd /usr/local
mkdir redis

2. 下载、解压并安装redis。

(1)进入redis目录下,下载redis

 wget http://download.redis.io/releases/redis-5.0.7.tar.gz

(2)解压

tar xzf redis-5.0.7.tar.gz

(3)进入redis-5.0.7目录编译、安装redis

make && make install

1)创建用于存放数据和日志的目录文件夹data、log。

mkdir data
mkdir log

2)进入log目录,创建日志文件

touch redis.log
touch sentinel.log

在这里插入图片描述

3.在redis目录下新建三份文件夹,分别命名为redis_master(主),redis_slave1(从),redis_slave2(从)。然后将redis-5.0.7文件夹分别复制到三个文件夹中。

(1)进入redis目录,新建redis_master(主),redis_slave1(从),redis_slave2(从)文件夹

mkdir redis_master
mkdir redis_slave1
mkdir redis_slave2

在这里插入图片描述
(2)将redis-5.0.7复制到新建的3个目录中

cp -r redis-5.0.7 /usr/local/redis/redis_master
cp -r redis-5.0.7 /usr/local/redis/redis_slave1
cp -r redis-5.0.7 /usr/local/redis/redis_slave2

4.分别进入redis_master(主),redis_slave1(从),redis_slave2(从)文件夹,修改redis.conf和sentinel.conf文件。

从机的配置和主机相似,不同的地方是从机需要使用replicaof指定主机(master)的IP地址和端口,老版本使用的是 slaveof,5.0.7版本使用 replicaof

(1)redis_master的配置

1)redis.conf配置

#如果想指定限制访问,可设置对应的ip
bind 192.168.225.200
#配置端口
port 6379
timeout 0
tcp-keepalive 300
#设置为后台启动
daemonize yes
#redis pid存储位置,加上端口是便于区分
pidfile /var/run/redis_6379.pid
loglevel notice
#日志文件
logfile “/usr/local/redis/redis_master/redis-5.0.7/log/redis_6379.log”
databases 16
dbfilename dump6379.rdb
#存放备份文件以及日志等文件的目录
dir /usr/local/redis/redis_master/redis-5.0.7/data
#slave服务连接 master的密码
masterauth qazwsx
slave-serve-stale-data no
slave-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-ping-slave-period 10
repl-timeout 60
repl-disable-tcp-nodelay no
#redis 连接密码
requirepass qazwsx

2)sentinel.conf配置

bind 192.168.225.200
#关闭保护模式,可以外部访问
protected-mode no
#默认端口为26379
port 26379
#设置为后台启动
daemonize yes
#redis sentinel pid文件位置
pidfile “/var/run/redis-sentinel.pid”
#日志文件
logfile “/usr/local/redis/redis_master/redis-5.0.7/log/sentinel.log”
dir “/usr/local/redis/redis_master/redis-5.0.7”
sentinel deny-scripts-reconfig yes
#30秒ping不通主节点的信息,主观认为master宕机
sentinel down-after-milliseconds mymaster 3000
#监控的IP 端口号,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换,此处为至少2个
sentinel monitor mymaster 192.168.225.200 6379 2
#当在Redis实例中开启了requirepass,这里就需要提供密码
sentinel auth-pass mymaster qazwsx
sentinel config-epoch mymaster 0
#主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1,1表示串行,>1并行
snetinel parallel-syncs mymaster 1
#故障转移开始,三分钟内没有完成,则认为转移失败
sentinel failover-timeout mymaster 180000

(2)redis_slave1的配置

1)redis.conf配置

daemonize yes
bind 192.168.225.200
port 6380
timeout 0
tcp-keepalive 300
pidfile /var/run/redis_6380.pid
loglevel notice
logfile “/usr/local/redis/redis_slave1/redis-5.0.7/log/redis_6380.log”
databases 16
dbfilename dump6380.rdb
dir /usr/local/redis/redis_slave1/redis-5.0.7/data
replicaof 192.168.225.200 6379
masterauth qazwsx
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass qazwsx

2)sentinel.conf配置

bind 192.168.225.200
protected-mode no
port 26380
daemonize yes
pidfile “/var/run/redis-sentinel.pid”
logfile “/usr/local/redis/redis_slave1/redis-5.0.7/log/sentinel.log”
dir “/usr/local/redis/redis_slave1/redis-5.0.7”
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.225.200 6379 2
sentinel auth-pass mymaster qazwsx
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel failover-timeout mymaster 180000
snetinel parallel-syncs mymaster 1

(2)redis_slave2的配置

1)redis.conf配置

daemonize yes
bind 192.168.225.200
port 6381
timeout 0
tcp-keepalive 300
pidfile /var/run/redis_6381.pid
loglevel notice
logfile “/usr/local/redis/redis_slave2/redis-5.0.7/log/redis_6381.log”
databases 16
dbfilename dump6381.rdb
dir /usr/local/redis/redis_slave2/redis-5.0.7/data
replicaof 192.168.225.200 6379
masterauth qazwsx
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass qazwsx

2)sentinel.conf配置

bind 192.168.225.200
protected-mode no
port 26381
daemonize yes
pidfile “/var/run/redis-sentinel.pid”
logfile “/usr/local/redis/redis_slave2/redis-5.0.7/log/sentinel.log”
dir “/usr/local/redis/redis_slave2/redis-5.0.7”
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.225.200 6379 2
sentinel auth-pass mymaster qazwsx
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel failover-timeout mymaster 180000
snetinel parallel-syncs mymaster 1

5.启动redis_master,redis_slave1,redis_slave2。启动顺序主-从-哨兵。

分别进入redis_master,redis_slave1,redis_slave2的redis-5.0.7目录下。

(1)启动主从

 ./src/redis-server ./redis.conf

(2)启动哨兵

./src/redis-sentinel ./sentinel.conf

通过ps -ef|grep redis查看redis进程,如下图:
在这里插入图片描述
6.验证效果。
(1)验证主从数据是否同步。由于设置了密码,所以要先auth qazwsx,如下图:在这里插入图片描述
1)通过redis-cli -h 192.168.225.200 -c -p 6379,在主上写入数据,如下:

192.168.225.200:6379> auth qazwsx
OK
192.168.225.200:6379> keys *
(empty list or set)
192.168.225.200:6379> set k1 123
OK
192.168.225.200:6379> set k2 456
OK
192.168.225.200:6379> get k1
"123"
192.168.225.200:6379> get k2
"456"
192.168.225.200:6379> 

2)进入从1,redis-cli -h 192.168.225.200 -c -p 6380,查看数据是否同步,如下:

192.168.225.200:6380> auth qazwsx
OK
192.168.225.200:6380> keys *
1) "k1"
2) "k2"
192.168.225.200:6380> get k1
"123"
192.168.225.200:6380> get k2
"456"
192.168.225.200:6380> 

3)进入从2,redis-cli -h 192.168.225.200 -c -p 6381,查看数据是否同步,如下:

192.168.225.200:6381> auth qazwsx
OK
192.168.225.200:6381> keys *
1) "k2"
2) "k1"
192.168.225.200:6381> get k1
"123"
192.168.225.200:6381> get k2
"456"
192.168.225.200:6381> 

通过info replication可以查看他们的角色,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)验证哨兵。
停止redis_master上的redis,kill -9 杀掉端口号为6379的redis进程,6380端口的role会由slave变为master,而且redis.conf文件的replicaof 属性会发生变化,会由之前的6379变化为6380,如下图:
1)redis.conf文件
在这里插入图片描述
在这里插入图片描述
2)6380端口的role会由slave变为master
在这里插入图片描述

要在Linux部署Redis哨兵模式,可以按照以下步骤进行操作: 1. 首先搭建Redis主从模式。可以参考中的文章,按照说明进行配置和搭建。 2. 创建sentinel.conf文件,可以使用以下命令在当前目录下创建: ``` touch sentinel.conf ``` 3. 在sentinel.conf文件中进行哨兵的配置。具体的配置项可以参考中的说明。 4. 启动Redis哨兵服务。可以使用以下命令启动哨兵: ``` redis-sentinel /path/to/sentinel.conf ``` 5. 验证Redis哨兵模式是否正常工作。可以使用以下命令连接Redis服务器,并通过发送INFO命令来查看哨兵的状态: ``` redis-cli -h <主服务器IP> -p <主服务器端口> INFO Sentinel ``` 请注意,以上步骤仅为大致说明,具体的操作和配置可能会因环境和需求而有所不同。建议参考中提供的详细文档,并根据自己的实际情况进行配置和部署。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [LinuxRedis哨兵集群模式搭建详解(1主2从+3哨兵)](https://blog.youkuaiyun.com/weixin_42925623/article/details/129192097)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [linux 运维工程师 在一台centos7服务器上面部署 redis 哨兵集群](https://download.youkuaiyun.com/download/feiwenlsy/86523438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [11. linux环境redis哨兵模式的搭建](https://blog.youkuaiyun.com/hznb_369/article/details/123765814)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值