redis实战第三篇 redis sentinel安装和部署

时间:2022-07-23
本文章向大家介绍redis实战第三篇 redis sentinel安装和部署,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

三个sentinel节点,一个redis主节点,两个redis从节点 redis版本:redis-5.0.3 机器IP 192.168.0.31、192.168.0.32、192.168.0.33

1.下载并安装redis 在三台机器上执行如下命令,安装redis

安装gcc
yum install gcc

$ wget http://download.redis.io/releases/redis-5.0.3.tar.gz
$ tar xzf redis-5.0.3.tar.gz
$ ln -s redis-5.0.3/ redis
$ cd redis
$ make MALLOC=libc

将src目录下的文件加到/usr/local/bin目录
[root@kafka31 redis]# cd src && make install
执行完后可以看到/usr/local/bin有以下redis的可执行文件
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server

创建日志文件目录
[root@kafka33 redis]# mkdir log
创建conf目录,配置文件都放在conf目录下
[root@kafka31 redis]# mkdir conf
[root@kafka31 redis]# cp redis.conf conf/
[root@kafka31 redis]# cp sentinel.conf conf/

2.部署redis数据节点 2.1.主节点 主节点配置 192.168.0.31作为主节点 复制conf下的配置文件

[root@kafka31 conf]# cp redis.conf data_master.conf

修改配置文件

删除bind 127.0.0.1
修改
port 6380
protected-mode no
daemonize yes
logfile "redis_6380.log"
dbfilename dump_6380.rdb
dir "/opt/redis/log/"
pidfile /var/run/redis_6380.pid
requirepass 1234@abcd

启动主节点

[root@kafka31 redis]# redis-server conf/data_master.conf 

连接测试

[root@kafka31 redis]# redis-cli -h 127.0.0.1 -p 6380 -a 1234@abcd ping
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
PONG

2.2.从节点 192.168.0.32,192.168.0.33作为从节点 下面以32机器为例 复制conf下的配置文件

[root@kafka32 conf]# cp redis.conf data_slave.conf

从节点的配置和主节点差不多,只是多了一个slaveof和masterauth的配置

删除bind 127.0.0.1
修改
port 6380
protected-mode no
daemonize yes
logfile "redis_6380.log"
dbfilename dump_6380.rdb
dir "/opt/redis/log/"
pidfile /var/run/redis_6380.pid
requirepass 1234@abcd
masterauth 1234@abcd

增加
slaveof 10.1.12.31 6380

配置文件说明:

redis默认是
bind 127.0.0.1
protected-mode yes
表示只允许本地访问

修改成如下
删除bind 127.0.0.1
protected-mode no
requirepass 1234@abcd
表示该节点访问需要密码1234@abcd

daemonize yes 启动后redis进程在后台运行

masterauth 1234@abcd 从节点连接主节点需要密码

启动从节点

[root@kafka32 redis]# redis-server conf/data_slave.conf

从节点测试

[root@kafka32 redis]# redis-cli -h 127.0.0.1 -p 6380 -a 1234@abcd ping
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
PONG

33机器的操作完全一致

3.确认主从关系 主节点执行

[root@kafka31 log]# redis-cli -h 127.0.0.1 -p 6380 -a 1234@abcd info replication
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.0.32,port=6380,state=online,offset=126,lag=1
slave1:ip=192.168.0.33,port=6380,state=online,offset=126,lag=1
master_replid:19521c9694401ebb937118ad2da24f3a2038edd1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:126
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:126

4.部署sentinel节点 sentinel的配置方式都是一样的 sentinel配置 修改conf/sentinel.conf文件

port 26379
daemonize yes
pidfile /var/run/redis-sentinel.pid
logfile "sentinel.log"
dir "/opt/redis-5.0.3/data/"
sentinel monitor mymaster 192.168.0.31 6380 2
sentinel auth-pass mymaster 1234@abcd 
requirepass 123456  #注意 这个配置表明sentinel连接需要密码123456,这个密码必须要求每个sentinel的都一样,因为sentinel内部沟通的时候也是通过这个配置来确认密码的正确性
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

三台机器的sentinel的配置都一样 启动sentinel节点 方法一: 使用redis-sentinel 配置文件

[root@kafka32 redis]# redis-sentinel conf/sentinel.conf

方法二: redis-server 配置文件 --sentinel

[root@kafka32 redis]# redis-server conf/sentinel.conf --sentinel

5.确认sentinel状态

[root@kafka31 redis]# redis-cli -h 127.0.0.1 -p 26379 -a 123456 info Sentinel
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.0.31:6380,slaves=2,sentinels=3

以上信息表明sentinel当前监控的主节点有两个从节点,存在三个sentinel sentinel节点配置说明:

sentinel monitor <master-name> <ip> <port> <quorum>
master-name表示sentinel要监控的节点名称,这个名称可以自己定义ip和port对应的是要监控的节点ip地址和端口号。quorum代表要判断主节点不可达需要的票数,同时quorum还与sentinel节点的选举有关,至少要有max(quorum,num(sentinels)/2+1)个Sentinel节点参与选举才能选出领导者sentinel。

sentinel down-after-milliseconds <master-name> <times>
每个sentinel节点都会通过ping来判断redis数据节点和其余的sentinel节点是否可达,如果超过了down-after-milliseconds设置的时间,则判定节点不可达。该配置虽然用master-name作为参数,但是实际上对sentinel节点、从节点、主节点都有效。

sentinel parallel-syncs <master-name> <num>
当redis主节点出现故障的时候,sentinel领导者会选出一个从节点作为主节点,其余的从节点会从新的主节点复制数据,这个参数就是用来设置同时又多少个从节点从新的主节点同步数据。很明显如果配置过大,则出现故障时新的主节点IO必然会比较大。

sentinel failover-timeout <master-name> <times>
故障转移超时时间

sentinel auth-pass <master-name> <passwor>
如果sentinel监控的主节点配置了密码,可以通过此配置添加主节点的密码

requirepass <passwor>
sentinel也可以配置自己的密码,这样客户端在连接的时候需要通过密码验证。但是要注意,如果sentinel配置了密码,那么所有的sentinel都要配置相同的密码,因为这个配置也是sentinel之间沟通的验证密码。

sentinel节点会对所有节点进行监控,但是在sentinel节点的配置中没有看到有关从节点和其余sentinel节点的配置,那是因为sentinel节点会从主节点获取有关从节点以及其余sentinel节点的先关信息,并且当sentinel节点启动后,这些信息会写到sentinel节点的配置文件中,打开sentinel节点可以看到新增如下内容

protected-mode no
sentinel known-replica mymaster 192.168.0.33 6380
sentinel known-replica mymaster 192.168.0.32 6380
sentinel known-sentinel mymaster 192.168.0.33 26379 1756900c0e4276ce2892ec42a553cc8c870170c7
sentinel known-sentinel mymaster 192.168.0.32 26379 583861d25d20388879d745be157a78096755e6e9
sentinel current-epoch 0