环境
centos 7 minimal
cd /usr/local
wget http://download.redis.io/releases/redis-3.2.3.tar.gz
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 来做读写分离。比较简单,比较传统。