1. 程式人生 > >redis 3.3.2 叢集配置主從

redis 3.3.2 叢集配置主從

環境

centos 7 minimal

cd /usr/local

tar -zxvf redis-3.2.3.tar.gz

cd redis-3.2.3

make && make install  

這個點如果報錯

zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
則使用如下的即可 
make MALLOC=libc  && make install
如果是
gcc報錯 yum install gcc

至少6個程序,3主3從,修改對應的redis.conf  計劃埠7000 7001 7002 7003 7004 7005 不用擔心誰主誰從

redis 3.2 後會自己選舉 自動匹配主從。

修改編譯 後的redis-3.2.3  redis.conf 如下引數,修改完成後複製6份分別改埠即可

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

# 如果不在本機訪問 修改bind 0.0.0.0

----------------------------------------------開始啟動----------------------------------------

已7000 為例 

cd /usr/local/redis-3.2.3/src

./ redis-server ../ redis.conf &(& 可以在後臺執行)

6個全部啟動

然後在還是在/usr/local/redis-3.2.3/src 目錄,6個複製的目錄都可以

建立叢集(--replicas 1的意思是每個master有1個slave。

./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004127.0.0.1:7005

會報如下錯,因為沒有安裝ruby

custom_require.rb:36:in `require': cannot load such file -- redis (LoadError)
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from ./redis-trib.rb:25:in `<main>'

安裝ruby

yum install ruby 

然後安裝ruby redis 的介面

gem install redis(有點慢)

然後在執行建立叢集即可。

然後(-c是叢集模式下的命令-h  可以指定ip)

./redis-cli -c -p 7000

127.0.0.1:7000> CLUSTER NODES
5b60ef72275289e4be1cdabe6ec3e50a8b8dc2cc 127.0.0.1:7000 myself,slave 46715b1693dc1d1e5cc294851bef45423409b3bc 0 0 1 connected
46715b1693dc1d1e5cc294851bef45423409b3bc 127.0.0.1:7003 master - 0 1470661344669 7 connected 0-5460
ea0c3245b6d4866750adf7164378b7bd72b1dbb2 127.0.0.1:7004 slave 85b6556cfac9b3525bed249f46c5342486ff73bf 0 1470661340621 5 connected
85b6556cfac9b3525bed249f46c5342486ff73bf 127.0.0.1:7001 master - 0 1470661343664 2 connected 5461-10922
839aa53aa397ebf8448741c806e418246b7e8bcb 127.0.0.1:7002 master - 0 1470661345672 3 connected 10923-16383
9b0acbb20f98ba1668cc80102aed60e71dcaa588 127.0.0.1:7005 slave 839aa53aa397ebf8448741c806e418246b7e8bcb 0 1470661342656 6 connected
127.0.0.1:7000> 

則建立成功。

如果是先利用redis的自動主從切換,redis的客戶端,得用叢集的方式連線。

如果不想利用,利用haproxy 來做讀寫分離。比較簡單,比較傳統。