推薦: Redis 叢集的安裝(Redis4.0.x +CentOS7.4.x )
一、參考文件
二、Redis 叢集的安裝(Redis 4.0.6 + CentOS 7.3.x)
1、叢集規劃
要讓 Redis4.x 叢集正常工作至少需要 3 個 Master 節點, 要想實現高可用, 每個 Master 節點要配備至少 1 個 Slave 節點。 根據以上特點和要求, 進行如下的叢集實施規劃:使用 6 臺伺服器(物理機或虛擬機器) 部署 3 個 Master + 3 個 Slave;
主機名 | IP | 服務埠(預設6379) | 叢集埠(服務埠數+10000) | 主/從 |
host1 | 10.70.27.2 | 7000 | 17000 | Master |
host2 | 10.70.27.4 | 7000 | 17000 | Master |
host3 | 10.70.27.5 | 7000 | 17000 | Master |
host4 | 10.70.27.8 | 7000 | 17000 | Slave |
host5 | 10.70.27.10 | 7000 | 17000 | Slave |
host4 | 10.70.27.12 | 7000 | 17000 | Slave |
2、配置防火牆
防火牆中開啟相應的埠
在這6臺機器上,如果有防火牆開啟了的話,記得把下面的埠開啟
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000-j ACCEPT
3、準備
找任意上面的一臺機器上去生成redis4的可執行檔案,比如在host1上。
安裝目錄: /usr/local/redis4
使用者: root
編譯和安裝所需的包:
- # yum install gcc tcl
下載(或上傳) Redis4 最新穩定版(當前最新版 redis-4.0.6.tar.gz)
- # cd /usr/local/src
- # wget http://download.redis.io/releases/redis-4.0.6.tar.gz
建立安裝目錄:
- # mkdir /usr/local/redis4
解壓:
- # tar -zxvf redis-4.0.6.tar.gz
- # cd redis-4.0.6
安裝(使用 PREFIX 指定安裝目錄):
- # make PREFIX=/usr/local/redis4 install
安裝完成後, 可以看到/usr/local/redis4 目錄下有一個 bin 目錄, bin 目錄裡就是 redis 的命令指令碼:
- redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server
4、拷貝redis.conf
在6個機器上 建立叢集配置目錄
/usr/local/redis4
/usr/local/redis4/conf
/usr/local/redis4/bin
然後
1: 把host1上的 /usr/local/src/redis-4.0.6/redis.conf 拷貝到這六個機器的/usr/local/redis4/conf 下面。
2: 把host1上的 /usr/local/redis4/bin 目錄下的所有內容 拷貝到這六個機器的/usr/local/redis4/bin下面。
5、修改redis.conf
對6個節點修改它們的配置檔案,下面選項如下:
6 個節點的 redis.conf 配置檔案內容(作為參考),注意修改下紅色字型部分的內容即可,其他都相同:
在本次安裝中,我們包含了最少選項的叢集配置檔案示例如下:
- port 7000
- cluster-enabled yes
- cluster-config-file nodes.conf
- cluster-node-timeout 5000
- appendonly yes
6、啟動Redis例項
使用如下命令啟動這 6 個 Redis 節點例項:
# /usr/local/redis4/bin/redis-server /usr/local/redis4/conf/redis.conf
啟動之後用 PS 命令檢視例項啟動情況:
# ps -ef | grep redis
root 5443 1 0 22:49 ? 00:00:00 /usr/local/redis4/bin/redis-server *:7000 [cluster]
注意: 啟動完畢後, 6 個 Redis 例項尚未構成叢集。
7、建立叢集
接下來準備建立叢集
安裝 ruby 和 rubygems注:如果是Redis4.0.6,則ruby需要2.2.2版本及其以上。
安裝步驟如下:
# yum install centos-release-scl-rh
//會在/etc/yum.repos.d/目錄下多出一個CentOS-SCLo-scl-rh.repo源
# yum install rh-ruby24-ruby.x86_64 -y
# scl enable rh-ruby24 bash
# ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
gem 安裝 redis ruby 介面:
- # gem install redis
- [[email protected]_27_2_centos etc]# gem install redis
Fetching: redis-4.0.1.gem (100%)
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 0 seconds
1 gem installed
執行 Redis 叢集建立命令(只需要在其中一個節點上執行一次則可)
- # cd /usr/local/src/redis-4.0.6/src/
- # cp redis-trib.rb /usr/local/bin/redis-trib.rb
- # /usr/local/bin/redis-trib.rb create --replicas 1 10.70.27.2:7000 10.70.27.4:7000 10.70.27.5:7000 10.70.27.8:7000 10.70.27.10:7000 10.70.27.12:7000
結果為:
- >>> Creating cluster
- Connecting to node
- ......
- Can I set the above configuration? (type 'yes' to accept): yes
- (輸入 yes 並按下回車確認之後,叢集就會將配置應用到各個節點,並連線起(join)各個節點,也就是
- 讓各個節點開始互相通訊)
- >>> Nodes configuration updated
- >>> Assign a different config epoch to each node
- >>> Sending CLUSTER MEET messages to join the cluster
- Waiting for the cluster to join....
- >>> Performing Cluster Check
- .....
一切正常的情況下輸出以下資訊
- [OK] All nodes agree about slots configuration.
- >>> Check for open slots...
- >>> Check slots coverage...
- [OK] All 16384 slots covered.
最後一行資訊表示叢集中的 16384 個槽都有至少一個主節點在處理, 叢集運作正常。
叢集建立過程說明:
(1) 給定 redis-trib.rb 程式的命令是 create , 這表示我們希望建立一個新的叢集;
(2) 這裡的 --replicas 1 表示每個主節點下有一個從節點;
(3) 之後跟著的其它引數則是例項的地址列表,程式使用這些地址所指示的例項來建立新叢集;總的來說,以上命令的意思就是讓 redis-trib 程式建立一個包含三個主節點和三個從節點的叢集。接著, redis-trib 會打印出一份預想中的配置給你看,如果你覺得沒問題的話(注意核對主從關係是否是你想要的),就可以輸入 yes , redis-trib 就會將這份配置應用到叢集當中。
8、叢集簡單測試
使用 redis-cli 命令進入叢集環境
- # /opt/app/redis4_cluster/bin/redis-cli -c -h 10.70.27.2 -p 7000
- > set name bigtree
- OK
- # /opt/app/redis4_cluster/bin/redis-cli -c -h 10.70.27.2 -p 7000
- > get name
更多的redis-cli 命令見
三、將 Redis 配置成服務
四、溫馨提示
注意:
1:redis在單機模式下redis.conf配置檔案中預設的資料庫數量是16個;在叢集模式下這個配置是不起作用的,叢集客戶端是不支援多資料庫db的,只有一個數據庫預設是SELECT 0。
2:叢集slave從節點預設是不支援讀寫操作的,但是在執行過readonly命令後可以執行讀操作。
即在redis.conf中,做如下設定:
slave-read-only yes