今天介绍下redis哨兵模式的集群模式,并且密码认证登录。sentinel哨兵模式,顾名思义,就类似于一个哨兵。每个sentinel进程会master,slave定期发送消息,来确定其是否活着。如果发现master掉线,就会从slave中选取一台提升为master,自动修改相关配置。下面是配置过程。
1.安装redis、redis-sentinel。使用yum安装即可,首先安装epel源,epel-release之后安装redis即可。安装redis、redis-sentinel都直接安装redis即可。启动服务并设置成开机自启。
yum -y install epel-release
yum -y install redis
2.两个redis修改redis的配置文件,/etc/redis.conf。设置服务的ip、端口、数据库文件的位置。该文件其他参数配置参照末尾示例。
bind 172.16.51.141
port 6379
dbfilename "dump.rdb"
dir "/opt/webapps/redis"
之后修改/etc/systemd/system/redis.service.d/limit.conf 配置文件,设置最大文件限制。
[Service]
LimitNOFILE=65535
3.配置redis-sentienl文件。设置redis主是谁,日志位置。这里要说一下的是,这个文件你一开始设置完成后,是会随着主从的切换来变化的。
dir "/opt/webapps/redis"
logfile "/var/log/redis/sentinel.log"
sentinel myid e85b094ccd8da12305652c84aa9cdbdd0a0caec8
sentinel monitor mymaster 172.16.51.141 6379 1
sentinel down-after-milliseconds mymaster 15000
sentinel failover-timeout mymaster 10000
上面配置完成后,就可以启动redis、redis-sentienl服务了。
4.在一台主机上使用slaveof指定主从,之后使用info命令查看主从信息。查看key的数量,两个redis的key的数量应该是一致的。
slaveof ip port
info
5.到这里,主从就配置好了,因为没有密码认证会不安全,这里我们加上密码认证。先介绍一下密码认证的两个配置。主要是两个参数:
requirepass:外面服务、客户端来连接redis的密码。
masterauth:redis从去连接redis主使用的密码。这个意思是说,如果你在主上设置了requirepass参数,你就需要再从上设置masterauth参数,并和主密码指定成一样的。这样从才能继续去同步主的数据。
并且,如果你是哨兵模式,还要在/etc/redis-sentinel.conf添加下面一行配置,这里lenovo20!&是那个配置的密码,你可以改成你的密码。否则,哨兵会认为redis主机失联。
sentinel auth-pass mymaster lenovo20!&
下面介绍下,如何添加这个密码。对于redis来说,有两种方式:
一种是在/etc/redis.conf添加下面2个字段,之后重启redis。两个redis主从密码要设置的一样。
requirepass "lenovo20!&"
masterauth "lenovo20!&"
另外一种是登录到redis数据库里面,设置密码,这个不用重启服务会立即生效,不过重启服务之后会失效。如果想永久生效,需要继续执行一条命令 config rewrite 。
config set masterauth "lenovo20!&"
config set requirepass "lenovo20!&"
config rewrite
你执行上面命令,会发现马上生效了。这时你输入其他命令会报错,这时候你要输入密码来证明你的身份。
对于redis-sentinel,修改cat /etc/redis-sentinel.conf文件,增加下面字段。之后重启服务。
sentinel auth-pass mymaster lenovo20!&
6.上面就是添加密码认证的过程了,下面给出一些常用的reids命令,以及配置。
登录 redis 数据库
redis-cli -h host -p port
查看redis 数据库状态
Info
指定主库
slaveof host post
解除主从关系(慎用)
slaveof no one
设置向redis主同步的密码
config set masterauth "lenovo20!&"
设置远程连接的密码
config set requirepass "lenovo20!&"
将配置写到配置文件里
config rewrite
查询key
get key
新建key
set key value
删除key
del key
7.配置文件:
/etc/redis.conf
bind 172.16.51.140
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised systemd
pidfile "/var/run/redis_6379.pid"
loglevel notice
logfile "/var/log/redis/redis.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump.rdb"
dir "/opt/webapps/redis"
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
# Generated by CONFIG REWRITE
masterauth "lenovo20!&"
requirepass "lenovo20!&"
slaveof 172.16.51.141 6379
/etc/redis-sentinel.conf
dir "/opt/webapps/redis"
logfile "/var/log/redis/sentinel.log"
sentinel myid e85b094ccd8da12305652c84aa9cdbdd0a0caec8
sentinel monitor mymaster 172.16.51.141 6379 1
sentinel down-after-milliseconds mymaster 15000
sentinel failover-timeout mymaster 10000
sentinel auth-pass mymaster lenovo20!&
# Generated by CONFIG REWRITE
port 26379
supervised systemd
sentinel config-epoch mymaster 3
sentinel leader-epoch mymaster 3
sentinel known-slave mymaster 172.16.51.140 6379
sentinel current-epoch 3