热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux运维、架构之路redis集群

一、介绍rediscluster3.0之后的功能,至少需要3(Master)+3(Slave)才能建立集群,是无中心的分布式存储架构,可以在多个节点之间进行数据共享,解决了Redi

一、介绍

           redis cluster 3.0之后的功能,至少需要3(Master)+3(Slave)才能建立集群,是无中心的分布式存储架构,可以在多个节点之间进行数据共享,解决了Redis高可用、可扩展等问题。

二、安装部署

1、环境

[root@redsi ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@redsi ~]# uname -r
2.6.32-696.el6.x86_64
[root@redsi ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@redsi ~]# getenforce 
Disabled
[root@redsi ~]# hostname -I
10.0.0.2

2、redis cluster是基于上一篇博文已经安装好的redis

①创建集群节点目录

mkdir /usr/local/redis-cluster/{9001..9006}/data -p
[root@redsi redis-cluster]# ll /usr/local/redis-cluster/
total 28
drwxr-xr-x 5 root root 4096 2018-05-16 17:17 9001
drwxr-xr-x 5 root root 4096 2018-05-16 14:23 9002
drwxr-xr-x 5 root root 4096 2018-05-16 14:24 9003
drwxr-xr-x 5 root root 4096 2018-05-16 14:28 9004
drwxr-xr-x 5 root root 4096 2018-05-16 14:30 9005
drwxr-xr-x 5 root root 4096 2018-05-16 14:34 9006
drwxr-xr-x 2 root root 4096 2018-05-16 14:54 bin

②创建命令目录

mkdir /usr/local/redis-cluster/bin -p
cd /server/tools/redis-3.2.8/src
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin

③创建一个redis实例

cp -a /usr/local/redis/* /usr/local/redis-cluster/9001/

修改redis.conf配置文件

port 9001                                #每个节点的端口号
daemonize yes
bind 10.0.0.2                            #绑定当前机器 IP
dir /usr/local/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

④再创建其它5个redis实例

cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9002
cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003
cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004
cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005
cp -a /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006

再依次修改redis.conf配置文件

port 9001                                #修改以下4处,依次改为9002、9003、9004、9005、9006
dir /usr/local/redis-cluster/9001/data/  
pidfile /var/run/redis_9001.pid         
cluster-config-file nodes9001.conf       

###到此为止基础环境已准备好###

三、安装完ruby环境

###直接执行gem install redis时,报错###

gem install redis  
    ERROR:  Error installing redis:  
            redis requires Ruby version >= 2.2.2.  

①安装安装RVM

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3  
curl -L get.rvm.io | bash -s stable  
find / -name rvm -print  

②查看rvm库中已知的ruby版本

rvm list known 

③安装一个ruby版本

rvm install 2.3.3 

④使用一个ruby版本

rvm use 2.3.3  

⑤设置默认版本

rvm use 2.3.3 --default 

⑥卸载一个已知版本

rvm remove 2.0.0

⑦安装redis

gem install redis 

⑧查看ruby版本

ruby --version 

四、集群搭建

1、启动六个节点的redis

redis-server /usr/local/redis-cluster/9001/redis.conf 
redis-server /usr/local/redis-cluster/9002/redis.conf 
redis-server /usr/local/redis-cluster/9003/redis.conf 
redis-server /usr/local/redis-cluster/9004/redis.conf 
redis-server /usr/local/redis-cluster/9005/redis.conf 
redis-server /usr/local/redis-cluster/9006/redis.conf
###查看进程###
[root@redsi ~]# ps aux|grep redis
root       2441  0.1  0.9 135592  9788 ?        Ssl  08:28   0:21 redis-server 10.0.0.2:9001 [cluster]                
root       2445  0.1  0.9 135592  9800 ?        Ssl  08:29   0:20 redis-server 10.0.0.2:9002 [cluster]                
root       2449  0.1  0.9 135592  9792 ?        Ssl  08:29   0:21 redis-server 10.0.0.2:9003 [cluster]                
root       2453  0.1  0.7 133544  7728 ?        Ssl  08:29   0:21 redis-server 10.0.0.2:9004 [cluster]                
root       2457  0.1  0.9 135592  9808 ?        Ssl  08:29   0:20 redis-server 10.0.0.2:9005 [cluster]                
root       2461  0.1  0.9 135592  9784 ?        Ssl  08:29   0:20 redis-server 10.0.0.2:9006 [cluster]

2、创建集群

/usr/local/redis-cluster/bin/redis-trib.rb create --replicas 1 10.0.0.2:9001 10.0.0.2:9002 10.0.0.2:9003 10.0.0.2:9004 10.0.0.2:9005 10.0.0.2:9006

技术分享图片

###命令说明###

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

###输入yes后开始创建集群###

技术分享图片

###如上图所示,集群创建成功###

3、集群验证

①使用客户端命令连接集群节点

[root@redsi ~]# redis-cli -h 10.0.0.2 -c -p 9001
10.0.0.2:9001> set name lulu
-> Redirected to slot [5798] located at 10.0.0.2:9002  #自动连接到了9002节点,这是集群的一个数据分配特性
OK
10.0.0.2:9002> get name
"lulu"

②连接其它节点验证

[root@redsi ~]# redis-cli -h 10.0.0.2 -c -p 9003
10.0.0.2:9003> get name
-> Redirected to slot [5798] located at 10.0.0.2:9002
"lulu"

###至此,redis集群搭建完毕###

linux运维、架构之路-redis集群


推荐阅读
  • UDP协议开发
    UDP是用户数据报协议(UserDatagramProtocol,UDP)的简称,其主要作用是将网络数据流量压缩成数据报形式,提供面向事务的简单信息传送服务。与TCP协议不同,UD ... [详细]
  • rbac 4表 常规设计
    rbac4表常规设计设计模型:1、管理员表(users)Schema::create('users',function(Blueprint$table){$tabl ... [详细]
  • packagetest;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOE ... [详细]
  • 安全3AAuthentication:认证Authorzation:授权Accouting|Audition:审计用户管理用户:UID:0,不一定是root,root的uid非0时 ... [详细]
  • AsyncDisplayKit2.0教程(下)
    AsyncDisplayKit2.0Tutorial:AutomaticLayout原文:AsyncDisplayKit2.0Tutorial:Automatic ... [详细]
  • Linux文件目录和权限
    Linux文件目录和权限前言:Linux一般将文件可存取的身份分为三个类别,分别是ownergroupothers,根据权限划分,每个目录都可以拥有相对身份的-rwx[可读可写可执 ... [详细]
  • 1011-MarriageCeremoniesPDF(English)StatisticsForumTimeLimit:2second(s)MemoryLimit:32MBYouw ... [详细]
  • 【自制小工具】代码生成器
    【自制小工具】代码生成器陆陆续续接触过好几款代码生成工具,发现确实好用,但都会有那么点不完善的地方,所以索性就自己做一个吧。界面非常简单,反正是自己用的,简单点用起来也方便上图:左 ... [详细]
  • Java工作流引擎关于数据加密流程(MD5数据加密防篡改)
    关键字:驰骋工作流程快速开发平台工作流程管理系统工作流引擎asp.net工作流引擎java工作流引擎.开发者表单拖拽式表单工作流系统流程数据加密md5数据保密流程数据防篡改软加密适 ... [详细]
  • 【实践】基于RTThread的智慧路灯案例实验分享
    之前分享了基于LiteOS的智慧农业案例实验分享基于LiteOS的智慧农业案例实验分享,阅读量挺不错,看样子大家都挺喜欢这种实验。那咱们就再来一个类似的实验:基于RT-Thread ... [详细]
  • ASP.NET Core WebAPI 开发新建WebAPI项目  转
    转 http:www.cnblogs.comlinezerop5497472.htmlASP.NETCoreWebAPI开发-新建WebAPI项目ASP.NETCoreWebAPI ... [详细]
  • 步骤一:明确主打的核心目标用户群(对应产品侧的定位)这个核心目标用户群体是该产品成功挤进市场的切入点,甚至是撬动市场的支点和撬杠。市面上几乎很少有产品是专门给一个群体用而对其他群体 ... [详细]
  • npmimportuse这里我记录一下,视频地址和封面地址均引用的是服务器端得,本地的视频和图片 ... [详细]
  • 1.数据准备#测试数组vectorc(5,34,65,36,67,3,6,43,69,59,25,785,10,11,14)vector##[1]53465366736436959 ... [详细]
  • 这篇文章主要简要记录了对于研发团队工作的质量 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有