环境准备 恢复默认配置
[root@redis2 ~]# vim /etc/redis/6379.conf # 818行 826行 832行 注释掉
# cluster-enabled yes # cluster-config-file nodes-6379.conf # cluster-node-timeout 5000
[root@redis2 ~]# service redis_6379 stop Stopping ... Redis stopped [root@redis2 ~]# ls /var/lib/redis/6379/ dump.rdb [root@redis2 ~]# rm -rf /var/lib/redis/6379/* [root@redis2 ~]# service redis_6379 start Starting Redis server...
Redis操作同上
默认Redis都是主服务器(1.12)
[root@redis2 ~]# redis-cli 127.0.0.1:6379> info replication
Replication
role:master connected_slaves:0
master_replid:7905c779df139303c4e01aca1b71afc5024cb4a4 master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
配置主从 Redis3 为Redis2 的从服务器(1.13)
[root@redis3 ~]# redis-cli 127.0.0.1:6379> slaveof 192.168.1.12 6379 OK 127.0.0.1:6379> info replication
Replication
role:slave master_host:192.168.1.12 master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:0
master_link_down_since_seconds:1627033715
slave_priority:100 slave_read_only:1
connected_slaves:0
master_replid:3b5398844225df1ddd730b4ea5bb4ac7e2d16708 master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
配置永久
[root@redis3 ~]# vim /etc/redis/6379.conf
#配置文件中283行 写主服务器IP
slaveof 192.168.1.11 6379
slaveof no one #取消配置
添加密码
主服务器
[root@redis2 ~]# vim +501 /etc/redis/6379.conf
requirepass tedu.cn
[root@redis2 ~]# vim +43 /etc/init.d/redis_6379
$CLIEXEC -p $REDISPORT -a tedu.cn shutdown
[root@redis2 ~]# service redis_6379 restart #重启服务 Stopping ... Redis stopped Starting Redis server...
从服务器
[root@redis3 ~]# vim +283 /etc/redis/6379.conf
masterauth tedu.cn
[root@redis3 ~]# service redis_6379 restart #重启服务 Stopping ... Redis stopped Starting Redis server... [root@redis3 ~]# redis-cli 127.0.0.1:6379> info replication
Replication
role:slave #角色为从 master_host:192.168.1.12 #主服务器IP master_port:6379 master_link_status:down master_last_io_seconds_ago:-1 master_sync_in_progress:0 slave_repl_offset:1 master_link_down_since_seconds:1627035959 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:dc63daf3a06afa4aa86f1b517bf7b2aad6a65223 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
/var/log/redis_6379.log #日志文件
哨兵服务
在redis服务器(如redis1)上,拷贝哨兵程序到哨兵服务器 [root@redis1 ~]# scp -r /usr/local/redis 192.168.1.19:/usr/local # 在sentinel1上,将redis命令目录添加至PATH环境变量 [root@sentinel1 ~]# echo 'export PATH=$PATH:/usr/local/redis/bin' >> /etc/bashrc [root@sentinel1 ~]# source /etc/bashrc # 创建哨兵配置文件 [root@sentinel1 ~]# vim /etc/sentinel.conf sentinel monitor redis1 192.168.1.11 6379 1 # 监视主服务器 bind 0.0.0.0 # 哨兵服务运行地址 sentinel auth-pass redis1 tedu.cn # 连接主服务器的密码
- 启动哨兵服务
[root@sentinel1 ~]# redis-sentinel /etc/sentinel.conf 30557:X 12 May 10:12:44.026 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 30557:X 12 May 10:12:44.026 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=30557, just started 30557:X 12 May 10:12:44.026 # Configuration loaded 30557:X 12 May 10:12:44.028 * Increased maximum number of open files to 10032 (it was originally set to 1024). _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 4.0.8 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in sentinel mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 26379 | `-._ `._ / _.-' | PID: 30557 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 30557:X 12 May 10:12:44.033 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 30557:X 12 May 10:12:44.049 # Sentinel ID is 40460aaa4df5543a000bf8f464c6698a712d2697 30557:X 12 May 10:12:44.049 # +monitor master redis1 192.168.1.11 6379 quorum 1 30557:X 12 May 10:12:44.051 * +slave slave 192.168.1.12:6379 192.168.1.12 6379 @ redis1 192.168.1.11 6379
测试配置
# 停止主服务器redis1的redis服务 [root@redis1 ~]# service redis_6379 stop Stopping ... Redis stopped # 在redis2上查看redis服务状态 [root@redis2 ~]# redis-cli 127.0.0.1:6379> info replication # Replication role:master # 已经变为主服务器 connected_slaves:0 master_replid:da33c07e16dc1b90d14a20004e9f5d9b3a7b9081 master_replid2:94e2bea7fc81fa71b1193df29b0984190c01bacc master_repl_offset:10054 second_repl_offset:8936 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:10054
启动redis1,查看redis1信息
[root@redis1 ~]# service redis_6379 start Starting Redis server... [root@redis1 ~]# redis-cli -a tedu.cn 127.0.0.1:6379> info replication # Replication role:slave # 角色为从服务器 master_host:192.168.1.12 # 主服务器地址 master_port:6379 # 主服务器端口 master_link_status:up # 到主服务器的连接状态 master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:62014 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:da33c07e16dc1b90d14a20004e9f5d9b3a7b9081 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:62014 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:61430 repl_backlog_histlen:585