Redis單機和集群配置(版本在5.0后)


摘抄並用於自己后查

 

單機版的配置: 

  1. 下載redis壓縮包,然后解壓縮文件(tar xzf);

  2. 進入解壓后的redis文件目錄,編譯redis源文件(make,沒有c環境要gcc);

  3. 把編譯好的redis源文件安裝到/usr/local/redis目錄下,如果/local目錄下沒有redis目錄,會自動新建redis目錄;

  4. 進入/usr/local/redis/bin 目錄,直接 ./redis-server啟動redis(此時為前端啟動redis);

  5. 將redis啟動方式改為后端啟動,具體做法:把解壓縮的redis文件下的 redis.conf文件復制到/usr/local/redis/bin目錄下,然后修改redis.conf文件 ->daemonize:no 改為yes

  6. 在/bin目錄下通過./redis-server redis.conf啟動redis (此為后台啟動)

 

集群配置:

  一、Redis Cluster(Redis集群)簡介

    1)redis3.0版本之前只支持單例模式,在3.0版本后才支持集群。

    2)redis集群采用P2P模式,是完全去中心化的,不存在中心節點或者代理節點。

    3)redis集群是沒有統一的入口,客戶端連接集群時,連接的是集群中的任意節點即可,集群內部的節點是相互通信(PING-PONG機制),每個節點都是一個redis實例。

    4)為了實現集群的高可用,即判斷節點是否能正常使用,redis-cluster有一個投票容錯機制:如果集群中超過半數的節點投票認為某個節點掛了,那么這個節點就是掛了(fail),這是判斷節點是否掛了的方法。

    5)那么如果判斷集群是否掛了呢? -> 如果集群中任意一個節點掛了,而且該節點沒有從節點(備份節點),那么這個集群就是掛了。這個是判斷集群是否掛了的方法。

    6)為什么任一節點掛了集群就是掛了呢? -> 因為集群內置了16384個slot(哈希槽),並且把所有的物理節點映射到這個16384[0-16383]個slot上,或者說把這些slot均等分配給了各節點。當需要在redis集群存放一個數據(key-value)時,redis會先對這個key做crc16算法,然后得到一個結果。再把這個結果對16384進行取余,這個余數會對應[0-16383]其中一個槽,進而決定key-value存儲到哪個節點。所以一旦某個節點掛了,該節點對應的slot就無法使用,那么就會導致集群無法正常工作。讀取時,也是先對這個key做crc16和取余得到對應存放的節點。

    7)綜上,每個redis集群理論上最多可以有16384個節點。

 

 

  二、集群搭建需要的環境

   1)redis集群至少需要3個節點,因為投票容錯機制要求超過半數節點認為某個節點掛了,該節點才是掛了,所以2個節點無法構成集群。

   2)要保證集群的高可用,需要每個節點都有從節點,也就是備份節點,所以redis集群至少需要6台服務器。

  

  三、集群搭建具體步驟

  安裝環境和版本:centos7 , redis5.0.5。redis版本在5之前的集群需要安裝ruby環境(這很耗時間,且有各種問題需要解決),redis5.0.0之后已經將redis-trib.rb 腳本的功能全部集成到redis-cli之中了。本文基於redis-cli的-cluster來搭建集群。

  

  安裝過程:

   1. 下載並解壓(為方便直接從上面單機版的將文件夾拷貝過來)

   2. 編譯安裝: 

    make && make install

   3.創建redis節點

    在 /opt/redis-cluster/redis-5.0.5 下創建 redis_cluster文件夾,同時在里面創建redis7001,redis7002,redis7003,redis7004,redis7005,redis7006文件夾,並將redis.cof文件夾分別復制到這6個文件夾內,分別修改這個6個配置文件,修改內容如下:

    port 7001       // 端口7001,7002,7003,7004,7005,7006

    bind 本機ip     //本地時192.168.80.131

    daemonize yes   // 設置redis后台運行

    pidfile /var/run/redis_7001.pid   // pidfile文件對應7001 ... 7006

    cluster-enable yes  // 開區集群,把注釋去掉

    cluster-config-file nodes_7001.conf  // 集群的配置,配置文件首次啟動自動生成

    cluster-node-timeout 15000  // 請求超時,默認15秒,可自行設置

    appendonly yes  // aof日志開啟,有需要就開啟,時間長了文件會很大

   masterauth 123456 // 密碼的

 

   requirepass 123456 // 密碼的

 

  4. 啟動各節點:可以搞個批處理文件 startup.sh

    

     

  5. 檢查redis啟動情況

     ps -aux|grep redis

    netstat -tnlp|grep redis

    

    如果少了哪個,檢查是否配置文件修改時出錯

 

  6. 創建集群

     $ redis-cli --cluster create 192.168.80.131:7001 192.168.80.131:7002 192.168.80.131:7003 192.168.80.131:7004 192.168.80.131:7005 192.168.80.131:7006 --cluster-replicas 1 -a 123456  

  最后的 –a 123456  是設置的密碼

    

 

 --cluster-replicas 1 命令的意思是:一主一從配置,六個節點就是三主三從

  使用如下命令創建集群的狀態:

  redis-cli --cluster check 192.168.80.131:7001  #填寫任意節點即可

    

  加密碼的,命令后加 -a 和 密碼

 

netstat -anp|grep 7001


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM