天天看點

Redis搭建主從複制環境一主二從三哨兵

1、redis版本為6.2.1,redis安裝步驟此處省略,可自行百度。這次搭建使用的是同一台虛拟機,啟用多個redis執行個體。多虛拟機環境配置方法類似,修改端口和防火牆即可。

2、本機redis安裝路徑為/home/hl/redis,将目錄下redis.conf檔案複制三份到src目錄,分别命名為redis-6379.conf,redis-6380.conf,redis-6381.conf。需要修改的内容如下,三個檔案基本相同,主要是端口的差別。

# redis執行個體端口
port 6379

# 守護程序路徑
pidfile "/home/hl/redis/run/redis_6379.pid"

# 日志路徑
logfile "/home/hl/redis/logs/redis_6379.log"

# 資料庫備份檔案名稱
dbfilename "dump-6379.rdb"

# 根目錄
dir "/home/hl/redis"

# 連接配接master的密碼
masterauth "123123"

# 連接配接master的使用者名
masteruser "default"

# 本節點登入密碼
requirepass 123123

# 開啟守護程序方式
daemonize yes
           

3、複制redis目錄下sentinel.conf到src目錄下,分别命名為sentinel_26379.conf,sentinel_26380.conf,sentinel_26381.conf,需要修改的内容如下,三個檔案基本一緻,隻是端口不同。

# 服務端口
port 26379

# 守護程序模式
daemonize yes

# 程序名稱
pidfile "/home/hl/redis/run/redis-sentinel_26379.pid"

# 日志檔案路徑
logfile "/home/hl/redis/logs/sentinel_26379.log"

# 根目錄
dir "/home/hl/redis/tmp"

# 監控的redis master節點名稱、位址、端口、節點失效後選舉切換master節點所需最少票數
sentinel monitor mymaster 127.0.0.1 6380 2


           

4、先啟動redis三個節點,再啟動哨兵,因為哨兵要查詢redis節點進行監控。

[[email protected] src]$ ./redis-server ./redis-6379.conf
[[email protected] src]$ ./redis-server ./redis-6380.conf
[h[email protected] src]$ ./redis-server ./redis-6381.conf

[[email protected] src]$ ./redis-sentinel ./sentinel_26379.conf
[[email protected] src]$ ./redis-sentinel ./sentinel_26380.conf
[[email protected] src]$ ./redis-sentinel ./sentinel_26381.conf

           

5、登入redis用戶端,檢視節點狀态,slave節點。

[[email protected] src]$ ./redis-cli -p 6379
127.0.0.1:6379> auth 123123
OK
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:7844
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:46a4c92ad6e64aff68f820f17b69b9bdeb394d2c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:7844
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:7844
127.0.0.1:6379> 
           

6、master節點。

[[email protected] src]$ ./redis-cli -p 6380
127.0.0.1:6380> auth 123123
OK
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6379,state=online,offset=26457,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=26723,lag=0
master_failover_state:no-failover
master_replid:46a4c92ad6e64aff68f820f17b69b9bdeb394d2c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:26723
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:26723
127.0.0.1:6380> 
           

7、檢視哨兵狀态。

[[email protected] src]$ ./redis-cli -p 26379
127.0.0.1:26379> info sentinel
# 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=127.0.0.1:6380,slaves=2,sentinels=3
127.0.0.1:26379> 
           

8、模拟master節點故障,即在master節點用戶端執行shutdown指令,驗證能否自動切換master,哨兵日志如下。

10404:X 26 Apr 2021 16:13:36.581 # -sdown master mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:13:41.708 * +convert-to-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:13:43.883 # -sdown slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:13:58.396 # -sdown sentinel 0b1b1713e6db1b755f12461385cfa5eff8d7b038 127.0.0.1 26380 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:14:09.722 # -sdown sentinel 1a5ecfc41d7c5ec35ac73b450182bb0f8d504770 127.0.0.1 26381 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:03.007 # +sdown master mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:03.074 # +odown master mymaster 127.0.0.1 6380 #quorum 2/2
10404:X 26 Apr 2021 16:23:03.074 # +new-epoch 9
10404:X 26 Apr 2021 16:23:03.074 # +try-failover master mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:03.077 # +vote-for-leader 7bd3f49f5bd67879b3f6be4192b33adf7c22c561 9
10404:X 26 Apr 2021 16:23:03.080 # 0b1b1713e6db1b755f12461385cfa5eff8d7b038 voted for 7bd3f49f5bd67879b3f6be4192b33adf7c22c561 9
10404:X 26 Apr 2021 16:23:03.080 # 1a5ecfc41d7c5ec35ac73b450182bb0f8d504770 voted for 7bd3f49f5bd67879b3f6be4192b33adf7c22c561 9
10404:X 26 Apr 2021 16:23:03.161 # +elected-leader master mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:03.161 # +failover-state-select-slave master mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:03.262 # +selected-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:03.262 * +failover-state-send-slaveof-noone slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:03.329 * +failover-state-wait-promotion slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:04.089 # +promoted-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:04.089 # +failover-state-reconf-slaves master mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:04.176 * +slave-reconf-sent slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:04.776 * +slave-reconf-inprog slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:04.776 * +slave-reconf-done slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:04.865 # +failover-end master mymaster 127.0.0.1 6380
10404:X 26 Apr 2021 16:23:04.865 # +switch-master mymaster 127.0.0.1 6380 127.0.0.1 6379
10404:X 26 Apr 2021 16:23:04.866 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379
10404:X 26 Apr 2021 16:23:04.866 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
10404:X 26 Apr 2021 16:23:34.897 # +sdown slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
           

9、檢視6379節點狀态,已經切換為master。

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6381,state=online,offset=109661,lag=1
master_failover_state:no-failover
master_replid:c37b0be050befe836cc95327258a8376e59a958d
master_replid2:46a4c92ad6e64aff68f820f17b69b9bdeb394d2c
master_repl_offset:110060
second_repl_offset:101736
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:110060
127.0.0.1:6379> 
           

繼續閱讀