鲲鹏服务器Redis集群搭建

举报
鲲鹏小玩家 发表于 2020/07/17 20:18:54 2020/07/17
【摘要】 Redis是一个使用ANSI C语言编写的开源key-value内存数据库系统,Redis支持字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等数据结构类型,并提供多种语言的API。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没...

Redis是一个使用ANSI C语言编写的开源key-value内存数据库系统,Redis支持字符串(String), 哈希(Hash), 列表(list), 集合(sets)  有序集合(sorted sets)等数据结构类型,并提供多种语言的API

Redis 3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 3.0 版本以后就推出了集群模式。

Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。

由于集群至少需要6个节点(33从模式),为了节约服务器资源,本文只用了一台鲲鹏服务器进行模拟演示,和实际生产环境的集群搭建没本质区别。本文采用Redis-5.0.5版本进行,安装指导参考:https://support.huaweicloud.com/prtg-kunpengmdw/redis_01_0001.html 

1       搭建准备

华为云购买一台鲲鹏服务器

本文以云服务器KC1实例搭建,云服务器配置如表1-1所示。

 

1-1 云服务器配置

项目

说明

规格

kc1.large.2 | 2vCPUs | 4GB

磁盘

系统盘:高IO40GB

 

1-2 CentOS操作系统要求

项目

说明

下载地址

CentOS

7.6

在公共镜像中已提供。

Kernel

4.14.0-115

在公共镜像中已提供。

 

2       安装Redis

cd /opt
wget http://download.redis.io/releases/redis-4.0.9.tar.gz
tar -zxvf redis-4.0.9.tar.gz
cd redis-4.0.9
make -j4
make install

3       创建和启动多个Redis节点

Redis要求 一主一从的搭配至少要 六个节点,形成三对主从,我们需要修改配置文件,然后分别用不同的Redis配置文件启动Redis即可。

1)   创建文件夹

计划集群中 Redis 节点的端口号为 9001-9006 ,端口号即集群下各实例文件夹。数据存放在 端口号/data 文件夹中

 

mkdir /opt/redis-cluster
cd redis-cluster/
mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data

 

2)   拷贝和修改配置文件

如下操作节点9001,其他几个节点做类似操作。

cp /opt/redis-4.0.9/redis.conf /opt/redis-cluster/9001

 

修改 redis.conf 配置和单点唯一区别是下图部分,其余还是常规的这几项

 

port 9001             #每个节点的端口号
daemonize yes           # redis后台运行
bind 127.0.0.1           #默认绑定本地地址,导致其它地方不可远程访问 
bind xx.xx.xx.xx          #修改为局域网中的IP地址,其他节点可通过局域网IP访问
dir /opt/redis-cluster/9001/data/ #数据文件存放位置
pidfile /var/run/redis_9001.pid  #pid 9001和port要对应
cluster-enabled yes        #启动集群模式
cluster-config-file nodes9001.conf    #9001和port要对应
cluster-node-timeout 15000       #超时时间
appendonly yes             #开启AOF日志

 

3)   启动各个Redis节点

redis-server /opt/redis-cluster/9001/redis.conf
redis-server /opt/redis-cluster/9002/redis.conf
redis-server /opt/redis-cluster/9003/redis.conf
redis-server /opt/redis-cluster/9004/redis.conf
redis-server /opt/redis-cluster/9005/redis.conf
redis-server /opt/redis-cluster/9006/redis.conf

 

可以检查一下是否启动成功:ps -el | grep redis

4       搭建集群

 

redis-cli –cluster create xx.xx.xx.xx:9001 xx.xx.xx.xx:9002 xx.xx.xx.xx:9003 xx.xx.xx.xx:9004 xx.xx.xx.xx:9005 xx.xx.xx.xx:9006 --cluster-replicas 1
redis-cli --cluster help #查看操作集群的命令帮助

 

说明:

(1)--replicas 1 表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及 solt 的大小,因为在 Redis 集群中有且仅有 16383 solt ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。

(2) 搭建Redis集群的教程很多,介绍的也很全面,但是大多数 还是使用Ruby脚本的版本,安装Ruby本身也不是一件简单的事情,redis-5.0.0之后已经将 redis-trib.rb 脚本的功能全部集成到 redis-cli之中了

5       测试集群

1)         依然是通过客户端命令连接上,通过集群命令看一下状态和节点信息等。

/usr/local/redis-cluster/bin/redis-cli -c -h 192.168.119.131 -p 9001
cluster info
cluster nodes

通过命令,可以详细的看出集群信息和各个节点状态,主从信息以及连接数、槽信息等。

2)         设置操作

当我们 set a hello时,出现了 Redirected to slot 信息并自动连接到了9003节点。这也是集群的一个数据分配特性

进行 读写操作时会根据 key计算出的slot,重新定位到 拥有该slot的节点,执行对应的命令。只有 Master节点拥有 slot,读写都在 Master 节点进行

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。