redis集群中至少应该有三个节点,以保证当集群中的某个节点挂掉,其他节点进行容错投票时,投票数能超过半票. 要保证高可用,则还需要每一个节点有一个备份机. 因此redis集群至少需要6台服务器.这里使用搭建伪分布式的方式,可以使用一台虚拟机运行6个redis实例.此时需要修改6个redis实例为不同的端口号
redis cluster管理工具redis-trib.rb
搭建redis集群环境需要redis cluster管理工具redis-trib.rb,
redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单、便捷、实用的操作工具。redis-trib.rb是redis用ruby完成的
一、安装redis4.0.9软件包
tar fxv redis-4.0.9.tar.gz
yum -y install gcc tcl
cd redis-4.0.9
make MALLOC=libc && make test
二、安装集群管理工具ruby2.4.4
mkdir /usr/local/redis_cluster ##创建集群文件存放目录便于管理
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz ###ruby官方网站
tar fxv ruby-2.4.4.tar.gz
cd ruby-2.4.4
./configure --prefix=/usr/local/redis_cluster/ruby ###编译并指定安装目录所在位置
make && make install ###时间有点长! 注意看它停不停止就行!
cd /usr/local/redis_cluster/ruby
cp bin/ruby /usr/local/bin ###方便直接使用ruby和gem命令,若不复制,则使用ruby命令需要到此目录下才能用
cp bin/gem /usr/local/bin
三、升级zlib
tar -xvzf zlib-1.2.11.tar.gz
cd zlib-1.2.8.tar.gz
./configure --prefix=/usr/local/redis_cluster/zlib ## 设置安装路径
make && make install
###执行安装后,需要重新刷新下,ruby的zlib库
cd /opt/ruby-2.4.4/ext/zlib
ruby extconf.rb --with-zlib-include=/usr/local/redis_cluster/zlib/include/ --with-zlib-lib=/usr/local/redis_cluster/zlib/lib/ ##执行后会生成新的Makefile文件
vim Makefile
:%s+$(top_srcdir)/include/ruby.h+../../include/ruby.h+ ##执行替换路径$(top_srcdir)/include/ruby.h替换成../../include/ruby.h
make && make install
四、升级openssl
tar fxv openssl-1.0.2o.tar.gz
cd openssl-1.0.2o
./config -fPIC --prefix=/usr/local/redis_cluster/openssl -enable-shared
./config -t
make && make install
执行安装后,需要重新刷新下,ruby的openssl库
cd /opt/ruby-2.4.4/ext/openssl
ruby extconf.rb --with-openssl-include=/usr/local/redis_cluster/openssl/include/ --with-openssl-lib=/usr/local/redis_cluster/openssl/lib/ ##执行后会生成新的Makefile文件
vim Makefile
:%s+$(top_srcdir)/include/ruby.h+../../include/ruby.h+ ##执行替换路径$(top_srcdir)/include/ruby.h替换成../../include/ruby.h
make && make install
gem install /opt/redis-4.0.1.gem
五、创建伪集群
cd /usr/local/redis_cluster/
mkdir cluster
mkdir 16001 16002 16003 16004 16005 16006
cp redis-4.0.9/redis.conf cluster/16001
cp redis-4.0.9/redis.conf cluster/16002
cp redis-4.0.9/redis.conf cluster/16003
cp redis-4.0.9/redis.conf cluster/16004
cp redis-4.0.9/redis.conf cluster/16005
cp redis-4.0.9/redis.conf cluster/16006
vi redis.conf
##修改每个配置文件中的下面选项
port 16001 #每个配置文件的port端口号不能相同这里分别为16001.。。。16006
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
六、分别启动每个实例
cp /usr/local/redis_cluster/redis-4.0.9/src/redis-server /usr/local/bin/
cd /usr/local/redis_cluster/cluster
redis-server 16001/redis.conf
redis-server 16002/redis.conf
redis-server 16003/redis.conf
redis-server 16004/redis.conf
redis-server 16005/redis.conf
redis-server 16006/redis.conf
七、创建集群
redis-trib.rb create --replicas 1 127.0.0.1:16006 127.0.0.1:16005 127.0.0.1:16004 127.0.0.1:16003 127.0.0.1:16002 127.0.0.1:16001
报错:
解决:
1. error: jemalloc/jemalloc.h: No such file or directory解决方法
make MALLOC=libc
报错:
解决:
yum - y install tcl ##(时间同步)
报错:
解决:
升级zlib
报错:
解决:
升级openssl