一主一從結(jié)構(gòu)

一主一從結(jié)構(gòu).png
- 默認(rèn)redis都是主服務(wù)器,所以無(wú)需配置
[root@redis1 ~]# redis-cli
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:0
master_replid:a839f0060f5e8d9894a1fafeeea973c3c52e5e71
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
- 配置redis2(192.168.1.12)為redis1的從服務(wù)器
通過(guò)命令進(jìn)行配置(臨時(shí)生效)
[root@redis2 ~]# redis-cli
127.0.0.1:6379> SLAVEOF 192.168.1.11 6379
OK
127.0.0.1:6379> INFO replication
# Replication
role:slave
master_host:192.168.1.11
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:7a4326738b63379fc5def4177a1ba6fff33d0a98
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
- 永久生效
[root@redis2 ~]# vim /etc/redis/6379.conf
slaveof 192.168.1.11 6379
配置帶驗(yàn)證的主從復(fù)制
基于以上示例【一主一從結(jié)構(gòu)】,配置認(rèn)證

一主一從結(jié)構(gòu).png
- 配置主服務(wù)器redis1的連接密碼為
guodong.com
# 設(shè)置密碼
[root@redis1 ~]# vim +501 /etc/redis/6379.conf
requirepass guodong.com
# 修改服務(wù)腳本
[root@redis1 ~]# vim +43 /etc/init.d/redis_6379
$CLIEXEC -p $REDISPORT -a guodong.com shutdown
# 重啟服務(wù)
[root@redis1 ~]# service redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
- 配置從服務(wù)器
# 修改配置文件,設(shè)置主服務(wù)器連接密碼
[root@redis2 ~]# vim +289 /etc/redis/6379.conf
masterauth guodong.com
# 重啟服務(wù)
[root@redis2 ~]# service redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
- 在從服務(wù)器本機(jī)連接服務(wù),查看復(fù)制信息
[root@redis2 ~]# redis-cli
127.0.0.1:6379> info replication
# Replication
role:slave # 角色為從服務(wù)器
master_host:192.168.1.11 # 主服務(wù)器地址
master_port:6379 # 主服務(wù)器端口
master_link_status:up # 到主服務(wù)器的連接狀態(tài)
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:70
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:94e2bea7fc81fa71b1193df29b0984190c01bacc
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:70
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:70
哨兵服務(wù)
監(jiān)視master服務(wù)器
-
發(fā)現(xiàn)master宕機(jī)后,將從服務(wù)器升級(jí)為主服務(wù)器
配置哨兵服務(wù) 配置哨兵服務(wù)
# 在redis服務(wù)器(如redis1)上,拷貝哨兵程序到哨兵服務(wù)器
[root@redis1 ~]# scp -r /usr/local/redis 192.168.1.19:/usr/local
# 在sentinel1上,將redis命令目錄添加至PATH環(huán)境變量
[root@sentinel1 ~]# echo 'export PATH=$PATH:/usr/local/redis/bin' >> /etc/bashrc
[root@sentinel1 ~]# source /etc/bashrc
# 創(chuàng)建哨兵配置文件
[root@sentinel1 ~]# vim /etc/sentinel.conf
sentinel monitor redis1 192.168.1.11 6379 1 # 監(jiān)視主服務(wù)器
bind 0.0.0.0 # 哨兵服務(wù)運(yùn)行地址
sentinel auth-pass redis1 guodong.com # 連接主服務(wù)器的密碼
- 啟動(dòng)哨兵服務(wù)
[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
- 測(cè)試配置
# 停止主服務(wù)器redis1的redis服務(wù)
[root@redis1 ~]# service redis_6379 stop
Stopping ...
Redis stopped
# 在redis2上查看redis服務(wù)狀態(tài)
[root@redis2 ~]# redis-cli
127.0.0.1:6379> info replication
# Replication
role:master # 已經(jīng)變?yōu)橹鞣?wù)器
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
- 啟動(dòng)redis1,查看redis1信息
[root@redis1 ~]# service redis_6379 start
Starting Redis server...
[root@redis1 ~]# redis-cli -a guodong.com
127.0.0.1:6379> info replication
# Replication
role:slave # 角色為從服務(wù)器
master_host:192.168.1.12 # 主服務(wù)器地址
master_port:6379 # 主服務(wù)器端口
master_link_status:up # 到主服務(wù)器的連接狀態(tài)
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
