设为首页 收藏本站
查看: 997|回复: 0

[经验分享] Redis集群安装

[复制链接]

尚未签到

发表于 2018-11-3 08:48:16 | 显示全部楼层 |阅读模式
  Redis cluster是分布式集群,支持横向扩展,Redis从V3.0版本后才支持集群功能。Redis集群的工作原理类似于磁盘的raid5。

  • 多个redis节点网络互联,数据共享
  • 所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用
  • 不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为。
  • 支持在线增加、删除节点
  • 客户端可以连任何一个主节点进行读写
DSC0000.jpg

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}
  下载Ruby的源码包:
  [root@centos7 ~]# wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz -P rpmbuild/SOURCES
  下载specs文件,用于制作rpm包:
  [root@centos7 ~]# wget https://raw.githubusercontent.com/tjinjin/automate-ruby-rpm/master/ruby22x.spec -P rpmbuild/SPECS
  制作rpm包:
  #此处有点时间
  rpmbuild -bb rpmbuild/SPECS/ruby22x.spec
DSC0001.jpg

  安装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
DSC0002.jpg

  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
DSC0003.jpg

DSC0004.jpg

  #注意: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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630066-1-1.html 上篇帖子: redis的持久化方式RDB和AOF的区别 下篇帖子: spring整合redis
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表