1. 程式人生 > >推薦: Redis 叢集的安裝(Redis4.0.x +CentOS7.4.x )

推薦: 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臺機器上,如果有防火牆開啟了的話,記得把下面的埠開啟

  1. -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000-j ACCEPT

3、準備

找任意上面的一臺機器上去生成redis4的可執行檔案,比如在host1上。

安裝目錄: /usr/local/redis4
使用者: root
編譯和安裝所需的包:

  1. # yum install gcc tcl  

下載(或上傳) Redis4 最新穩定版(當前最新版 redis-4.0.6.tar.gz)

  1. # cd /usr/local/src  
  2. # wget http://download.redis.io/releases/redis-4.0.6.tar.gz  

建立安裝目錄:

  1. # mkdir /usr/local/redis4  

解壓:

  1. # tar -zxvf redis-4.0.6.tar.gz
      
  2. # cd redis-4.0.6  

安裝(使用 PREFIX 指定安裝目錄):

  1. # make PREFIX=/usr/local/redis4 install  

安裝完成後, 可以看到/usr/local/redis4 目錄下有一個 bin 目錄, bin 目錄裡就是 redis 的命令指令碼:

  1. 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 配置檔案內容(作為參考),注意修改下紅色字型部分的內容即可,其他都相同:

在本次安裝中,我們包含了最少選項的叢集配置檔案示例如下:

  1. port 7000  
  2. cluster-enabled yes  
  3. cluster-config-file nodes.conf  
  4. cluster-node-timeout 5000  
  5. 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 介面:

  1. # gem install redis  
  2. [[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 叢集建立命令(只需要在其中一個節點上執行一次則可)

  1. # cd /usr/local/src/redis-4.0.6/src/  
  2. # cp redis-trib.rb /usr/local/bin/redis-trib.rb 
  3. /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

結果為:

  1. >>> Creating cluster  
  2. Connecting to node 
  3. ......
  4. Can I set the above configuration? (type 'yes' to accept): yes  
  5. (輸入 yes 並按下回車確認之後,叢集就會將配置應用到各個節點,並連線起(join)各個節點,也就是  
  6. 讓各個節點開始互相通訊)  
  7. >>> Nodes configuration updated  
  8. >>> Assign a different config epoch to each node  
  9. >>> Sending CLUSTER MEET messages to join the cluster  
  10. Waiting for the cluster to join....  
  11. >>> Performing Cluster Check
  12. .....

一切正常的情況下輸出以下資訊

  1. [OK] All nodes agree about slots configuration.  
  2. >>> Check for open slots...  
  3. >>> Check slots coverage...  
  4. [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 命令進入叢集環境

  1. # /opt/app/redis4_cluster/bin/redis-cli -c -h 10.70.27.2 -p 7000
  2.  > set name bigtree  
  3. OK  
  4. /opt/app/redis4_cluster/bin/redis-cli -c -h 10.70.27.2 -p 7000
  5. > get name

更多的redis-cli 命令見 

三、將 Redis 配置成服務

四、溫馨提示

注意:

1:redis在單機模式下redis.conf配置檔案中預設的資料庫數量是16個;在叢集模式下這個配置是不起作用的,叢集客戶端是不支援多資料庫db的,只有一個數據庫預設是SELECT 0。

2:叢集slave從節點預設是不支援讀寫操作的,但是在執行過readonly命令後可以執行讀操作。

即在redis.conf中,做如下設定:

slave-read-only yes