您的位置:首页 > 数据库 > Redis

redis 4.0.9 master slave + sentinel 实战测试

2018-06-04 18:56 381 查看
1:install
$ wget http://download.redis.io/releases/redis-4.0.9.tar.gz $ tar xzf redis-4.0.9.tar.gz
$ cd redis-4.0.9
编译构造
$ make

#启动服务器命令
$ src/redis-server

客户端连接
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

2设置redis服务器在后台运行并开启认证
$mv redis.conf /etc/redis
#找到配置文件中daemonize 并修改为yse,在后台运行
daemonize yes
#开启认证
requirepass xxxxx
#设置日志级别和日志路径
loglevel debug
logfile /usr/local/redis-4.0.9/logs/redis-m.log

客户端连接认证开启
protected-mode yes

#启动服务器
$./redis-server /etc/redis/redis.conf

#启动客户端
$./redis-cli
$auth xxxxx

$set foo bar
$get foo

3:redis master slave 单机模式下
1>:复制redis-m.conf 文件两份
2>:修改端口port 6380
修改日志文件logfile /usr/local/redis-4.0.9/logs/redis-6380.log
修改redis运行进程文件名字
pidfile /var/run/redis_6380.pid
#在slave 指定master ip port
slaveof 10.25.40.235 6379
#认证master时需要的密码。必须和master配置的requirepass 保持一致
masterauth redispass

#重新启动服务器
$./redis-server /etc/redis/redis-m.conf
$./redis-server /etc/redis/redis-6380.conf
$./redis-server /etc/redis/redis-6381.conf

#查看日志是否配置master slave 成功
Master replied to PING, replication can continue...
Trying a partial resynchronization (request ad32f6080acb072dd6c4c5afc2942e4f6538948d:4052).
Successful partial resynchronization with master.
MASTER <-> SLAVE sync: Master accepted a Partial Resynchronization

#test  master set slave get
master 存储
$./redis-cli -h 10.25.40.235 -p 6379
$auth redispass
$set test hello

$./redis-cli -h 10.25.40.235 -p 6380
$auth redispass
$get test

$./redis-cli -h 10.25.40.235 -p 6381
$auth redispass
$get test

#sentinel模式集群
#设置ip地址
bind 10.25.40.235
#以守护进程方式运行
daemonize yes
#连接认证
protected-mode yes
#端口号
port 26379
#文件地址
logfile /usr/local/redis-4.0.9/logs/redis-sentinel-26379.log
#日志输出目录
dir /usr/local/redis-4.0.9/logs/
#2的含义:当开启的sentinel server认为当前master主观下线的(+sdown)数量达到2时,则sentinel server认为当前master客观下线(+odown)系统开始自动迁移。2的计算(建议):sentinel

#server数量的大多数,至少为count(sentinel server)/2 向上取整。2>3/2(主观下线与客观下线)
sentinel monitor mymaster 10.25.40.235 6379 2
#别名和认证密码。这就提醒了用户,在master-slave系统中,各服务的认证密码应该保持一致。
sentinel auth-pass mymaster redispass
#:指定了Sentinel认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观

下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行
sentinel down-after-milliseconds mymaster 3000
#如果在该时间(ms)内未能完成failover操作,则认为该failover失败
sentinel failover-timeout mymaster 18000

#启动监听服务
$./redis-sentinel /etc/redis/sentinel-26379.conf
$./redis-sentinel /etc/redis/sentinel-26380.conf
$./redis-sentinel /etc/redis/sentinel-26381.conf

查看服务
ps -ef|grep redis
[root@iZ11ez4q5vcZ src]# ps -ef|grep redis
root     31949     1  0 14:14 ?        00:00:05 src/redis-server 10.25.40.235:6379
root     32080     1  0 15:14 ?        00:00:04 ./redis-server 10.25.40.235:6380
root     32085     1  0 15:14 ?        00:00:04 ./redis-server 10.25.40.235:6381
root     32158     1  0 17:46 ?        00:00:00 ./redis-sentinel 10.25.40.235:26379 [sentinel]
root     32163     1  0 17:46 ?        00:00:00 ./redis-sentinel 10.25.40.235:26380 [sentinel]
root     32168     1  0 17:46 ?        00:00:00 ./redis-sentinel 10.25.40.235:26381 [sentinel]
root     32177 25368  0 17:49 pts/0    00:00:00 tail -f redis-sentinel-26379.log
root     32179 31993  0 17:49 pts/1    00:00:00 grep redis

查看日志
[root@iZ11ez4q5vcZ logs]# cat redis-sentinel-26379.log
32157:X 04 Jun 17:46:28.771 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
32157:X 04 Jun 17:46:28.771 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=32157, just started
32157:X 04 Jun 17:46:28.771 # Configuration loaded
32158:X 04 Jun 17:46:28.773 * Running mode=sentinel, port=26379.
32158:X 04 Jun 17:46:28.773 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
32158:X 04 Jun 17:46:28.784 # Sentinel ID is 239d80e2ff0cdb9afc5ff563c0bcc38bd182281e
32158:X 04 Jun 17:46:28.785 # +monitor master mymaster 10.25.40.235 6379 quorum 2
32158:X 04 Jun 17:46:28.785 * +slave slave 10.25.40.235:6380 10.25.40.235 6380 @ mymaster 10.25.40.235 6379
32158:X 04 Jun 17:46:28.793 * +slave slave 10.25.40.235:6381 10.25.40.235 6381 @ mymaster 10.25.40.235 6379
32158:X 04 Jun 17:46:38.392 * +sentinel sentinel e98caa8fdab9b5841adf540ca30a093f3fcd28f1 10.25.40.235 26380 @ mymaster 10.25.40.235 6379
32158:X 04 Jun 17:46:41.339 * +sentinel sentinel 39b20a921cc868c4f4f4169a75568ce97970f3fc 10.25.40.235 26381 @ mymaster 10.25.40.235 6379

结束master 进程 进行测试
kill - 9 31949
在查看日志变化
[root@iZ11ez4q5vcZ logs]# tail -f redis-sentinel-26379.log
32158:X 04 Jun 17:46:28.793 * +slave slave 10.25.40.235:6381 10.25.40.235 6381 @ mymaster 10.25.40.235 6379
32158:X 04 Jun 17:46:38.392 * +sentinel sentinel e98caa8fdab9b5841adf540ca30a093f3fcd28f1 10.25.40.235 26380 @ mymaster 10.25.40.235 6379
32158:X 04 Jun 17:46:41.339 * +sentinel sentinel 39b20a921cc868c4f4f4169a75568ce97970f3fc 10.25.40.235 26381 @ mymaster 10.25.40.235 6379
32190:X 04 Jun 17:54:41.536 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
32190:X 04 Jun 17:54:41.536 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=32190, just started
32190:X 04 Jun 17:54:41.537 # Configuration loaded
32191:X 04 Jun 17:54:41.539 * Running mode=sentinel, port=26379.
32191:X 04 Jun 17:54:41.539 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
32191:X 04 Jun 17:54:41.539 # Sentinel ID is 239d80e2ff0cdb9afc5ff563c0bcc38bd182281e
32191:X 04 Jun 17:54:41.539 # +monitor master mymaster 10.25.40.235 6379 quorum 2
32191:X 04 Jun 17:55:32.644 # +sdown master mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:32.744 # +odown master mymaster 10.25.40.235 6379 #quorum 2/2
32191:X 04 Jun 17:55:32.745 # +new-epoch 1
32191:X 04 Jun 17:55:32.745 # +try-failover master mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:32.753 # +vote-for-leader 239d80e2ff0cdb9afc5ff563c0bcc38bd182281e 1
32191:X 04 Jun 17:55:32.760 # 39b20a921cc868c4f4f4169a75568ce97970f3fc voted for 239d80e2ff0cdb9afc5ff563c0bcc38bd182281e 1
32191:X 04 Jun 17:55:32.760 # e98caa8fdab9b5841adf540ca30a093f3fcd28f1 voted for 239d80e2ff0cdb9afc5ff563c0bcc38bd182281e 1
32191:X 04 Jun 17:55:32.824 # +elected-leader master mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:32.824 # +failover-state-select-slave master mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:32.914 # +selected-slave slave 10.25.40.235:6380 10.25.40.235 6380 @ mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:32.914 * +failover-state-send-slaveof-noone slave 10.25.40.235:6380 10.25.40.235 6380 @ mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:32.997 * +failover-state-wait-promotion slave 10.25.40.235:6380 10.25.40.235 6380 @ mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:33.797 # +promoted-slave slave 10.25.40.235:6380 10.25.40.235 6380 @ mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:33.797 # +failover-state-reconf-slaves master mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:33.849 * +slave-reconf-sent slave 10.25.40.235:6381 10.25.40.235 6381 @ mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:34.811 * +slave-reconf-inprog slave 10.25.40.235:6381 10.25.40.235 6381 @ mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:34.811 * +slave-reconf-done slave 10.25.40.235:6381 10.25.40.235 6381 @ mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:34.900 # -odown master mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:34.900 # +failover-end master mymaster 10.25.40.235 6379
32191:X 04 Jun 17:55:34.900 # +switch-master mymaster 10.25.40.235 6379 10.25.40.235 6380
32191:X 04 Jun 17:55:34.901 * +slave slave 10.25.40.235:6381 10.25.40.235 6381 @ mymaster 10.25.40.235 6380
32191:X 04 Jun 17:55:34.901 * +slave slave 10.25.40.235:6379 10.25.40.235 6379 @ mymaster 10.25.40.235 6380
32191:X 04 Jun 17:55:37.959 # +sdown slave 10.25.40.235:6379 10.25.40.235 6379 @ mymaster 10.25.40.235 6380
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: