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 來做讀寫分離。比較簡單,比較傳統。