一、单节点部署redis集群
1、创建redis集群目录
在同一个主机中部署三主三从的redis集群,redis节点为7001-7006。
新建redis集群目录:mkdir -p /usr/local/redis-cluster,在该目录下创建6个目录:7001-7006,分别为6个redis节点的工作目录:
mkdir -p 7001 7002 7003 7004 7005 7006
2、安装gcc
redis进行源码安装,先要安装gcc,再make redis。执行以下命令安装redis:
yum -y install gcc gcc-c++ libstdc++-devel
3、安装ruby
执行以下命令安装ruby2.5,如果ruby版本过低,无法启动redis集群。
yum install -y centos-release-scl-rh yum install -y rh-ruby25 scl enable rh-ruby25 bash
检验并查看ruby版本:
ruby -v
最后执行如下命令:
gem install redis
4、下载并安装redis节点
从redis官网https://redis.io/下载redis最新版本redis-4.0.11。
解压redis:
tar -zxvf redis-4.0.11.tar.gz
创建redis安装目录:
mkdir -p /usr/local/redis
进入解压后的redis-4.0.11目录,执行make命令,将redis安装进/usr/local/redis:
make install PREFIX=/usr/local/redis
将redis配置文件redis.conf复制到集群目录下:
cp redis.conf /usr/local/redis-cluster
将redis安装后的bin目录复制进6个redis节点工作目录中:
cp -r /usr/local/redis/bin /usr/local/redis-cluster/7001 cp -r /usr/local/redis/bin /usr/local/redis-cluster/7002 cp -r /usr/local/redis/bin /usr/local/redis-cluster/7003 cp -r /usr/local/redis/bin /usr/local/redis-cluster/7004 cp -r /usr/local/redis/bin /usr/local/redis-cluster/7005 cp -r /usr/local/redis/bin /usr/local/redis-cluster/7006
最后配置6个节点的配置文件redis.conf,配置修改如下:
#bind 127.0.0.1 protected-mode no daemonize yes cluster-enabled yes cluster-node-timeout 15000
屏蔽限制本地访问,在bind 127.0.0.1之前加#(同机器下,可能不需要改,未做测试)。
将redis.conf文件复制进7001-7006中:
cp redis.conf 7001 cp redis.conf 7002 cp redis.conf 7003 cp redis.conf 7004 cp redis.conf 7005 cp redis.conf 7006
分别修改6个节点中的redis.conf中的port端口配置,分别配置成7001-7006。
配置好redis.conf后,便可以启动6个redis节点,分别在6个节点目录下执行如下命令启动6个节点:
./bin/redis-server ./redis.conf
执行ps -ef|grep redis可查看启动的6个节点。
5、启动redis集群
进入最开始解压出来的redis-4.0.11/src目录下,执行如下命令启动集群:
./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
6、验证集群
进入任一redis节点,如进入7001节点:
进入7001目录:
cd /usr/local/redis-cluster/7001
登录7001节点:
./bin/redis-cli -c -p 7001
写入一个数据:
set redis cluster
之后进入其他节点,查看redis中的数据,如登录7005节点:
./bin/redis-cli -c -p 7005
查看redis数据:
get redis
二、多节点部署redis集群
1、服务器集群
三个节点都关闭防火墙:
chkconfig iptables off systemctl stop iptables systemctl disable iptables systemctl stop firewalld systemctl disable firewalld
查看防火墙状态:
systemctl status iptables systemctl status firewalld
2、安装gcc
如上。
3、安装ruby
如上。
4、配置redis节点
(1)、node-i(192.168.0.111)
(a).安装redis
创建redis目录:
mkdir -p /usr/local/redis-i mkdir -p /usr/local/redis-cluster/7001 /usr/local/redis-cluster/7002
解压redis:
tar -zxvf redis-4.0.11.tar.gz
进入redis-4.0.11目录,执行make命令,将redis安装在/usr/local/redis-i目录下:
make install PREFIX=/usr/local/redis-i
复制redis.conf到redis集群节点目录下:
cp redis.conf /usr/local/redis-cluster/7001 cp redis.conf /usr/local/redis-cluster/7002
进入/usr/local/redis-i目录,将生成的 bin目录复制到redis集群节点目录下:
cp -r bin /usr/local/redis-cluster/7001 cp -r bin /usr/local/redis-cluster/7002
分别修改节点7001、7002的配置文件redis.conf,修改如下:
7001:
bind 192.168.0.111 protected-mode no port 7001 daemonize yes cluster-enabled yes cluster-node-timeout 15000
7002:
bind 192.168.0.111 protected-mode no port 7002 daemonize yes cluster-enabled yes cluster-node-timeout 15000
(b).启动redis节点
分别启动7001和7002节点:
分别在/usr/local/redis-cluster/7001和/usr/local/redis-cluster/7002目录,执行如下命令:
./bin/redis-server ./redis.conf
通过ps命令查看启动的redis节点:
ps -ef|grep redis
(2)、node-ii(192.168.0.133)
(a).安装redis
创建redis目录:
mkdir -p /usr/local/redis-ii mkdir -p /usr/local/redis-cluster/7003 /usr/local/redis-cluster/7004
解压redis:
tar -zxvf redis-4.0.11.tar.gz
进入redis-4.0.11目录,执行make命令,将redis安装在/usr/local/redis-ii目录下:
make install PREFIX=/usr/local/redis-ii
复制redis.conf到redis集群节点目录下:
cp redis.conf /usr/local/redis-cluster/7003 cp redis.conf /usr/local/redis-cluster/7004
进入/usr/local/redis-ii目录,将生成的 bin目录复制到redis集群节点目录下:
cp -r bin /usr/local/redis-cluster/7003 cp -r bin /usr/local/redis-cluster/7004
分别修改节点7003、7004的配置文件redis.conf,修改如下:
7003:
bind 192.168.0.133 protected-mode no port 7003 daemonize yes cluster-enabled yes cluster-node-timeout 15000
7004:
bind 192.168.0.133 protected-mode no port 7004 daemonize yes cluster-enabled yes cluster-node-timeout 15000
(b).启动redis节点
分别启动7003和7004节点:
分别在/usr/local/redis-cluster/7003和/usr/local/redis-cluster/7004目录,执行如下命令:
./bin/redis-server ./redis.conf
通过ps命令查看启动的redis节点:
ps -ef|grep redis
(3)、node-iii(192.168.0.155)
(a).安装redis
创建redis目录:
mkdir -p /usr/local/redis-iii mkdir -p /usr/local/redis-cluster/7005 /usr/local/redis-cluster/7006
解压redis:
tar -zxvf redis-4.0.11.tar.gz
进入redis-4.0.11目录,执行make命令,将redis安装在/usr/local/redis-iii目录下:
make install PREFIX=/usr/local/redis-iii
复制redis.conf到redis集群节点目录下:
cp redis.conf /usr/local/redis-cluster/7005 cp redis.conf /usr/local/redis-cluster/7006
进入/usr/local/redis-iii目录,将生成的 bin目录复制到redis集群节点目录下:
cp -r bin /usr/local/redis-cluster/7005 cp -r bin /usr/local/redis-cluster/7006
分别修改节点7005、7006的配置文件redis.conf,修改如下:
7005:
bind 192.168.0.155 protected-mode no port 7005 daemonize yes cluster-enabled yes cluster-node-timeout 15000
7006:
bind 192.168.0.155 protected-mode no port 7006 daemonize yes cluster-enabled yes cluster-node-timeout 15000
(b).启动redis节点
分别启动7005和7006节点:
分别在/usr/local/redis-cluster/7005和/usr/local/redis-cluster/7006目录,执行如下命令:
./bin/redis-server ./redis.conf
通过ps命令查看启动的redis节点:
ps -ef|grep redis
5、启动redis集群
以上步骤完成,6个redis节点都已经启动完成。现在启动redis集群,在任一服务器上都可以启动集群,进入最开始解压出来的redis-4.0.11目录的src子目录,执行如下命令启动redis集群:
./redis-trib.rb create --replicas 1 192.168.0.111:7001 192.168.0.111:7002 192.168.0.133:7003 192.168.0.133:7004 192.168.0.155:7005 192.168.0.155:7006
6、验证集群
从任一主机进入任一redis节点,如从192.168.0.111主机中进入7001节点:
进入7001目录:
cd /usr/local/redis-cluster/7001
登录7001节点:
./bin/redis-cli -c -h 192.168.0.111 -p 7001
写入一个数据:
set redis cluster
之后进入其他节点,查看redis中的数据,如登录7005节点:
./bin/redis-cli -c -h 192.168.0.155 -p 7005
查看redis数据:
get redis
三、第一次搭建启动集群 或者集群宕机后,再次重启遇到的问题总结
redis启动的命令放在/data/redis-4.0.11下面
startredis6379.sh 内容如下:
/xxx/redis-4.xxx/src/redis-server ./redis6379.conf
startredis7379.sh 内容如下:
/xxx/redis-4.xxx/src/redis-server ./redis7379.conf
redis集群启动步骤:
1、启动6379节点 startredis6379.sh
2、启动7379节点 startredis7379.sh
3、启动集群:startcluster.sh
集群启动失败归类:
1、如果提示失败如下:
[ERR] Sorry, can't connect to node xxx.xx.xx.xx:6379
原因:原因是因为6379节点没有启动,就先启动集群了
解决:先启动6379节点
2、如果提示失败如下:
[ERR] Node xxx.xx.xx.xx:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
原因:data文件夹下面的nodes-6379.conf里面已经绑定了主从关系,
nodes-6379.conf内容如下:
b01a658979a9eeffda2e4a806855d9d3efe54382 xxx.xx.xx.95:7379@17379 slave aca67d99d9268dcf0de06424f60a478a9c8a5cdc 0 1586262980000 4 connected 64dd6ff244534f2759234f449cf64c6d766027c1 xxx.xx.xx.95:6379@16379 slave f65f3c8d913bc26813926af87912273481427db3 0 1586262980000 7 connected aca67d99d9268dcf0de06424f60a478a9c8a5cdc xxx.xx.xx.94:6379@16379 master - 0 1586262978000 2 connected 5461-10922 6310b8d913946e4456c9013e8476e93c7aa2d5f2 xxx.xx.xx.94:7379@17379 slave d778fa046ab0a1c01225fea0a3762b876fe9dbdc 0 1586262980000 6 connected f65f3c8d913bc26813926af87912273481427db3 xxx.xx.xx.93:7379@17379 master - 0 1586262980418 7 connected 10923-16383 d778fa046ab0a1c01225fea0a3762b876fe9dbdc xxx.xx.xx.93:6379@16379 myself,master - 0 1586262980000 1 connected 0-5460 vars currentEpoch 7 lastVoteEpoch 7
解决:将nodes-6379.conf去掉即可(比如将data重命名为data1)(启动集群时会检测,如果不存在该文件,自动生成一份新的)
搭建过程中注意的问题:
3、记得redis.conf中的密码
1)requirepass xxx
2)masterauth xxx
4、 启动集群的两种方式:
redis老版本实用这种方式
/opt/redis-4.0.11/src/redis-trib.rb create –replicas 1 xxx.xx.xx.xx:6379 xxx.xx.xx.xx:6379 xxx.xx.xx.xx:6379 xxx.xx.xx.xx:7379 xxx.xx.xx.xx:7379 xxx.xx.xx.xx:7379
redis新版本实用
/usr/local/redis/bin/redis-cli –cluster create xxx.xx.xx.xx:6379 xxx.xx.xx.xx:6379 xxx.xx.xx.xx:6379 xxx.xx.xx.xx:7379 xxx.xx.xx.xx:7379 xxx.xx.xx.xx:7379 –cluster-replicas 1 -a password(替换成对应的密码)
参考博客:https://blog.csdn.net/sealir/article/details/82669813
原文链接:https://blog.csdn.net/u011159417/article/details/103408425
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/7164