redis集羣選項和部署

redis與集羣有關的配置
    redis運行實例默認不能看作集羣的節點,除非在redis.conf文件內設置cluster-enabled屬性爲yes。集羣中的每個節點都
    有集羣配置文件,此配置文件不建議手動維護,它是由集羣中所有節點創建和維護的。每個節點的配置文件名時不同的。
    cluster-config-file node-7679.conf
    集羣中每個節點的超時單位時毫秒。
    
redis集羣當前不支持NAT模式和remapping模式網絡,所以在docker中部署redis集羣,需要更改docker的網絡爲host networking模式    
    
使用yum包管理工具安裝redis服務器
    centos默認的軟件源中沒有redis包,所以需要安裝其他的軟件源,建議安裝federal的epel-release軟件源;
    $ sudo yum install -y epel-release
    # 查看軟件源是否安裝成功
    $ sudo yum repolist | grep epel 
    $ sudo yum install -y redis 
    $ sudo service redis start 
啓動日誌文件路徑是/var/log/redis/redis.log 

    
搭建一個redis集羣
    學習redis文檔之cluster入門,redis提供一個工具腳本方便創建redis集羣,它的名字是create-cluster。
    腳本內容如下:
    # 基本一些設置,可以將這些基礎配置分離到config.sh的腳本中
        # Settings
        CLUSTER_HOST=127.0.0.1        
        PORT=30000
        TIMEOUT=2000
        NODES=6
        REPLICAS=1
        PROTECTED_MODE=yes
        ADDITIONAL_OPTIONS=""
    # 如果存在config.sh腳本,利用config.sh腳本中的環境配置 
    if [ -a config.sh ]
    then
        source "config.sh"
    fi
    
    # Computed vars
    ENDPORT=$((PORT+NODES))
    
    # 創建cluster集羣模塊
    if [ "$1" == "create" ] 
    then
        HOSTS=""
        while [ $((PORT < ENDPORT)) != "0" ]; do  #設定的端口號在預定的範圍內
            PORT=$((PORT+1))
            HOSTS="$HOSTS $CLUSTER_HOST:$PORT"
        done
        ../../src/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS  #使用redis-cli --cluster create命令的方式創建本地Master和Replica節點
        exit 0
    fi
    # 結果:在一臺電腦上同時啓動了個redis進程;Redis Cluster 在5.0之後取消了ruby腳本 redis-trib.rb的支持(手動命令行添加集羣的方式不變),
    # 集合到redis-cli裏,避免了再安裝ruby的相關環境。直接使用redis-clit的參數--cluster 來取代。
    
    # 啓動cluster集羣
    if [ "$1" == "start" ]
    then
        while [ $((PORT < ENDPORT)) != "0" ]; do
            PORT=$((PORT+1))
            echo "Starting $PORT"
            ../../src/redis-server --port $PORT  --protected-mode $PROTECTED_MODE --cluster-enabled yes --cluster-config-file nodes-${PORT}.conf --cluster-node-timeout $TIMEOUT --appendonly yes --appendfilename appendonly-${PORT}.aof --dbfilename dump-${PORT}.rdb --logfile ${PORT}.log --daemonize yes ${ADDITIONAL_OPTIONS}
        done
        exit 0
    fi
    
# redis的版本
    --cluster-config-file nodes-${PORT}.conf //指定
    --dbfilename dump-${PORT}.rdb 
    
    
Redis集羣TCP端口
    每個節點需要有兩個打開的TCP連接,一個負責客戶端的請求,一個負責集羣bus,用於故障檢測和配置升級,
    故障轉移。客戶端不應該連接到bus端口,bus默認端口號是客戶端口加10000,也就是說如果客戶端口是6379,
    則bus端口值等於16379
    
    netstat --numeric-ports -p | grep redis,輸出端口爲77087的一行文本內容,協議是unix的套接字信息;
    這個鏈接的作用是什麼?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章