一、单节点部署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官网Redis下载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、服务器集群

linux下如何确认redis集群和哨兵都启动成功 linux查看redis集群_redis集群

    三个节点都关闭防火墙:

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下面

linux下如何确认redis集群和哨兵都启动成功 linux查看redis集群_redis_02

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(替换成对应的密码)