在 redis3.0
以前集羣需要藉助哨兵 sentinel
,在 3.0
版本正式推出 Redis Cluster
高可用集羣模式; Redis Cluster
方案不需要額外部署 Sentinel
(哨兵)集羣。
Redis
集羣要求至少三個節點,否則不成功。本文采用虛擬機,模擬搭建三主三從集羣模式。
虛擬機
IP
分別是192.168.18.139
,192.168.18.140
,192.168.18.141
可以只配置一臺虛擬機,其他兩臺直接用克隆
本文使用192.168.18.139
進行配置
一 安裝 redis v5
1. 下載
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2. 解壓
tar -zxvf redis-5.0.7.tar.gz
3. 編譯安裝
將其安裝在
/usr/local/redis
目錄
cd redis-5.0.7
make
cd src && make PREFIX=/usr/local/redis install
二 配置節點
將節點信息配置在
cluster
目錄下, 端口號分別是6378,6379
cd /usr/local/redis
mkdir -p cluster/6378 cluster/6378
1. 修改配置文件
複製
redis.conf
到cluster/6378/
vim cluster/redis.conf
主要修改內容如下:
啓用守護線程
1.daemonize yes
同臺計器不同節點的端口要不一樣
2.port 6378
指定數據目錄,必須要指定不同的目錄位置,不然會丟失數據
3.dir /usr/local/redis/cluster/6378/
啓動集羣模式
4.cluster-enabled yes
集羣節點信息文件,這裏
6378
最好和port
對應上
5.cluster-config-file nodes-6378.conf
去掉bind綁定訪問ip信息
6.#bind 127.0.0.1
關閉保護模式
7.protected-mode no
appendonly yes
cluster-node-timeout 5000
如果要設置密碼需要增加如下配置
設置redis密碼
10.requirepass xxx
設置集羣節點間訪問密碼,跟上面一致
11.masterauth xxx
將 6378
的配置複製到 6379
並將 2,3,5
中的端口號修改爲6379
cp cluster/6378/redis.conf cluster/6379/redis.conf
2. 創建啓動腳本
vim /usr/local/redis/start-redis-cluster.sh
#!/bin/sh
REDIS_HOME=/usr/local/redis
$REDIS_HOME/bin/redis-server $REDIS_HOME/cluster/6378/redis.conf
$REDIS_HOME/bin/redis-server $REDIS_HOME/cluster/6379/redis.conf
:wq
保存
3. 克隆該虛擬機
三 啓動集羣
1. 創建啓動集羣腳本
可以在任意一臺虛擬機上創建該腳本,本文在
139
上創建
vim /usr/local/redis/create-cluster.sh
#!/bin/sh
bin/redis-cli --cluster create 192.168.18.139:6378 192.168.18.139:6379 192.168.18.140:6378 192.168.18.140:6379 192.168.18.141:6378 192.168.18.141:6379 --cluster-replicas 1
--cluster
:redis 5
提供的參數
--cluster-replicas 1
: 一主一從配置,六個節點就是 三主三從
2. 啓動所有的 redis
節點
需要在三個虛擬機上都執行該命令
./start-redis-cluster.sh
2.1 查看是否啓動成功
ps -ef | grep redis
3. 創建集羣
只需要在一臺虛擬機上執行該命令即可
./create-cluster.sh
如出現錯誤:
[ERR] Node 192.168.18.139:637x is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
刪除cluster/637x
下aof、rdb、nodes-637x.conf本地備份文件, 然後再次執行腳本
出現交互 直接輸入
yes
接受即可
[OK] All 16384 slots covered
說明集羣創建成功
待續…