centos7.2下使用 redis 5.0搭建叢集 redis-cluster
阿新 • • 發佈:2019-01-11
1.redis安裝與編譯
# 下載,解壓,編譯redis
$ wget http://download.redis.io/releases/redis-5.0.0.tar.gz
$ tar xzf redis-5.0.0.tar.gz
# 進入到解壓目錄
$ cd redis-5.0.0
$ make
# 進入到redis-5.0.0/src 目錄下執行
$ make install
編譯後結果如下:
#在redis資料夾下新建etc和bin目錄,將redis.conf拷貝到 etc下,常用的5個命令移動到bin目錄下
#啟動redis ,啟動之前編輯redis.conf 檔案將 daemonize選項 改為yes (後臺啟動) $ bin/redis-server etc/redis.conf #驗證啟動是否成功 $ ps-ef |grep redis
#退出redis服務
$ Kill 程序號 或 pkill redis-server
2.叢集搭建
redis叢集至少需要2N+1個master節點(3個),在這裡我們搭建三個master節點,並且為每一個master再掛一個slave節點,總共6個節點.我們在這裡採用一臺機器上建立6個redis例項,並將它們配置成叢集模式,搭建一個偽叢集,與真正的分散式配置方法幾乎一樣,搭建步驟如下:
2.1 在usr/local/下 建立資料夾 redis-cluster ,在redis-cluster下建立 8001,8002,8003,8004,8005,8006資料夾
2.2 將redis.conf拷貝至redis-cluster下的8001資料夾下,修改配置檔案
- Daemonize yes
- Port 8001 (分別對每個機器的埠還進行設定)
- Bind 192.168.1.102 (必須綁定當前機器的ip,方便叢集定位機器,不繫結可能會出現迴圈查詢節點及其的情況)
- Dir /usr/local/redis-cluster/8001/ (指定資料檔案存放位置,必須指定不同的目錄位置,否則可能丟失資料)
- Cluster-enable yes(啟動叢集模式)
- Cluster-config-file nodes-8001.conf (800x與前面的埠號對應上)
- Cluster-node-timeout 5000
- Appendonly yes (開啟aof模式)
2.3 將8001下的redis.conf配置檔案分別拷貝到剩餘的5個檔案下
2.4 將8002 8003 8004 8005 8006 下的配置檔案的 b,d,f 項進行相應修改,可在vim使用批量替換命令
:%s/源字串/目的字串/g
2.5 分別啟動6個例項
使用 ps -ef |grep redis檢視狀態
2.6 建立redis叢集(redis5.0使用redis-cli),5.0以下版本見下文
./redis-cli --cluster create 192.168.1.102:8001 192.168.1.102:8002 192.168.1.102:8003
192.168.1.102:8004 192.168.1.102:8005 192.168.1.102:8006 --cluster -replicas 1
在最後的replicas 1 指的是 主節點與從節點數的比例值.表示 master/slave=1
輸入yes之後可以看到 :
2.7 搭建完畢,開始驗證
- 連線任意一個客戶端 : ./redis-cli -c -h -p (-c表示叢集模式)
如: /usr/local/redis/bin/redis-cli -c -h 192.168.1.102 -p 8001
2.進行驗證: cluster info(檢視叢集資訊),cluster nodes(檢視節點列表)
3.
- 資料操作驗證,可以看到叢集是輪流向叢集中存入資料,取出資料時會自動重定向
- 關閉叢集需要逐個關閉: /usr/local/redis/bin/redis-cli -c -h 192.168.1.102 -p 8001 shutdown
分散式redis叢集
2.7 redis5.0以下的版本 搭建方法
- 由於redis叢集需要使用ruby命令,所以需要安裝ruby( redis5.0使用redis-cli建立叢集,所以不需此步驟
$ yum install ruby
$ yum install rubygems
$ gem install redis –version X.X.X(安裝redis和ruby的介面)
在redis/src下 使用redis-trib.rb命令建立叢集
建立完成,分別啟動6個例項,步驟同上.