主從配置(master-slave)
- 複製 redis 配置檔案以開啟多個 slave
sudo cp /etc/redis.conf /etc/redis-6381.conf
sudo cp /etc/redis.conf /etc/redis-6382.conf
- 編輯 slave 配置檔案,主要修改引數
port 6381
pidfile "/var/run/redis-6381.pid"
logfile "/var/log/redis/redis-6381.log"
slaveof 11.11.11.11 6381
masterauth "123456" # 主從都保持一樣的密碼,且 master 的配置也需要這一行,在執行切換 master 的時候好像不會去新增這一行
- /usr/bin/redis-server /etc/redis.conf 通過配置啟動 redis
哨兵配置(sentinel)
- 複製哨兵配置,這兒開啟3個哨兵
sudo cp /etc/redis-sentinel.conf /etc/redis-sentinel-26381.conf
sudo cp /etc/redis-sentinel.conf /etc/redis-sentinel-26382.conf
- 編輯哨兵配置檔案,主要修改引數如下,根據具體情況配置
port 26381
pidfile "/var/run/redis-sentinel-26381.pid"
logfile "/var/log/redis/redis-sentinel-26381.log"
sentinel monitor mymaster 11.11.11.11 6379 2 #主節點別名為mymaster,後面是ip和埠,2代表判斷主節點失敗至少需要2個sentinel節點同意
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000 #主節點故障30秒後啟用新的主節點
sentinel parallel-syncs mymaster 1 #故障轉移時最多可以有1個從節點同時對主節點進行資料同步,數字越大,用時越短,存在網路和 IO 開銷
sentinel failover-timeout mymaster 180000 #故障轉移超時時間180s:a 如果轉移超時失敗,下次轉移時時間為之前的2倍;b 從節點變主節點時,從節點執行 slaveof no one 命令一直失敗的話,當時間超過180S時,則故障轉移失敗;c 從節點複製新主節點時間超過180S轉移失敗
- /usr/bin/redis-sentinel /etc/redis-sentinel.conf 通過配置啟動哨兵
laravel 哨兵配置
'default' => [
'tcp://11.11.11.11:26379',
'tcp://11.11.11.11:26381',
'tcp://11.11.11.11:26382', //這3個都是sentinel節點的地址
'options' => [
'replication' => 'sentinel',
'service' => env('REDIS_SENTINEL_SERVICE', 'mymaster'), //sentinel
'parameters' => [
'password' => env('REDIS_PASSWORD', null), //redis的密碼,沒有時寫null
'database' => 0,
],
],
]