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