標籤:
想跑一下Redis叢集,但是沒有那麼多伺服器,所以使用偽分布式模式,類比一下,記錄一下安裝過程。
軟體: redis-3.0.3.tar.gz
叢集正常工作至少需要3個主節點(本樣本建立6個節點,3主3從節點)
安裝前提,要有ruby、rubygems環境,先安裝一下:
#安裝rubyyum --nogpgcheck -y install rubyyum --nogpgcheck -y install ruby-devel.x86_64#安裝rubygemyum --nogpgcheck -y install rubygems#安裝Ruby的redis介面gem-redis
安裝Redis軟體
#進入安裝目錄cd /usr/local/rm -rf redisrm -rf redis-3.0.3#解壓tar -zxvf redis-3.0.3.tar.gzmv redis-3.0.3 redis#進入源碼目錄cd redis#編譯安裝make && make install
建立叢集的相關配置
#建立叢集需要的目錄mkdir -p /usr/local/redis/cluster/16001/mkdir -p /usr/local/redis/cluster/16002/mkdir -p /usr/local/redis/cluster/16003/mkdir -p /usr/local/redis/cluster/16004/mkdir -p /usr/local/redis/cluster/16005/mkdir -p /usr/local/redis/cluster/16006/#修改設定檔redis.conf#cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16001/redis.conf#cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16002/redis.conf#cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16003/redis.conf#cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16004/redis.conf#cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16005/redis.conf#cp /usr/local/redis/redis.conf /usr/local/redis/cluster/16006/redis.conf
設定檔樣本:
daemonize nopidfile /var/run/redis.pid#修改連接埠port 16001tcp-backlog 511timeout 0tcp-keepalive 0loglevel noticelogfile ""databases 16save 900 1save 300 10save 60 10000stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename dump.rdbdir ./slave-serve-stale-data yesslave-read-only yesrepl-diskless-sync norepl-diskless-sync-delay 5repl-disable-tcp-nodelay noslave-priority 100#修改為yesappendonly yesappendfilename "appendonly.aof"appendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated yeslua-time-limit 5000slowlog-log-slower-than 10000slowlog-max-len 128latency-monitor-threshold 0notify-keyspace-events ""hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64hll-sparse-max-bytes 3000activerehashing yesclient-output-buffer-limit normal 0 0 0client-output-buffer-limit slave 256mb 64mb 60client-output-buffer-limit pubsub 32mb 8mb 60hz 10aof-rewrite-incremental-fsync yes#=========================新增===============================daemonize yescluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000#========================================================
啟動Redis執行個體:
#分別啟動這6個redis執行個體(此時,節點均以Redis Cluster的方式運行,但並沒有自動構建叢集,因為還處於“我不認識你,你不屬於我”的狀態,它們每個都是孤零零的Redis節點,或者說只包含了一個節點的叢集)cd /usr/local/redis/cluster/16001 && redis-server redis.conf > redis.log 2>&1 &cd /usr/local/redis/cluster/16002 && redis-server redis.conf > redis.log 2>&1 &cd /usr/local/redis/cluster/16003 && redis-server redis.conf > redis.log 2>&1 &cd /usr/local/redis/cluster/16004 && redis-server redis.conf > redis.log 2>&1 &cd /usr/local/redis/cluster/16005 && redis-server redis.conf > redis.log 2>&1 &cd /usr/local/redis/cluster/16006 && redis-server redis.conf > redis.log 2>&1 &
##啟動之後使用命令查看redis的啟動情況
ps -ef|grep redis
建立叢集,讓上面的執行個體互相通訊
#建立叢集,讓上面的執行個體互相通訊(1 表示為每個master分配一個salve)/usr/local/redis/src/redis-trib.rb create --replicas 1 127.0.0.1:16001 127.0.0.1:16002 127.0.0.1:16003 127.0.0.1:16004 127.0.0.1:16005 127.0.0.1:16006
叢集建立完成,可以使用下面的命令查看相關資訊:
#查看叢集目前狀況redis-cli -c -p 16001#列印叢集的資訊cluster info#列出叢集當前已知的所有節點(node),以及這些節點的相關資訊。cluster nodes
輸出的資訊:
127.0.0.1:16002 master - 0 1439345771781 2 connected 5461-10922127.0.0.1:16003 master - 0 1439345772286 3 connected 10923-16383127.0.0.1:16001 myself,master - 0 0 1 connected 0-5460127.0.0.1:16004 slave 2566ea486fc30c911aafaf1b71130fd24a38dba9 0 1439345772791 4 connected127.0.0.1:16005 slave edea1e50bd224c6895b1904bce79e83fa07d6017 0 1439345772286 5 connected127.0.0.1:16006 slave ab06e033698627ce0ecd4c8c645585a1ae70cc84 0 1439345771276 6 connected
從上面的資訊可以明顯看到哪些是主節點、從節點。
#將節點的設定檔儲存到硬碟裡
cluster saveconfig
#------------------------測試-----------------------------------
#串連連接埠(可以使用其他連接埠測試16001 -> 16006)
redis-cli -c -p 16001
127.0.0.1:16001> set key001 v001
127.0.0.1:16001> get key001
正常輸出資訊的話,叢集建立成功,叢集搭建完成。
祝好運!!
Redis叢集的安裝測試(偽分布模式 - 主從複製)