CentOS 7搭建redis集群


前言

问题1:搭建redis集群,为什么master节点至少要3个,slave节点也是3个?
解答1:这是因为一个redis集群如果要对外提供可用的服务,那么集群中必须要有过半的master节点正常工作,基于这个特性,如果想搭建一个能够允许 n 个master节点挂掉的集群,那么就要搭建2n+1个master节点的集群,如:

  • 2个master节点,挂掉1个,则1不过半,则集群down掉,无法使用,容错率为0
  • 3个master节点,挂掉1个,2>1,还可以正常运行,容错率为1
  • 4个master节点,挂掉1个,3>1,还可以正常运行,但是当挂掉2个时,2=2,不过半,容错率依然为1

在CentOS 7.3下搭建redis集群,在此将操作记录下来,亲测通过。


一、redis安装

1、资源准备

  • 3台服务器:redis01、redis02、redis03
  • redis安装包:redis-5.0.9.tar.gz

2、依赖库安装

在3台服务器分别执行以下命令:

# yum -y install gcc gcc-c++ 
# yum -y install ruby
# yum -y install ruby-devel
# yum -y install rubygems

3、安装redis

在3台服务器分别执行以下命令:

# tar -zxvf redis-5.0.9.tar.gz
# mv redis-5.0.9 /usr/local
# cd /usr/local/redis-5.0.9
# make
# cd src/
# make install
# cd /usr/local/redis-5.0.9
# mkdir bin
# mkdir etc
# mv redis.conf /usr/local/redis-5.0.9/etc
# cd src/
# mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server  /usr/local/redis-5.0.9/bin

二、redis集群搭建

1、集群规划

Redis集群最少需要6个节点,可以分布在一台或者多台主机上,如下:

节点1100.100.56.3:7000 100.100.56.3:7001 100.100.56.3:7002
节点2100.100.56.4:7003 100.100.56.4:7004 100.100.56.4:7005
节点3100.100.56.5:7006 100.100.56.5:7007 100.100.56.5:7008

2、在redis01服务器上创建多节点

执行以下命令:

# cd /usr/local/redis-5.0.9
# mkdir -p redis_cluster/7000
# mkdir -p redis_cluster/7001
# mkdir -p redis_cluster/7002
# cp etc/redis.conf redis_cluster/7000

//编辑配置文件
# vim /usr/local/redis-5.0.9/redis_cluster/7000/redis.conf
//编辑内容如下:
port  7000                                        //端口7000,7001,7002        
bind redis01服务器ip                              //默认ip为127.0.0.1,需要改为节点服务器ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7001,7002
cluster-enabled  yes                           //开启集群
cluster-config-file  nodes_7000.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
requirepass 123456        //redis访问密码   

# cp /usr/local/redis-5.0.9/redis_cluster/7000/redis.conf /usr/local/redis-5.0.9/redis_cluster/7001
//编辑配置文件
# vim /usr/local/redis-5.0.9/redis_cluster/7001/redis.conf
//编辑内容如下:
port  7001                                        //端口7000,7001,7002        
bind redis01服务器ip                              //默认ip为127.0.0.1,需要改为节点服务器ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7001.pid          //pidfile文件对应7000,7001,7002
cluster-enabled  yes                           //开启集群
cluster-config-file  nodes_7001.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
requirepass 123456        //redis访问密码

# cp /usr/local/redis-5.0.9/redis_cluster/7000/redis.conf /usr/local/redis-5.0.9/redis_cluster/7002
//编辑配置文件
# vim /usr/local/redis-5.0.9/redis_cluster/7002/redis.conf
//编辑内容如下:
port  7002                                        //端口7000,7001,7002        
bind redis01服务器ip                              //默认ip为127.0.0.1,需要改为节点服务器ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7002.pid          //pidfile文件对应7000,7001,7002
cluster-enabled  yes                           //开启集群
cluster-config-file  nodes_7002.conf   //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
requirepass 123456        //redis访问密码

3、在redis02服务器上创建多节点

执行以下命令:

# cd /usr/local/redis-5.0.9
# mkdir -p redis_cluster/7003
# mkdir -p redis_cluster/7004
# mkdir -p redis_cluster/7005
# cp etc/redis.conf redis_cluster/7003

//编辑配置文件
# vim /usr/local/redis-5.0.9/redis_cluster/7003/redis.conf
//编辑内容如下:
port  7003                                        //端口7003,7004,7005        
bind redis01服务器ip                              //默认ip为127.0.0.1,需要改为节点服务器ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7003.pid          //pidfile文件对应7003,7004,7005
cluster-enabled  yes                           //开启集群
cluster-config-file  nodes_7003.conf   //集群的配置  配置文件首次启动自动生成 7003,7004,7005
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

# cp /usr/local/redis-5.0.9/redis_cluster/7003/redis.conf /usr/local/redis-5.0.9/redis_cluster/7004
//编辑配置文件
# vim /usr/local/redis-5.0.9/redis_cluster/7004/redis.conf
//编辑内容如下:
port  7004                                        //端口7003,7004,7005        
bind redis01服务器ip                              //默认ip为127.0.0.1,需要改为节点服务器ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7004.pid          //pidfile文件对应7003,7004,7005
cluster-enabled  yes                           //开启集群
cluster-config-file  nodes_7004.conf   //集群的配置  配置文件首次启动自动生成 7003,7004,7005
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

# cp /usr/local/redis-5.0.9/redis_cluster/7003/redis.conf /usr/local/redis-5.0.9/redis_cluster/7005
//编辑配置文件
# vim /usr/local/redis-5.0.9/redis_cluster/7005/redis.conf
//编辑内容如下:
port  7005                                        //端口7003,7004,7005        
bind redis01服务器ip                              //默认ip为127.0.0.1,需要改为节点服务器ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7005.pid          //pidfile文件对应7003,7004,7005
cluster-enabled  yes                           //开启集群
cluster-config-file  nodes_7005.conf   //集群的配置  配置文件首次启动自动生成 7003,7004,7005
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

4、在redis03服务器上创建多节点

执行以下命令:

# cd /usr/local/redis-5.0.9
# mkdir -p redis_cluster/7006
# mkdir -p redis_cluster/7007
# mkdir -p redis_cluster/7008
# cp etc/redis.conf redis_cluster/7006

//编辑配置文件
# vim /usr/local/redis-5.0.9/redis_cluster/7006/redis.conf
//编辑内容如下:
port  7006                                        //端口7006,7007,7008        
bind redis01服务器ip                              //默认ip为127.0.0.1,需要改为节点服务器ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7006.pid          //pidfile文件对应7006,7007,7008
cluster-enabled  yes                           //开启集群
cluster-config-file  nodes_7006.conf   //集群的配置  配置文件首次启动自动生成 7006,7007,7008
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

# cp /usr/local/redis-5.0.9/redis_cluster/7006/redis.conf /usr/local/redis-5.0.9/redis_cluster/7007
//编辑配置文件
# vim /usr/local/redis-5.0.9/redis_cluster/7007/redis.conf
//编辑内容如下:
port  7007                                        //端口7006,7007,7008        
bind redis01服务器ip                              //默认ip为127.0.0.1,需要改为节点服务器ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7007.pid          //pidfile文件对应7006,7007,7008
cluster-enabled  yes                           //开启集群
cluster-config-file  nodes_7007.conf   //集群的配置  配置文件首次启动自动生成 7006,7007,7008
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

# cp /usr/local/redis-5.0.9/redis_cluster/7006/redis.conf /usr/local/redis-5.0.9/redis_cluster/7008
//编辑配置文件
# vim /usr/local/redis-5.0.9/redis_cluster/7008/redis.conf
//编辑内容如下:
port  7008                                        //端口7003,7004,7005        
bind redis01服务器ip                              //默认ip为127.0.0.1,需要改为节点服务器ip,否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                               //redis后台运行
pidfile  /var/run/redis_7008.pid          //pidfile文件对应7003,7004,7005
cluster-enabled  yes                           //开启集群
cluster-config-file  nodes_7008.conf   //集群的配置  配置文件首次启动自动生成 7003,7004,7005
cluster-node-timeout  15000                //请求超时  默认15秒,可自行设置
appendonly  yes                           //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

5、在3台服务器分别创建启动脚本

  • redis01服务器启动脚本,执行以下命令:
# cd /usr/local/redis-5.0.9
# vim start_redis.sh
//编辑内容如下:
/usr/local/redis-5.0.9/bin/redis-server /usr/local/redis-5.0.9/redis_cluster/7000/redis.conf
/usr/local/redis-5.0.9/bin/redis-server /usr/local/redis-5.0.9/redis_cluster/7001/redis.conf
/usr/local/redis-5.0.9/bin/redis-server /usr/local/redis-5.0.9/redis_cluster/7002/redis.conf

# chmod 777 start_redis.sh
  • redis02服务器启动脚本,执行以下命令:
# cd /usr/local/redis-5.0.9
# vim start_redis.sh
//编辑内容如下:
/usr/local/redis-5.0.9/bin/redis-server /usr/local/redis-5.0.9/redis_cluster/7003/redis.conf
/usr/local/redis-5.0.9/bin/redis-server /usr/local/redis-5.0.9/redis_cluster/7004/redis.conf
/usr/local/redis-5.0.9/bin/redis-server /usr/local/redis-5.0.9/redis_cluster/7005/redis.conf

# chmod 777 start_redis.sh
  • redis03服务器启动脚本,执行以下命令:
# cd /usr/local/redis-5.0.9
# vim start_redis.sh
//编辑内容如下:
/usr/local/redis-5.0.9/bin/redis-server /usr/local/redis-5.0.9/redis_cluster/7006/redis.conf
/usr/local/redis-5.0.9/bin/redis-server /usr/local/redis-5.0.9/redis_cluster/7007/redis.conf
/usr/local/redis-5.0.9/bin/redis-server /usr/local/redis-5.0.9/redis_cluster/7008/redis.conf

# chmod 777 start_redis.sh

5、启动redis服务

  • 在3台服务器分别执行以下命令:
# cd /usr/local/redis-5.0.9
# sh start_redis.sh

6、查看redis服务是否正常开启

  • 在3台服务器分别执行以下命令:
# ps -ef|grep redis

7、创建redis集群

  • 在redis01服务器,执行以下命令:
# cd /usr/local/redis-5.0.9
//编辑创建redis集群的脚本文件
# vim start_create_redis_cluster.sh
//编辑内容如下:
//如果redis访问设置了密码,则创建集群时就需要加-a参数
//--cluster-replicas 创建集群时指定slave为1个
/usr/local/redis-5.0.9/bin/redis-cli --cluster create  100.100.56.3:7000  100.100.56.3:7001  100.100.56.3:7002  100.100.56.4:7003  100.100.56.4:7004  100.100.56.4:7005  100.100.56.6:7006  100.100.56.6:7007  100.100.56.6:7008 --cluster-replicas 1 -a 123456
# chmod 777 start_create_redis_cluster.sh
//创建redis集群
# sh start_create_redis_cluster.sh
//出现如下信息。则说明创建redis集群成功
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered

三、redis集群验证

在redis01服务器上连接集群的7005端口节点,在redis03服务器连接集群的7001端口节点,连接方式为 redis-cli -h 服务器IP -c -p redis端口 -a redis访问密码

参数说明:

  • -c 表示以集群方式连接redis
  • -h 指定ip地址
  • -p 指定端口号
  • -a 指定redis访问密码

1、在redis01服务器上连接集群的7005端口节点

在redis01服务器,执行以下命令:

# cd /usr/local/redis-5.0.9/bin
# redis-cli -h 100.100.56.4 -c -p 7005 -a 123456
100.100.56.4:7005> set hello world
-> Redirected to slot [866] located at 100.100.56.3:7000
OK
100.100.56.3:7000> 

2、在redis03服务器连接集群的7001端口节点

在redis03服务器,执行以下命令:

# cd /usr/local/redis-5.0.9/bin
# redis-cli -h 100.100.56.3 -c -p 7001 -a 123456
100.100.56.3:7001> get hello
-> Redirected to slot [866] located at 100.100.56.3:7000
"world"
100.100.56.3:7000> 

3、如果步骤2中能正常获取到信息,则说明集群运作正常

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值