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的套接字信息;
這個鏈接的作用是什麼?