redis伪集群部署

今天要部署一个redis伪分布式的集群,因为所有的redis实例都在一台机器上,只是他们的端口不同。

首先了解redis是什么

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如

下:

字符串类型

散列类型

列表类型

集合类型

有序集合类型。

系统的环境是centos7.3 64位

首先是下载redis3.0版本,3.0版本有集群的功能。

安装redis前需要安装gcc:yum install gcc-c++,因为redis的源码编译依赖gcc环境。

把下载好的redis-3.0.0.tar.gz拷贝到/usr/local下。


单机版

解压源码

tar –zxf redis-3.0.0.tar.gz


进入解压后的目录进行编译

cd /usr/local/redis-3.0.0

make


安装到指定的目录如/usr/local/redis

cd /usr/local/redis-3.0.0

make install PREFIX=/usr/local/redis

 

redis.conf是redis的配置文件,redis.conf在redis源码目录下,默认指定的端口是6379

现在需要拷贝一份redis.conf到安装目录下

cp /usr/local/redis-3.0.0/redis.conf  /usr/local/redis/bin

 

进入/usr/local/redis/bin下看有哪些文件:

redis-server                       redis服务器

redis-cli                               redis命令行客户端

redis-benchmark               redis性能测试工具

redis-check-aof                  aof文件修复工具

redis-check-dump             RDB文件检查工具

redis-sentinel                     redis集群管理工具

 

后端模式启动(推荐使用,前端模式启动就不说了)

需要修改redis.conf 文件中的daemonize yes

执行下面的命令

cd /usr/local/redis/bin

./redis.server ./redis.conf

查看是否启动

ps aux|grep redis

 

伪集群部署

redis集群管理工具redis-trib.rb依赖ruby环境,首先需要安装ruby环境:

 

安装ruby

yum install ruby

yum install rubygems

 

安装ruby和redis的接口程序

拷贝redis-3.0.0.gem至/usr/local下

执行:

gem install /usr/local/redis-3.0.0.gem

 

这里用6个reids实例,端口7001-7006.

在/usr/local下创建redis-cluster目录,并创建7001,7002,7003,7004,7005,7006目录,并把将redis安装目录bin下的文件拷贝到每个700X目录内,同时将redis源码目录src下的redis-trib.rb拷贝到redis-cluster目录下。

 

修改每一个700X目录下的redis.conf 配置文件

 

port 7001

# bind 集群机ip

Cluster-enabled yes

 

启动每一个redis节点服务

./redis-server ./redis.conf

 

查看

ps aux |grep redis

执行创建集群命令

执行redis-trib.rb

./redis-trib.rb create --replicas 1 192.168.101.3:7001 192.168.101.3:7002192.168.101.3:7003 192.168.101.3:7004 192.168.101.3:7005  192.168.101.3:7006

 

说明:

redis集群至少需要3个主节点,每个主节点有一个从节点总共6个节点

replicas指定为1表示每个主节点有一个从节点

 

 

注意:

如果执行时报如下错误:

[ERR]Node XXXXXX is not empty. Either the node already knows other nodes (check withCLUSTER NODES) or contains some key in database 0

解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb。

 

还有的是

./redis-trib.rb create --replicas 1XXXX:PORT1 XXXX:PORT2 ....

的时候

一直等待 Waiting for the cluster to join 很久都没有反应

原因:

redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口

集群总线端口为redis客户端连接的端口 + 10000

如redis端口为6379

则集群总线端口为16379

故,所有服务器的点需要开通redis的客户端连接端口和集群总线端口

注意:iptables 放开,如果有安全组,也要放开这两个端口。

上面没有开放总线端口浪费我好几个小时。

 

创建集群输出如下:

>>> Creating cluster

Connecting to node 192.168.101.3:7001: OK

Connecting to node 192.168.101.3:7002: OK

Connecting to node 192.168.101.3:7003: OK

Connecting to node 192.168.101.3:7004: OK

Connecting to node 192.168.101.3:7005: OK

Connecting to node 192.168.101.3:7006: OK

>>> Performing hash slotsallocation on 6 nodes...

Using 3 masters:

192.168.101.3:7001

192.168.101.3:7002

192.168.101.3:7003

Adding replica 192.168.101.3:7004 to192.168.101.3:7001

Adding replica 192.168.101.3:7005 to192.168.101.3:7002

Adding replica 192.168.101.3:7006 to192.168.101.3:7003

M: cad9f7413ec6842c971dbcc2c48b4ca959eb5db4192.168.101.3:7001

  slots:0-5460 (5461 slots) master

M: 4e7c2b02f0c4f4cfe306d6ad13e0cfee90bf5841192.168.101.3:7002

  slots:5461-10922 (5462 slots) master

M: 1a8420896c3ff60b70c716e8480de8e50749ee65192.168.101.3:7003

  slots:10923-16383 (5461 slots) master

S: 69d94b4963fd94f315fba2b9f12fae1278184fe8192.168.101.3:7004

  replicates cad9f7413ec6842c971dbcc2c48b4ca959eb5db4

S: d2421a820cc23e17a01b597866fd0f750b698ac5192.168.101.3:7005

  replicates 4e7c2b02f0c4f4cfe306d6ad13e0cfee90bf5841

S: 444e7bedbdfa40714ee55cd3086b8f0d5511fe54192.168.101.3:7006

  replicates 1a8420896c3ff60b70c716e8480de8e50749ee65

Can I set the above configuration? (type'yes' to accept): yes

>>> Nodes configuration updated

>>> Assign a different configepoch to each node

>>> Sending CLUSTER MEET messagesto join the cluster

Waiting for the cluster to join...

>>> Performing Cluster Check(using node 192.168.101.3:7001)

M: cad9f7413ec6842c971dbcc2c48b4ca959eb5db4192.168.101.3:7001

  slots:0-5460 (5461 slots) master

M: 4e7c2b02f0c4f4cfe306d6ad13e0cfee90bf5841192.168.101.3:7002

  slots:5461-10922 (5462 slots) master

M: 1a8420896c3ff60b70c716e8480de8e50749ee65192.168.101.3:7003

  slots:10923-16383 (5461 slots) master

M: 69d94b4963fd94f315fba2b9f12fae1278184fe8192.168.101.3:7004

  slots: (0 slots) master

  replicates cad9f7413ec6842c971dbcc2c48b4ca959eb5db4

M: d2421a820cc23e17a01b597866fd0f750b698ac5192.168.101.3:7005

  slots: (0 slots) master

  replicates 4e7c2b02f0c4f4cfe306d6ad13e0cfee90bf5841

M: 444e7bedbdfa40714ee55cd3086b8f0d5511fe54192.168.101.3:7006

  slots: (0 slots) master

  replicates 1a8420896c3ff60b70c716e8480de8e50749ee65

[OK] All nodes agree about slotsconfiguration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

 

测试集群

[root@bogon redis-cluster]# 7001/bin/redis-cli-h 192.168.25.153 -p 7002 -c

 

 

[root@bogon redis-cluster]# 7001/bin /redis-cli-h 192.168.25.153 -p 7002

192.168.25.153:7002> set a 100

(error) MOVED 15495 192.168.25.153:7003

192.168.25.153:7002>

[root@bogon redis-cluster]# 7001/bin /redis-cli-h 192.168.25.153 -p 7002 -c

192.168.25.153:7002> set a 100

-> Redirected to slot [15495] located at192.168.25.153:7003

OK

192.168.25.153:7003>

 

关闭redis

 

7001/bin/redis-cli –p 7001 shutdown

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值