wshq 发表于 2018-11-3 08:48:16

Redis集群安装

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

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

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、# 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目录
  # mkdir /data/redis_data
  #mkdir /data/redis_data/{7000,7002,7004}
  #mkdir -p /data/logs/redis
  6、依次启动Redis服务7000,7002,7004:
  # redis-server /etc/redis_7000.conf
  # redis-server /etc/redis_7002.conf
  # redis-server /etc/redis_7004.conf
  # ps -ef | grep redis
  #必须含有cluster这样的字段,才表示集群服务已开启
  root      41532      10 16:16 ?      00:00:00 redis-server 192.168.3.74:7000 [cluster]
  root      41537      10 16:16 ?      00:00:00 redis-server 192.168.3.74:7002 [cluster]
  root      41544      10 16:17 ?      00:00:00 redis-server 192.168.3.74:7004 [cluster]
  7、验证
  # redis-cli -h 192.168.3.74 -p 7000
  slave(IP:192.168.3.75)
  1、和master一样安装好redis服务
  # 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、# 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、# 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目录
  # mkdir /data/redis_data
  # mkdir /data/redis_data/{7001,7003,7005}
  # mkdir -p /data/logs/redis
  5、启动
  # redis-server /etc/redis_7001.conf
  # redis-server /etc/redis_7003.conf
  # redis-server /etc/redis_7005.conf
  # ps -ef | grep redis
  root      73344      10 15:52 ?      00:00:00 redis-server 192.168.3.75:7001
  root      73350      10 15:52 ?      00:00:00 redis-server 192.168.3.75:7003
  root      73361      10 15:52 ?      00:00:00 redis-server 192.168.3.75:7005
  6、验证
  # 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开发工具组
  # 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/
  # mkdir -p rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
  下载Ruby的源码包:
  # wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.3.tar.gz -P rpmbuild/SOURCES
  下载specs文件,用于制作rpm包:
  # wget https://raw.githubusercontent.com/tjinjin/automate-ruby-rpm/master/ruby22x.spec -P rpmbuild/SPECS
  制作rpm包:
  #此处有点时间
  rpmbuild -bb rpmbuild/SPECS/ruby22x.spec

  安装Ruby2.2:
  # yum -y localinstall rpmbuild/RPMS/x86_64/ruby-2.2.3-1.el7.centos.x86_64.rpm
  # ruby -v
  ruby 2.2.3p173 (2015-08-18 revision 51636)
  ruby 2.2安装完毕!
  配置集群
  安装Redis配置集群的工具:
  1、# gem install redis

  2、将命令redis-trib.rb加入环境变量目录下:
  # cp /data/package/redis-4.0.2/src/redis-trib.rb/usr/bin/
  3、连接启动
  # redis-trib.rb create --replicas 1 192.168.3.74:7000 192.168.3.74:7002 192.168.3.74:7004192.168.3.75:7001 192.168.3.75:7003 192.168.3.75:7005


  #注意:redis-trib.rb create --replicas 1表示一个master对应几个slave,此处的参数“1”表示master和slave一一对应
  Redis集群配置完成!
Redis集群操作
  因为Redis集群是分布式结构,所以可以连接任何一个端口。
  1、# redis-cli -c -h 192.168.3.74 -p 7000
  -c == cluster 表示已集群方式连接
  2、创建数据:
  192.168.3.74:7000> set cluster1 jacktest
  -> Redirected to slot located at 192.168.3.75:7001
  OK
  ##该操作会被重定向到192.168.3.75:7001
  192.168.3.75:7001> set cluster2 test7000
  -> Redirected to slot located at 192.168.3.74:7000
  OK
  又重定向到了7000端口
  在主或者从上创建key建的话,从上都会有记录查到
集群相关的操作
  查看集群的状态:
  # 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并启动):
  # ps -ef | grep redis
  root      73344      10 15:52 ?      00:00:03 redis-server 192.168.3.75:7001
  root      73350      10 15:52 ?      00:00:03 redis-server 192.168.3.75:7003
  root      73361      10 15:52 ?      00:00:03 redis-server 192.168.3.75:7005
  root      77120      10 16:36 ?      00:00:00 redis-server 192.168.3.75:7007
  添加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身份存在!
  将当前节点设置为指定节点的从:
  # redis-server /etc/redis_7006.conf
  # ps -ef | grep redis
  root      41532      10 16:16 ?      00:00:02 redis-server 192.168.3.74:7000
  root      41537      10 16:16 ?      00:00:02 redis-server 192.168.3.74:7002
  root      41544      10 16:17 ?      00:00:02 redis-server 192.168.3.74:7004
  root      41762      10 16:43 ?      00:00:00 redis-server 192.168.3.74:7006
  再添加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
  先更换到要设置的节点:
  # 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节点
  # 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]
查看完整版本: Redis集群安装