最近由於QA環境部分資源被回收,需要自己重新搭建一個Redis集羣;去官網看了看,選了最新的Stable的Redis-5.0.3,Redis 5.0之後放棄 Ruby的集羣方式,改成使用C語言編寫的 redis-cli的方式,這使得集羣的構建方式複雜度降低許多, 特地記錄一下安裝過程;
https://redis.io/topics/cluster-tutorial Redis官網查看集羣搭建方式
1. 準備工作
- 兩臺linux虛擬機(
192.168.3.108
、192.168.3.109
) - 去redis官網下載redis-5.0.3.tar.gz (點擊下載),拷文件到/usr 目錄;
- 執行
yum install gcc
(GNU Compiler Collection); - 執行
yum install -y tcl
(Tool Command Language);
2.編譯安裝
- 執行
tar -zxvf redis-5.0.3.tar.gz
解壓到/usr目錄下; - 進入
redis-5.0.3
目錄; - 執行
make
編譯; - 若出現如下提示,則說明未安裝gcc,gcc-4.4.7-4.el6.x86_64.rpm,使用命令安裝gcc:
yum install gcc
;
/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/usr/redis-5.0.3/src‘
make: *** [all] Error 2
- 若出現如下提示,則將執行
make
改爲執行make MALLOC=libc
,可能是因爲編譯庫的問題;
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/usr/redis-5.0.3/src‘
make: *** [all] Error 2
- 再執行
make install
執行成功後到此編譯安裝結束;
3、集羣搭建
- 查看/usr目錄下有一個redis-5.0.3目錄,在/usr目錄下執行
mkdir redis-5.0.3-cluster
再建一個集羣目錄; - 在集羣目錄redis-5.0.3-cluster中新建3個文件夾
7004
、7005
、7006
對應不同節點端口; - 將 redis-5.0.3目錄下的
redis.conf
文件分別拷貝到7004
、7005
、7006
目錄中; - 修改三個端口目錄下
redis.conf
文件(端口號類推)
具體修改:
(1)port 7004
#綁定端口
(2)bind 192.168.3.108
#定IP也(也可以註釋掉,這樣任何客戶端都可以連接了)
(3)dir /usr/local/redis-5.0.3-cluster/7004
#指定文件存放路徑 ( .rdb .aof nodes-7004.conf)
(4)cluster-enabled yes
#啓動集羣模式
(5)daemonize yes
#後臺啓動
(6)cluster-node-timeout 15000
#指定集羣節點超時時間
(7)appendonly yes
#指定持久化方式
(8)protected-mode no
#非保護模式
cd /usr
在/usr目錄下- 執行:
local/bin/redis-server redis-5.0.3-cluster/7004/redis.conf
local/bin/redis-server redis-5.0.3-cluster/7005/redis.conf
local/bin/redis-server redis-5.0.3-cluster/7006/redis.conf
啓動這三個節點,可以執行ps -ef | grep redis
查看這三個節點運行pid,確保節點啓動正常。至此192.168.3.108
三個節點安裝完成;
- 在另一臺
192.168.3.109
重複上述操作,啓動三個節點7007
、7008
、7009
- 至此兩臺機器,六個節點都正常啓動。
4、啓動集羣
- 進入bin目錄
cd /usr/local/bin
-執行
redis-cli --cluster create 192.168.3.108:7004 192.168.3.108:7005 192.168.3.108:7006 192.168.3.109:7007 192.168.3.109:7008 192.168.3.109:7009 --cluster-replicas 1
- 啓動過程輸入
yes
,集羣應該啓動正常; - 可能出現異常
no route to host
這是系統防火牆沒關; - 可能應爲節點數量過少啓動失敗,
--cluster-replicas 1
的意思就是爲集羣中的每個主節點創建1個從節點,而集羣必須要3個或3個以上的主節點,所以這樣6個節點是最基本的,否則創建集羣就會失敗;這樣的配置只要有一個主節點掉線,整個集羣就無法提供服務了,因爲當主節點存活數低於總節點數的一半,集羣就無法提供服務;
5、熄燈
redis cluster中的每個節點都是平等的關係,每個節點都保存各自的數據和整個集羣的狀態。節點之間互相連接並保持活躍,這樣只要連接集羣中任意一個節點,就可以獲取到其他節點數據。
參考 : redis 5.0.3 講解、集羣搭建