Redis 哨兵使用以及在 Laravel 中的配置

若相惜發表於2019-06-28

主從配置(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,
                ],
            ],
        ]

Persevere,Vtr!

相關文章