Centos 6.1下安装部署redis-cluster集群和哨兵模式

环境: Centos 6.1、redis 3.2.4;

注释:查看Centos命令:cat /etc/issue

第一步:下载并解压

cd root目录下,下载redis的jar包:wget http://download.redis.io/releases/redis-3.2.4.tar.gz,解压: tar -zxvf redis-3.2.4.tar.gz

第二步:编译并安装

cd redis-3.2.4

make && make install

d

 第三步:将 redis-trib.rb (这是一个ruby写的管理redis集群的工具)复制到 /usr/local/bin 目录下

cd src

cp redis-trib.rb /usr/local/bin/

第四步:创建redis_cluster目录,并创建节点文件夹:

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第1张图片

 第五步:将redis.conf文件复制到7001的目录下面,并修改7001目录下的redis.conf文件:

cp redis.conf redis_cluster/7001

redis.conf修改点如下:

1、修改端口号为当前节点:port 7001

2、daemonize yes

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第2张图片

 3、pidfile /var/run/redis_7001.pid

 4、开启AOF:appendonly yes

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第3张图片

5、放开redis集群的配置:

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第4张图片

cluster-enable是开启redis集群的配置,cluster-config-file不需要自己手动创建,只需要修改一下名称即可,cluster-node-timeout是集群的超时时间,就是当集群中的大部分节点连接不上该节点超过cluster-node-timeout指定的时间之后,将改节点下线,重新选出新的master;

修改完毕后,将7001下的redis.conf文件复制到目录7002、7003、7004、7005、7006目录下,并作相应的修改:

eg: sed -i "s/7001/7003/g" redis.conf

6、一次启动redis的6个节点:

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第5张图片

 确认各个节点已经正确启动:ps -ef | grep redis

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第6张图片

7、在设置集群之前需要先安装ruby:

yum -y install ruby ruby-devel rubygems rpm-build

gem install redis

如果在执行gem install redis时报错,并提示 redis requires Ruby version >= 2.2.2,

按下面步骤执行:

7.1:安装curl

yum install curl

 7.2:安装RVM

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

curl -L get.rvm.io | bash -s stable(执行这条命令的时候可能会报错,no public key,这时候我们只要执行返回的

gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB即可导入公钥,再重新执行安装rvm的命令)

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第7张图片

find / -name rvm -print

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第8张图片

7.3:是配置立即生效:

source /usr/local/rvm/scripts/rvm

7.4:查看rvm中已知版本:

rvm list known

7.5:安装rub一个版本(要高于2.2.2),并卸载老版本

rvm install 2.2.7

rvm use 2.2.7 --default

rvm remove 2.0.0

再重新执行:gem install redis

8、执行redis集群配置:redis-trib.rb  create  --replicas  1  127.0.0.1:7001  127.0.0.1:7002 127.0.0.1:7003  127.0.0.1:7004  127.0.0.1:7005 127.0.0.1:7006

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第9张图片

 

 

 从这个截图我们可以看到很多信息:

三台master分别是127.0.0.1:7001-7003,三台slave分别是127.0.0.1:7004-7006

其中127.0.0.1:7001的slave是127.0.0.1:7004,然后7001占据的slots是0-5460

其中127.0.0.1:7002的slave是127.0.0.1:7005,然后7002占据的slots是5461-10922

其中127.0.0.1:7003的slave是127.0.0.1:7006,然后7003占据的slots是10922-16383

而每个节点前面的一串字符串是这个节点的id:node-id

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第10张图片

 redis集群的大致结构就是上图的模样,redis都是按照数据槽分区存储数据的,共有16383个数据槽,三个主节点平分16383个数据槽,当有一个set key命令是,首先将key按照hash确定数据槽的位置,进而确定所在的节点,所以有2种情况,第一种情况是数据槽就在当前节点,第二种情况就是数据槽不在当前节点,还有就是如果master宕机了,那么salve节点就会替代宕机节点成为主节点;

验证:

登陆127.0.0.1:7001节点:redis-cli -c -h 127.0.0.1 -p 7001,注意这里要使用-c表示开启集群模式,如果不加-c那么如果key的数据槽不在当前节点,就会报错:

 正确的结果:

 

 从这个返回的结果我们可以看出来,数据储存在127.0.0.1:7003这个节点的14687这个数据槽;

查看集群节点信息: cluster nodes

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第11张图片

 

redis哨兵模式:

配置一台主redis master

配置一台从redis slaver,修改slave的redis.conf文件,增加配置项:slaveof 127.0.0.1 6379,这样配置好了主从模式;

Centos 6.1下安装部署redis-cluster集群和哨兵模式_第12张图片

 接下来配置哨兵,修改slave的配置文件sentinel.conf

sentinel monitor mymaster 192.168.127.129 6379 1

sentinel down-after-milliseconds mymaster 5000

sentinel parallel-syncs mymaster 1

sentinel failover-timeout mymaster 60000

启动哨兵:redis-sentinel

redis-server sentinel.conf --sentinel &

你可能感兴趣的:(redis)