Mac上安装主从模式&哨兵模式Redis(5.0.9)

1、安装

下载安装可参考:https://www.cnblogs.com/cxbks-write-down/articles/17269966.html

2、服务节点说明

Master节点ip和端口为:127.0.0.1:6380

Slave节点ip和端口为:127.0.0.1:6381;127.0.0.1:6382

哨兵节点说明:127.0.0.1:26380;127.0.0.1:26381;127.0.0.1:26382

Redis哨兵集群拓扑图.png

3、配置主从模式

3.1、redis修改配置

3.1.1、Master的redis.conf

# 设置哪些IP可以连接redis-server,4个0表示全部[!!危险!!]
bind 127.0.0.1
port 6380
# 设置redis启动为后台守护进程
daemonize yes
# pidfile的路径(daemonize yes时,redis默认会把pid写入下面的文件)
pidfile /usr/local/redis-5.0.9/logs/redis_6380.pid
# 日志级别
loglevel notice
# 日志文件路径
logfile /usr/local/redis-5.0.9/logs/redis_6380.log
# 持久化数据存放的目录
dir /usr/local/redis-5.0.9/data/
# 本地客户端登录密码
requirepass 000000
# 主节点登陆密码
masterauth 000000
# 同时连接Redis服务的最大客户端数量(默认10000)
maxclients 10000
# 设置为后台启动
protected-mode no

3.1.2、Slave的redis.conf

Slave1的redis.conf

# 设置哪些IP可以连接redis-server,4个0表示全部[!!危险!!]
bind 127.0.0.1
port 6381
# 设置redis启动为后台守护进程
daemonize yes
# pidfile的路径(daemonize yes时,redis默认会把pid写入下面的文件)
pidfile /usr/local/redis-5.0.9-slave1/logs/redis_6381.pid
# 日志级别
loglevel notice
# 日志文件路径
logfile /usr/local/redis-5.0.9-slave1/logs/redis_6381.log
# 持久化数据存放的目录
dir /usr/local/redis-5.0.9-slave1/data/
# 本地客户端登录密码
requirepass 000000
# 主节点登陆密码
masterauth 000000
# 同时连接Redis服务的最大客户端数量(默认10000)
maxclients 10000
# 配置主从关系,只配置从节点!!!
slaveof 127.0.0.1 6380
# 设置为后台启动
protected-mode no

Slave2的redis.conf

# 设置哪些IP可以连接redis-server,4个0表示全部[!!危险!!]
bind 127.0.0.1
port 6382
# 设置redis启动为后台守护进程
daemonize yes
# pidfile的路径(daemonize yes时,redis默认会把pid写入下面的文件)
pidfile /usr/local/redis-5.0.9-slave2/logs/redis_6382.pid
# 日志级别
loglevel notice
# 日志文件路径
logfile /usr/local/redis-5.0.9-slave2/logs/redis_6382.log
# 持久化数据存放的目录
dir /usr/local/redis-5.0.9-slave2/data/
# 本地客户端登录密码
requirepass 000000
# 主节点登陆密码
masterauth 000000
# 同时连接Redis服务的最大客户端数量(默认10000)
maxclients 10000
# 配置主从关系,只配置从节点!!!
slaveof 127.0.0.1 6380
# 设置为后台启动
protected-mode no

3.2、启动主从模式Redis

# 启动redis
/usr/local/redis-5.0.9/bin/redis-server /usr/local/redis-5.0.9/etc/redis.conf
/usr/local/redis-5.0.9-slave1/bin/redis-server /usr/local/redis-5.0.9-slave1/etc/redis.conf
/usr/local/redis-5.0.9-slave2/bin/redis-server /usr/local/redis-5.0.9-slave2/etc/redis.conf

3.3、验证

3.3.1、查看进程

# 查看是否3个redis进程
ps -ef|grep redis|grep -v grep

3.3.2、登录查看

Master节点登录查看

# redis-cli登录redis服务查看
/usr/local/redis-5.0.9/bin/redis-cli -p 6380 -a 000000
# 查看主从状态
info replication

主从模式中的主节点信息.jpg

Slave1节点登录查看

# redis-cli登录redis服务查看
/usr/local/redis-5.0.9-slave1/bin/redis-cli -p 6381 -a 000000
# 查看主从状态
info replication

主从模式中slave1信息.jpg

Slave2节点登录查看

# redis-cli登录redis服务查看
/usr/local/redis-5.0.9-slave2/bin/redis-cli -p 6382 -a 000000
# 查看主从状态
info replication

主从模式中slave2信息.jpg

3.4、测试

3.4.1、Master设置

127.0.0.1:6380> set key 1
OK

3.4.2、Slave查看

127.0.0.1:6381> get key
"1"

127.0.0.1:6382> get key
"1"
127.0.0.1:6382> set key2 2
(error) READONLY You can't write against a read only replica

4、配置哨兵模式

4.1、Master上的sentinel.conf

# sentinel 使用的端口
port 26380
# 设置sentinel启动为后台守护进程
daemonize yes
# pidfile的路径(daemonize yes时,redis默认会把pid写入下面的文件)
pidfile /usr/local/redis-5.0.9/logs/redis-sentinel_26380.pid
# 日志文件路径
logfile /usr/local/redis-5.0.9/logs/redis-sentinel_26380.log
# 持久化数据存放的目录
dir /usr/local/redis-5.0.9/data/

# sentinel monitor <master-name> <ip> <redis-port> <quorum>
# 告诉sentinel去监听地址为ip:port的一个master,这里的master-name可以自定义,quorum是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效.需要注意的是master-ip 要写真实的ip地址而不要用回环地址(127.0.0.1)
sentinel monitor master001 127.0.0.1 6380 2

# sentinel auth-pass <master-name> <password>
# 当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass master001 000000

# sentinel down-after-milliseconds <master-name> <milliseconds> 
# 这个配置项指定需要多少时间无响应,一个master才会被这个sentinel主观地认为是不可用的.单位是毫秒,默认为30秒
sentinel down-after-milliseconds master001 10000
 
# sentinel parallel-syncs <master-name> <numslaves> 
# 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用.可以通过将这个值设为1(默认就是1)来保证每次只有一个slave处于不能处理命令请求的状态
sentinel parallel-syncs master001 1
 
# sentinel failover-timeout <master-name> <milliseconds>
# failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel 将会认为此次failover失败,默认为3分钟,单位为毫秒
sentinel failover-timeout master001 180000
 
#是否拒绝重新配置通知脚本,默认拒绝(yes).
sentinel deny-scripts-reconfig yes

4.2、Slave的sentinel.conf

slave1的sentinel.conf

# sentinel 使用的端口
port 26381
# 设置sentinel启动为后台守护进程
daemonize yes
# pidfile的路径(daemonize yes时,redis默认会把pid写入下面的文件)
pidfile /usr/local/redis-5.0.9/logs/redis-sentinel_26381.pid
# 日志文件路径
logfile /usr/local/redis-5.0.9/logs/redis-sentinel_26381.log
# 持久化数据存放的目录
dir /usr/local/redis-5.0.9/data/

# sentinel monitor <master-name> <ip> <redis-port> <quorum>
# 告诉sentinel去监听地址为ip:port的一个master,这里的master-name可以自定义,quorum是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效.需要注意的是master-ip 要写真实的ip地址而不要用回环地址(127.0.0.1)
sentinel monitor master001 127.0.0.1 6380 2

# sentinel auth-pass <master-name> <password>
# 当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass master001 000000

# sentinel down-after-milliseconds <master-name> <milliseconds> 
# 这个配置项指定需要多少时间无响应,一个master才会被这个sentinel主观地认为是不可用的.单位是毫秒,默认为30秒
sentinel down-after-milliseconds master001 10000
 
# sentinel parallel-syncs <master-name> <numslaves> 
# 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用.可以通过将这个值设为1(默认就是1)来保证每次只有一个slave处于不能处理命令请求的状态
sentinel parallel-syncs master001 1
 
# sentinel failover-timeout <master-name> <milliseconds>
# failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel 将会认为此次failover失败,默认为3分钟,单位为毫秒
sentinel failover-timeout master001 180000
 
#是否拒绝重新配置通知脚本,默认拒绝(yes).
sentinel deny-scripts-reconfig yes

slave2的sentinel.conf

# sentinel 使用的端口
port 26382
# 设置sentinel启动为后台守护进程
daemonize yes
# pidfile的路径(daemonize yes时,redis默认会把pid写入下面的文件)
pidfile /usr/local/redis-5.0.9/logs/redis-sentinel_26382.pid
# 日志文件路径
logfile /usr/local/redis-5.0.9/logs/redis-sentinel_26382.log
# 持久化数据存放的目录
dir /usr/local/redis-5.0.9/data/

# sentinel monitor <master-name> <ip> <redis-port> <quorum>
# 告诉sentinel去监听地址为ip:port的一个master,这里的master-name可以自定义,quorum是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效.需要注意的是master-ip 要写真实的ip地址而不要用回环地址(127.0.0.1)
sentinel monitor master 127.0.0.1 6380 2

# sentinel down-after-milliseconds <master-name> <milliseconds> 
# 这个配置项指定需要多少时间无响应,一个master才会被这个sentinel主观地认为是不可用的.单位是毫秒,默认为30秒
sentinel down-after-milliseconds master 10000

# sentinel parallel-syncs <master-name> <numslaves> 
# 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用.可以通过将这个值设为1(默认就是1)来保证每次只有一个slave处于不能处理命令请求的状态
sentinel parallel-syncs master 1
 
# sentinel failover-timeout <master-name> <milliseconds>
# failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel 将会认为此次failover失败,默认为3分钟,单位为毫秒
sentinel failover-timeout master 180000
 
#是否拒绝重新配置通知脚本,默认拒绝(yes).
sentinel deny-scripts-reconfig yes

4.3、启动sentinel

# 启动redis
/usr/local/redis-5.0.9/bin/redis-sentinel /usr/local/redis-5.0.9/etc/sentinel.conf
/usr/local/redis-5.0.9-slave1/bin/redis-sentinel /usr/local/redis-5.0.9-slave1/etc/sentinel.conf
/usr/local/redis-5.0.9-slave2/bin/redis-sentinel /usr/local/redis-5.0.9-slave2/etc/sentinel.conf

4.4、验证

4.4.1、查看进程

# 查看是否6个redis进程
ps -ef|grep redis|grep -v grep

4.4.2、登录查看

登录查看

# redis-cli登录redis服务查看
/usr/local/redis-5.0.9/bin/redis-cli -p 26380 -a 000000
# 查看哨兵
info sentinel

4.5、测试

4.5.1、关闭Master(127.0.0.1:5671),查看Master是否变更

# 登录Master节点
/usr/local/redis-5.0.9/bin/redis-cli -p 6380 -a 000000
# 关闭
127.0.0.1:6380> shutdown

4.5.2、登录Slave的redis查看主从状态

# 登录slave1节点
/usr/local/redis-5.0.9-slave1/bin/redis-cli -p 6381 -a 000000
# 查看主从状态
info replication

127.0.0.1:6381> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6382,state=online,offset=162416,lag=0
master_replid:5dfa9dce3e68788817ba87645838956a502ff62f
master_replid2:c43446f5fb7a54e871a93a460cfbfc4cae58ff35
master_repl_offset:162550
second_repl_offset:11643
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:162550

# 登录slave1节点
/usr/local/redis-5.0.9-slave2/bin/redis-cli -p 6382 -a 000000
# 查看主从状态
info replication

127.0.0.1:6382> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6381
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:197896
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:5dfa9dce3e68788817ba87645838956a502ff62f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:197896
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:12202
repl_backlog_histlen:185695

4.5.3、查看读写是否同步

# set值
127.0.0.1:6381> set key1 2
OK
# 查看值
127.0.0.1:6382> get key1
"2"
posted on 2023-03-29 18:34  cxbks  阅读(93)  评论(0)    收藏  举报