Redis的主从和集群

1.主从

1.1概念

  • 一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构
  • master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1
  • 通过主从配置可以实现读写分离
  • master和slave都是一个redis实例(redis服务)

1.2主从配置

  • 配置主:
    • 查看当前主机的ip地址

      ifconfig

    • 修改/etc/redis/redis.conf

      vi redis.conf

      bind 本地ip

    • 重启redis服务

      service redis stop

      redis-server redis.conf

  • 配置从:
    • 复制/etc/redis/redis.conf文件

      cp redis.conf ./slave.conf

    • 修改redis/slave.conf文件

      vi slave.conf

    • 编辑内容

      bind 本地ip(在70行)

      port 6378(在93行)

      slaveof 本地ip 6379(在282行)

    • redis服务

      redis-server slave.conf

    • 查看主从关系

      redis-cli -h 本地ip info Replication  

2.集群 

2.1概念

  • 集群是一组相互独立的、通过高速网络互联计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。
  •  

  • 当请求到来首先由负载均衡服务器处理,把请求转发到另外的一台服务器上。

2.2redis集群

  • 分类
    • 软件层面:只有一台电脑,在这一台电脑上启动了多个redis服务
    • 硬件层面:存在多台实体的电脑,每台电脑上都启动了一个redis或者多个redis服务

2.3搭建集群

  • 当前拥有两台主机172.16.179.130、172.16.179.131,这里的IP在使用时要改为实际值

2.4参考

  • redis集群搭建 http://www.cnbiogs.com/wuxl360/p/5920330.html
  • [Python]搭建redis集群 http://blog.5ibc.net/p/51020.html

2.5配置机器1

  • 在演示中,192.168.2.180为当前ubuntu机器的ip
  • 在192.168.2.180上进入Desktop目录,创建conf目录
  • 在conf目录下创建文件7000.conf,编辑内容如下
port 7000
bind 192.168.2.180
daemonize yes
pidfile 7000.pid
cluster-enabled yes
cluster-config-file 7000_node.conf
cluster-node-timeout 15000
appendonly yes
  • 在conf目录下创建文件7001.conf,编辑内容如下
port 7001
bind 192.168.2.180
daemonize yes
pidfile 7001.pid
cluster-enabled yes
cluster-config-file 7001_node.conf
cluster-node-timeout 15000
appendonly yes
  • 在conf目录下创建文件7002.conf...7005.conf
  • 启动7000-7005五个redis服务:redis-server 700n.conf

2.6创建集群

  • redis的安装包中包含了redis-trib.rb,用于创建集群
  • 接下来的操作在192.168.2.180机器上进行
  • 将命令复制,这样可以在任何目录下调用此命令

   cp /usr/local/redis/src/redis-trib.rb /usr/local/bin/

  • 安装ruby环境,因为redis-trib.rb是用ruby开发的(先进入/usr/local/bin/目录)

   apt-get install ruby(Ubuntu)

      yum install ruby(Centos)

  • 在提示信息处输入y,然后回车继续安装
  •  

  • 运行如下命令创建集群

   redis-trib.rb create --replicas 1 192.168.2.180:7000 192.168.2.180:7001 192.168.2.180:7002...7005

  • 执行上面这个命令在某些机器上可能会报错,主要原因是由于安装的ruby不是最新版本
  • 天朝的防火墙导致无法下载最新版本,所以需要设置gem的源
  • 解决办法如下

   --先看自己的gem源是什么地址

   gem source -l

   --如果是https://rubygems.org/ 就需要更换

   --更换指令为

   gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/

   --通过gem安装redis的相关依赖

   gem install redis

   --然后重新执行创建集群指令

  • 提示完成,集群搭建成功

2.7数据验证

  • 当前搭建的主服务器为7000、7001、7003,对应的从服务器是7004、7005、7002
  • 在192.168.2.180机器上连接7002,加参数-c表示连接到集群

   redis-cli -h 192.168.2.180 -c -p 7002

  • 写入数据

     set name itheima

  • 自动跳到了7003服务器,并写入数据成功

     

 

  • 在7003可以获取数据,如果写入数据又重定向到7000(负载均衡)  

     

 

posted @ 2019-06-15 18:20  mia0812  阅读(277)  评论(0编辑  收藏  举报