运行环境:CentOS 7(版本号:1503)
Redis版本:3.0.5
参考文档:① http://www.redis.cn/topics/cluster-tutorial.html
② http://www.linuxidc.com/Linux/2015-08/121845.htm
注意:redis集群需要至少6个节点,也就是六台服务器。如果服务器数量不足可在每台服务器上建立多个节点,如2台服务器,每台服务器上建立3个节点
一、 为所有服务器安装Redis
1.使用ssh工具连接服务器,下载和解包。
cd /usr/local/
wget http://download.redis.io/releases/redis-3.0.5.tar.gz
tar -zxvf redis-3.0.5.tar.gz
2.重命名文件夹
mv redis-3.0.5 redis
3.编译安装
cd redis
make && make install
在这里可能会碰到一个错误导致编译不过(如下)
make[1]: Entering directory `/redis/src‘
CC adlist.o
In file included from adlist.c:34:
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[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/redis/src‘
make: *** [all] Error 2
原因是没有安装jemalloc内存分配器,可以安装jemalloc
或 直接 输入make
MALLOC=libc && make install
二、
配置节点
注意:以下方法是每台服务器单节点配置,如果需要在每台服务器上配置多个节点,可在cluster目录下创建多个文件夹,文件夹名任意取,最好使用节点端口号:如7000 7001 7002 再将redis.conf复制到每个文件夹中,配置步骤与单节点相同,注意配置时6379需要换成当前结点目录的端口号
1.创建cluster文件夹
mkdir cluster
2.复制配置文件
cp
./redis.conf ./cluster/
3.修改配置文件
cd
./cluster/
vim
./redis.conf
修改如下
daemonize yes
//redis后台运行
pidfile /var/run/redis_6379.pid
//pidfile文件对应6379
port 6379
//端口6379
cluster-enabled yes
//开启集群 把注释#去掉
cluster-config-file nodes.conf
//集群的配置 配置文件首次启动自动生成
cluster-node-timeout 5000
//请求超时 设置5秒够了
appendonly yes
//aof日志开启 有需要就开启,它会每次写操作都记录一条日志
bind 本机ip地址 //不要使用127.0.0.1
保存退出
4.修改防火墙规则,开放6379端口,由于redis自身的机制,需要再开放10000+6379 端口,否则最后集群通讯会出错
firewall-cmd --zone=public --add-port=6379/tcp
–permanent
firewall-cmd --zone=public --add-port=16379/tcp
--permanent
firewall-cmd --reload
5.启动节点
redis-server
./redis.conf
6.测试是否正常运行
ps –ef |
grep redis
显示如下即可
如果是多节点配置则会显示多条进程
三、
启动集群功能(只需给其中一台服务器配置)
运行 /usr/local/redis/src/redis-trib.rb由于这是用ruby写的程序,需要先安装ruby。
yum -y
install ruby ruby-devel rubygems rpm-build
从ruby的gem工具包安装redis
gem
install redis
这个命令可能会出现下载错误,原因是链接错误,下载地址使用http协议而非https协议,先执行以下命令修改下载地址
gem sources -r https://rubygems.org
gem sources -a http://rubygems.org
再执行gem install redis命令就可以了
现在可以执行redis-trib.rb了
cd ../src
./redis-trib.rb
create --replicas 1 本机ip:节点端口号
…(后面加上所有服务器上的所有节点,格式为ip地址:节点端口号)
--replicas
1 表示 自动为每个master节点分配一个slave节点 如果有6个节点,程序会按照一定规则选举生成 3个master(主)3个slave(从)。
执行之后redis-trib 会打印出一份预想中的配置出来,没问题的话,就可以输入 yes , redis-trib 就会将这份配置应用到集群当中,让各个节点开始互相通讯,最后可以得到如下信息:
[OK] All 16384 slots covered
这表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常。
如果出现Waiting for the cluster to join..........一直等待没反应,说明配置过程有问题,