linux搭建完redis集群后连接不上,Redis集群安装

Redis cluster是分布式集群,支持横向扩展,Redis从V3.0版本后才支持集群功能。Redis集群的工作原理类似于磁盘的raid5。

多个redis节点网络互联,数据共享

所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用

不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为。

支持在线增加、删除节点

客户端可以连任何一个主节点进行读写

cc33493b25c727ce743100ce90ca14e3.png

Redis集群搭建

机器准备:

两台机器,分别开启三个Redis服务(端口)

A机器上三个端口:7000、7002、7004,全部为主

B机器上三个端口:7001、7003、7005,全部为从

两台机器上都要编译安装Redis,然后编译并复制三个不同的Redis.conf,分别设置不同的端口号、dir等参数,还需要增加cluster相关参数,然后分别启动6个Redis服务

master (IP:192.168.3.74)

1、安装查看redis安装

2、[root@centos7 redis-4.0.2]# vi /etc/redis_7000.conf

port 7000

bind 192.168.3.74

daemonize yes

logfile "/data/logs/redis/redis_7000.log"

pidfile /var/run/redis_7000.pid

dir /data/redis_data/7000

cluster-enabled yes

##开启cluster功能

cluster-config-file nodes_7000.conf

##该配置文件可以在dir目录下自动生成

cluster-node-timeout 10100

appendonly yes

3、vi /etc/redis_7002.conf

port 7002

bind 192.168.3.74

daemonize yes

logfile "/data/logs/redis/redis_7002.log"

pidfile /var/run/redis_7002.pid

dir /data/redis_data/7002

cluster-enabled yes

##开启cluster功能

cluster-config-file nodes_7002.conf

##该配置文件可以在dir目录下自动生成

cluster-node-timeout 10100

appendonly yes

4、vi /etc/redis_7004.conf

port 7004

bind 192.168.3.74

daemonize yes

logfile "/data/logs/redis/redis_7004.log"

pidfile /var/run/redis_7004.pid

dir /data/redis_data/7004

cluster-enabled yes

##开启cluster功能

cluster-config-file nodes_7004.conf

##该配置文件可以在dir目录下自动生成

cluster-node-timeout 10100

appendonly yes

5、新建dir、log目录

[root@centos7 redis-4.0.2]# mkdir /data/redis_data

[root@centos7 redis-4.0.2]# mkdir /data/redis_data/{7000,7002,7004}

[root@centos7 redis-4.0.2]# mkdir -p /data/logs/redis

6、依次启动Redis服务7000,7002,7004:

[root@centos7 ~]# redis-server /etc/redis_7000.conf

[root@centos7 ~]# redis-server /etc/redis_7002.conf

[root@centos7 ~]# redis-server /etc/redis_7004.conf

[root@centos7 ~]# ps -ef | grep redis

#必须含有cluster这样的字段,才表示集群服务已开启

root 41532 1 0 16:16 ? 00:00:00 redis-server 192.168.3.74:7000 [cluster]

root 41537 1 0 16:16 ? 00:00:00 redis-server 192.168.3.74:7002 [cluster]

root 41544 1 0 16:17 ? 00:00:00 redis-server 192.168.3.74:7004 [cluster]

7、验证

[root@centos7 ~]# redis-cli -h 192.168.3.74 -p 7000

slave(IP:192.168.3.75)

1、和master一样安装好redis服务

[root@centos7-2 redis-4.0.2]# vi /etc/redis_7001.conf

port 7001

bind 192.168.3.75

daemonize yes

logfile "/data/logs/redis/redis_7001.log"

pidfile /var/run/redis_7001.pid

dir /data/redis_data/7001

cluster-enabled yes

cluster-config-file nodes_7001.conf

cluster-node-timeout 15000

appendonly yes

2、[root@centos7-2 redis-4.0.2]# vi /etc/redis_7003.conf

port 7003

bind 192.168.3.75

daemonize yes

pidfile /var/run/redis_7003.pid

dir /data/redis_data/7003

cluster-enabled yes

cluster-config-file nodes_7003.conf

cluster-node-timeout 15000

appendonly yes

3、[root@centos7-2 redis-4.0.2]# vi /etc/redis_7005.conf

port 7005

bind 192.168.3.75

daemonize yes

pidfile /var/run/redis_7005.pid

dir /data/redis_data/7005

cluster-enabled yes

cluster-config-file nodes_7005.conf

cluster-node-timeout 15000

appendonly yes

4、新建dir、log目录

[root@centos7-2 redis-4.0.2]# mkdir /data/redis_data

[root@centos7-2 redis-4.0.2]# mkdir /data/redis_data/{7001,7003,7005}

[root@centos7-2 redis-4.0.2]# mkdir -p /data/logs/redis

5、启动

[root@centos7-2 ~]# redis-server /etc/redis_7001.conf

[root@centos7-2 ~]# redis-server /etc/redis_7003.conf

[root@centos7-2 ~]# redis-server /etc/redis_7005.conf

[root@centos7-2 ~]# ps -ef | grep redis

root 73344 1 0 15:52 ? 00:00:00 redis-server 192.168.3.75:7001 [cluster]

root 73350 1 0 15:52 ? 00:00:00 redis-server 192.168.3.75:7003 [cluster]

root 73361 1 0 15:52 ? 00:00:00 redis-server 192.168.3.75:7005 [cluster]

6、验证

[root@centos7-2 ~]# redis-cli -h 192.168.3.75 -p 7001

安装Ruby v2.2(master)

Redis集群需要ruby的支持,需要先安装ruby(Ruby只需在一台机器上运行)。Redis4.0需要使用Ruby2.2,安装方法如下(因为本机自带的是2.0版本的ruby,所以需要使用如下方法把源码包包制作成yum安装包,然后借助yum工具安装ruby2.2——升级ruby版本):

安装yum开发工具组

[root@centos7 ~]# yum -y groupinstall "Development Tools"

升级库文件

yum -y install gdbm-devel libdb4-devel libffi-devel libyaml libyaml-devel ncurses-devel openssl-devel readline-devel tcl-devel

创建制作rpm包的目录:

cd /root/

[root@centos7 ~]# mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

制作rpm包:

#此处有点时间

rpmbuild -bb rpmbuild/SPECS/ruby22x.spec

7a2d32b307266d2edb6fa68465600a63.png

安装Ruby2.2:

[root@centos7 ~]# yum -y localinstall rpmbuild/RPMS/x86_64/ruby-2.2.3-1.el7.centos.x86_64.rpm

[root@centos7 ~]# ruby -v

ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]

ruby 2.2安装完毕!

配置集群

安装Redis配置集群的工具:

1、[root@centos7 ~]# gem install redis

9f42dbfe9aa4a5b2c2c8d317bd1163c3.png

2、将命令redis-trib.rb加入环境变量目录下:

[root@centos7 ~]# cp /data/package/redis-4.0.2/src/redis-trib.rb /usr/bin/

3、连接启动

[root@centos7 ~]# redis-trib.rb create --replicas 1 192.168.3.74:7000 192.168.3.74:7002 192.168.3.74:7004 192.168.3.75:7001 192.168.3.75:7003 192.168.3.75:7005

6535b37bb38776ec2e2166c0d8060c5e.png

22a680438f18411ca3ad46087348b329.png

#注意:redis-trib.rb create --replicas 1 表示一个master对应几个slave,此处的参数“1”表示master和slave一一对应

Redis集群配置完成!

Redis集群操作

因为Redis集群是分布式结构,所以可以连接任何一个端口。

1、[root@centos7 ~]# redis-cli -c -h 192.168.3.74 -p 7000

-c == cluster 表示已集群方式连接

2、创建数据:

192.168.3.74:7000> set cluster1 jacktest

-> Redirected to slot [8483] located at 192.168.3.75:7001

OK

##该操作会被重定向到192.168.3.75:7001

192.168.3.75:7001> set cluster2 test7000

-> Redirected to slot [4416] located at 192.168.3.74:7000

OK

又重定向到了7000端口

在主或者从上创建key建的话,从上都会有记录查到

集群相关的操作

查看集群的状态:

[root@centos7 ~]# redis-trib.rb check 192.168.3.74:7000

可以查看谁是主谁是从

列出节点:

192.168.3.74:7000>cluster nodes

查看集群信息:

192.168.3.74:7000> cluster info

添加节点(执行该操作前先在slave创建redis_7007.conf并启动):

[root@centos7-2 ~]# ps -ef | grep redis

root 73344 1 0 15:52 ? 00:00:03 redis-server 192.168.3.75:7001 [cluster]

root 73350 1 0 15:52 ? 00:00:03 redis-server 192.168.3.75:7003 [cluster]

root 73361 1 0 15:52 ? 00:00:03 redis-server 192.168.3.75:7005 [cluster]

root 77120 1 0 16:36 ? 00:00:00 redis-server 192.168.3.75:7007 [cluster]

添加7007节点

193.192.168.3.74:7000> cluster meet 192.168.3.74 7007

OK

可以看出是个主节点

193.192.168.3.75:7000> cluster nodes

a2ca174857183c038bd631a2c4a2baee6dad4025 192.168.3.75:7007@17007 master - 0 1513068550000 0 connected

使用以上方式添加的新节点都是以master身份存在!

将当前节点设置为指定节点的从:

[root@centos7 ~]# redis-server /etc/redis_7006.conf

[root@centos7 ~]# ps -ef | grep redis

root 41532 1 0 16:16 ? 00:00:02 redis-server 192.168.3.74:7000 [cluster]

root 41537 1 0 16:16 ? 00:00:02 redis-server 192.168.3.74:7002 [cluster]

root 41544 1 0 16:17 ? 00:00:02 redis-server 192.168.3.74:7004 [cluster]

root 41762 1 0 16:43 ? 00:00:00 redis-server 192.168.3.74:7006 [cluster]

再添加7006

192.168.3.74:7000> cluster meet 192.168.3.74 7006

28cd13787419a0f211998b47b26540448672a94b 192.168.3.74:7006@17006 master - 0 1513068625434 0 connected

先更换到要设置的节点:

[root@centos7 ~]# redis-cli -c -h 192.168.3.74 -p 7006

192.168.3.74:7006> cluster replicate a2ca174857183c038bd631a2c4a2baee6dad4025

OK

查看

192.168.3.74:7006> cluster nodes

a2ca174857183c038bd631a2c4a2baee6dad4025 192.168.3.75:7007@17007 master - 0 1513068746626 0 connected

28cd13787419a0f211998b47b26540448672a94b 192.168.3.74:7006@17006 myself,slave a2ca174857183c038bd631a2c4a2baee6dad4025 0 1513068743000 7 connected

移除某节点:(不能移动主节点和当前登录的节点)

移除了7006节点

[root@centos7 ~]# redis-cli -c -h 192.168.3.74 -p 7000

192.168.3.74:7000> cluster forget 28cd13787419a0f211998b47b26540448672a94b

OK

保存当前配置:

192.168.3.74:7000> CLUSTER SAVECONFIG

OK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值