1. 程式人生 > 其它 >Redis一主二從三哨兵配置(模擬3臺伺服器)

Redis一主二從三哨兵配置(模擬3臺伺服器)

redis一主二從+三哨兵配置


1.建立虛擬機器

使用VM建立3臺虛擬機器

  • ip:192.168.81.129
  • ip:192.168.81.130
  • ip:192.168.81.131

2安裝redis服務

> 注意: > > 如果您使用 Redis 5 或更高版本,這很容易實現,因為我們在 Redis Cluster 命令列實用程式的幫助下嵌入到 中redis-cli,可用於建立新叢集、檢查或重新分片現有叢集等。 > 對於 Redis 版本 3 或 4,有一個redis-trib.rb非常相似的舊工具。您可以src在Redis原始碼分發目錄中找到它。您需要安裝redisgem 才能執行redis-trib.

2.1 安裝環境

yum -y install gcc-c++

2.2 獲取壓縮包

wget http://download.redis.io/releases/redis-5.0.6.tar.gz

2.3 解壓 安裝(依次執行)

`tar -zxvf redis-5.0.6.tar.gz`
`cd redis-5.0.6`
`make`

2.4 啟動redis服務

`./src/redis-server redis.conf`

3.配置redis檔案

主庫配置

1.修改redis配置檔案:
/etc/redis.conf
2.修改繫結ip為伺服器內網ip地址,做繫結,三臺各自填寫各自的ip地址
bind 0.0.0.0


2.保護模式修改為否,允許遠端連線
protected-mode no
3.設定密碼
requirepass "123456"
4.設定主庫密碼與當前庫密碼同步,保證從庫能夠提升為主庫
masterauth "123456"
5.開啟AOF持久化支援
appendonly yes

從配置

跟主配置一樣,但是從配置的bind不變,其他一樣
新增 slaveof 192.168.81.129 6379

出現連結失敗的問題

啟動: systemctl start firewalld  
關閉: systemctl stop firewalld  
檢視狀態: systemctl status firewalld   
開機禁用  : systemctl disable firewalld  
開機啟用  : systemctl enable firewalld  

最後將住伺服器上的redis.conf中的bind127.0.0.1修改為0.0.0.0讓所有的ip能夠連線

連結成功

info replication   
Replication   
role:master  
connected_slaves:2
slave0:ip=192.168.81.130,port=6379,state=online,offset=1548,lag=0
slave1:ip=192.168.81.131,port=6379,state=online,offset=1548,lag=0
master_replid:582a050fb3454f72b98147b4b2fa14e6802f32a1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1562
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1562

4.配置sentinel 3個哨兵

1.主機配置 在192.168.81.129中配置,找到src/sentinel.conf


  • port 26379
  • 保護模式
    protected-mode no
  • 守護程序
    daemonize yes
  • 設定master和slaves的密碼
    sentinel auth-pass mymaster 123456
  • master或slave多長時間(預設30秒)不能使用後標記為s_down狀態
    sentinel down-after-milliseconds mymaster 30000
  • 選項指定了在執行故障轉移時, 最多可以有多少個從伺服器同時對新的主伺服器進行同步, 這個數字越小, 完成故障轉移所需的時間就越長。
    sentinel parallel-syncs mymaster 1
  • 若sentinel在該配置值內未能完成failover操作(即故障時master/slave自動切換),則認為本次failover失敗
    sentinel failover-timeout mymaster 180000

2.從機配置192.168.81.130和192.168.81.131 找到 src/sentinel.conf
主要新增
sentinel monitor mymaster 192.168.81.129 6379 2
其次
192.168.81.130 中port 26380
192.168.81.131 中port 26381
其他與上面主機一直

注意

這兩個順序不能反
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000

3.1啟動
./src/redis-sentinel sentinel.conf

5.配置完成檢視效果

1.啟動順序

主機redis服務-> 從機redis服務 -> sentinel

2.檢視

  • 192.168.81.129 使用 info replication 命令

  • role:master //角色為mster
    connected_slaves:2//用2個從機
    slave0:ip=192.168.81.130,port=6379,state=online,offset=50440,lag=1
    slave1:ip=192.168.81.131,port=6379,state=online,offset=50440,lag=1
    master_replid:430220134be5b3ffb3951e089e1cb075b04a3aba
    master_replid2:90a93c7fdc2f9ea732f8813cb71c548f1789ddee
    master_repl_offset:50726
    second_repl_offset:35186
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:50726

  • 192.168.81.130 使用 info replication 命令

  • role:slave //角色為子節點
    master_host:192.168.81.129
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:1
    master_sync_in_progress:0
    slave_repl_offset:132768
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:430220134be5b3ffb3951e089e1cb075b04a3aba
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:132768
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:46506
    repl_backlog_histlen:86263

  • 192.168.81.131 使用 info replication 命令

  • role:slave //角色為子節點
    master_host:192.168.81.129
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:0
    master_sync_in_progress:0
    slave_repl_offset:152485
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:430220134be5b3ffb3951e089e1cb075b04a3aba
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:152485
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:47258
    repl_backlog_histlen:105228

3.在主機中加入一個值,會同步到從機中

等待幾分鐘即可

4.關閉主節點,會發現主節點會自動選舉、

再次查詢

  • 192.168.81.130 使用 info replication 命令

  • 發現130變為主機

    role:master//主節點
    connected_slaves:1
    slave0:ip=192.168.81.131,port=6379,state=online,offset=1755291,lag=0
    master_replid:153af2e4d7632095b16c1dc153d08f51c97dbdca
    master_replid2:430220134be5b3ffb3951e089e1cb075b04a3aba
    master_repl_offset:1755291
    second_repl_offset:1751237
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:706716
    repl_backlog_histlen:1048576

  • 192.168.81.131 使用 info replication 命令

  • 131未變

  • role:slave
    master_host:192.168.81.130
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:0
    master_sync_in_progress:0
    slave_repl_offset:1753847
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:153af2e4d7632095b16c1dc153d08f51c97dbdca
    master_replid2:430220134be5b3ffb3951e089e1cb075b04a3aba
    master_repl_offset:1753847
    second_repl_offset:1751237
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:705272
    repl_backlog_histlen:1048576

6.結束

如有不同請仔細檢查配置