redis作為當前炙手可熱的NOSQL系統,本身就支持主從集群,下面我們就來動手搭建一個一主兩從的redis集群。
一、安裝操作
1、環境准備
這里使用三台服務器,每台服務器上開啟一個redis-server和redis-sentinel服務,redis-server端口為8000,redis-sentinel的端口為6800,修改默認端口是安全的第一步。
redis-server說明
- 192.168.68.110:8000 主
- 192.168.68.111:8000 從
- 192.168.68.112:8000 從
redis-sentinel說明
- 192.168.68.110:6800
- 192.168.68.111:6800
- 192.168.68.112:6800
2、搭建redis系統
先在三台機器上安裝redis,具體步驟可參考Linux下redis安裝(單機版)
安裝完成后復制redis提供的默認配置文件
cp /usr/src/redis-3.2.1/redis.conf /usr/local/redis
修改配置文件
cd /usr/local/redis vim redis.conf
主節點192.168.68.110上的配置
port 8000 daemonize yes bind 192.168.68.110 requirepass 123456 pidfile /var/run/redis-8000.pid logfile /var/log/redis/redis-8000.log
從節點192.168.68.111,192.168.68.112上的配置
port 8000 daemonize yes bind 192.168.68.111 #192.168.68.112 requirepass 123456 masterauth 123456 pidfile /var/run/redis-8000.pid logfile /var/log/redis/redis-8000.log slaveof 192.168.68.110 8000
注意:redis不會幫我們創建目錄,所以在啟動之前需要創建目錄/var/log/redis
啟動三台機器上的redis
./bin/redis-server ./redis.conf
三個redis服務啟動完畢后,進入命令行,執行info replication查看當前主從配置
如果如上圖所示沒有發現從節點,很有可能是防火牆沒有開放8000端口導致主從節點之間沒法通信
執行以下命令
firewall-cmd --zone=public --add-port=8000/tcp --permanent firewall-cmd --zone=public --add-port=6800/tcp --permanent firewall-cmd --reload
重新查看主從信息
3、搭建redis-sentinel系統
首先復制默認的配置文件並修改
cp /usr/src/redis-3.2.1/sentinel.conf /usr/local/redis/ vim /usr/local/redis/sentinel.conf
內容如下
protected-mode no daemonize yes port 6800 sentinel monitor mymaster 192.168.68.110 8000 1 sentinel auth-pass mymaster 123456 #5秒內master6800沒有響應,就認為SDOWN sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 15000 logfile /var/log/redis/sentinel.log pidfile /var/run/sentinel.pid
啟動redis-sentinel
./bin/redis-sentinel ./sentinel.conf
二、測試
1、主從復制測試
主節點添加數據
從節點獲取數據
2、故障轉移測試
停掉主節點
查看redis集群信息
從節點192.168.68.112升級為主節點