Redis集群搭建(Cluster集群)

一、环境准备

三台以上的机器,或者虚拟机,配置好的虚拟机的ip(centOS7.0)

虚拟机ip
A192.168.52.137
B192.168.52.136
C192.168.52.135

二、开始安装(单机版)

首先下载redis,然后解压继而得到解压后的Redis目录,执行编译命令。
但是在这里可能会遇到一些错误

  1. wget没有安装,那么你需要通过yum去安装一下wget,这个比较简单。
    在这里插入图片描述
    	$	yum install wget
    
  2. 执行make命令提示没有安装gcc,那么仅仅需要安装一下gcc就可以。
    在这里插入图片描述
  3. 执行make命令可能出现jemalloc/jemalloc.h错误(操作系统内核的错误),使用 $ make MALLOC=libc 进行编译
    在这里插入图片描述

安装步骤:
以下步骤可通过xshell连接三个虚拟机进行同步操作,在输入框中输入一个命令,则在其他的连接框中也同样执行。
在这里插入图片描述

## 通过wget下载redis安装包
1. $ wget http://download.redis.io/releases/redis-5.0.7.tar.gz  下载安装包 、
##  查看安装包下载的地址,并移动到自己想要放置的文件夹下
2. $ cp redis-5.0.7.tar.gz  /root/usr/redis/
##  解压
3. $ tar xzf redis-5.0.7.tar.gz
## 将加压的文件放到新建的文件目录的下(放不放随你自己)
4. $ mv redis-5.0.7 /root/usr/redis/snipe
## 编译 进入到 redis-5.0.7目录下,编译
5. $ cd  redis-5.0.7
6. $ make 
## 安装 进入到src 目录下安装
7.  $ cd src 
8.  $ make install
## 启动redis
9. ll 查看目录下的命令启动即可

说明

  1. make之后出现以下图片表示编译成功。
    在这里插入图片描述
  2. make install 之后出现以下图片表示安装成功。
    在这里插入图片描述

三、将常用的redis命令放置在自己的目录下

如果不想每次都到redis的安装目录下的,可以将一些常用的命令放置在自己新建的文件目录下,方便自己启动和修改配置。
建立两个文件夹分别用来的存放redis的基本命令和配置文件,redis的配置文件redis.conf,常用的命令有:

mkreleasedr.sh  redis-benchmark redis-check-aof  redis-cli  redis-server

步骤:

  1. 创建文件夹,并移动对应的的命令到创建的文件夹下
    $ mkdir -p /目录地址/etc  $ mkdir/目录地址/bin
    $ mv redis-server redis-cli redis-check-aof  /目录地址(命令)(redis下的src目录下)
    
    把redis配置文件复制到etc目录,注意redis的配置文件在安装的根目录下面
    $ cp redis.conf  /目录地址(redis目录下,redis.5.0.7下)
    
  2. 启动
    ## bin目录位置和etc目录配置文件地址
    $ /root/usr/redis/snipe/bin/redis-server /root/usr/redis/snipe/etc/redis.conf
    
  3. 此时启动后的redis不能再操作界面做任何操作,所以需要修改配置,找到daemonize 将no修改为yes
    $ vim redis.conf 
    
    在这里插入图片描述
  4. 重新启动后,进入客户端测试
    $ /root/usr/redis/snipe/bin/redis-cli
    
    在这里插入图片描述

说明

  1. 创建/bin文件夹,并将命令redis-server redis-cli redis-check-aof 移动到bin文件夹下
    在这里插入图片描述

  2. 创建/etc文件夹,并将redis.conf复制到etc文件夹下
    在这里插入图片描述

  3. 在vim模式下打开的文件,输入 /搜索的字符 按下enter键即可在文件中查找对应的搜索字符,按下n为向下翻看,输入 :noh 为取消高亮显示

(以上简单的单机配置版基本完成)

java API连接不上redis的配置说明

一、查看防火墙的状态

##  查看防火墙的状态
$ firewall-cmd --zone=public --list-port
## 关闭防火墙
$  systemctl stop firewalld

二、当前配置绑定的窗口只允许本地连接

## 查看配置 修改的 bind 127.0.0.1 将其注释掉允许所有ip连接
$ vim redis.conf 
## 重启redis
$ pkill -9 redis 
$ /root/usr/redis/snipe/bin/redis-server /root/usr/redis/snipe/etc/redis.conf
$ ps -ef |grep redis
## 不使用密码连接 需要修改 protected-mode yes 改为no
$ protected-mode yes

四、集群搭建(cluster集群)

图片为3主6从的集群,集群redis,以下图为例,一台机器上部署一个master和两个slave,一个客户client登陆到的redis cluster其中的一个客户端时,进行数据的set (存储),则redis集群通过一定的算法,将数据进行计算,然后分配到指定的redis slot 进行选择master存储。每个master的salve并不一定是在同一台机器上的,如下图,左边的master的两个salve分别在不同的机器上,这样做的好处在于如果mater的机器挂掉了之后他的salve仍然可以运行,并且晋升为主服务,不至于数据全部宕掉。

该模式的相比于哨兵模式的集群来说:哨兵模式,当主slave挂掉的时候,这时候所有集群需要重新选举master,此时会出现空档期,如果数据量过大,则选举恢复数据需要的时间比较长的,造成在这段时间内服务不可用。如果是商城模式下的出现这种问题,损失会很大。而cluster集群模式,由于存储的根据一定规则分片存储,比如存储进来1000条数据,进行一定规则分配存储,例:A机器上存储500条,B机器存储200条,C机器存储300条。当A挂掉之后,只会造成的少部分数据不可用,而且,在此期间,A的slave在不同的机器上,进行选择新的master,从而进行数据的恢复,这部分所用的时间相对来说会比较短。
在这里插入图片描述

准备工作(由于机器限制,本文搭建的是三主三从的集群)

按照单机版的操作,将 二、三、将常用的redis命令放置在自己的目录下 的步骤在另外两台机器上操作一遍,操作完成后如下
在这里插入图片描述
具体操作如下

  1. (机器ip192.168.52.137)在snipe文件夹下创建一个cluster文件夹(用于存放两个redis实例),然后在cluster目录下创建的两个文件夹。对应关系为 7001 7004为同一个cluster文件夹下,7002 7005为同一个cluster文件夹下,7003 7006为同一个cluster文件夹下。
    在这里插入图片描述

  2. 复制redis.conf文件到创建的700X目录下

    $ cp /root/usr/redis/snipe/etc/redis.conf /root/usr/redis/snipe/cluster/7001
    $ cp /root/usr/redis/snipe/etc/redis.conf /root/usr/redis/snipe/cluster/7004
    
  3. 修改copy过来的redis.conf 配置文件,需要修改配置如下

    daemonize yes 后台模式运行
    port 端口(修改成对应的端口号,本文设置7001 7002 7003 7004 7005 7006)
    bind 绑定的ip,注释掉则表示所有ip
    pidfile /var/run/redis_7001.pid
    dir /root/usr/redis/snipe/cluster/7001/ redis数据文件存放位置(路径)
    cluster-enable yes 开启集群模式
    cluster-config-file 集群配置文件的位置
    cluster-node-timeout 超时设置(可不设置)
    appendonly yes 持久化
    protected-mode no 保护模式
    requirepass snipe(redis密码,自行设置)
    masterauth snipe(集群通信密码,自行设置)
    
  4. 当我们修改完第一个文件的时候(7001,7004同一台机器),为了避免重复修改7004下的文件,可以将7001下的文件copy一份到7004下,然后将配置文件中的数据7001替换成7004即可。

    $ cp ../7001/redis.conf /root/usr/redis/snipe/cluster/7004
    $ vim redis.conf
    ## 进入到redis.conf文件后
    :%s/source/target/g linux替换字符串命令 例如: %s/7001/7004/g
    
  5. (机器IP:192.168.52.136、192.168.52.135)另外两台机器的cluster文件夹下的redis.conf 可通过远程scp命令copy到对应的文件夹下

    ## scp root@主机ip:/copy文件目录 copy到的目录地址
    $ scp root@192.168.52.137:/root/usr/redis/snipe/cluster/7004/redis.conf /root/usr/redis/snipe/cluster/7002
    $ scp root@192.168.52.137:/root/usr/redis/snipe/cluster/7004/redis.conf /root/usr/redis/snipe/cluster/7005
    
  6. 在(机器IP:192.168.52.136、192.168.52.135)机器中进入到相应的文件夹下修改redis.conf

    ## 进入到7002目录下
    $ vim redis.conf
    ## 进入到redis.conf文件后
    :%s/source/target/g linux替换字符串命令 例如: %s/7004/7002/g
    ## 进入到7005目录下
    $ vim redis.conf
    ## 进入到redis.conf文件后
    :%s/source/target/g linux替换字符串命令 例如: %s/7004/7005/g
    
  7. 至此,三台的redis配置已完成,启动服务(192.168.52.137)

    ## 查看各个机器是否有redis启动如果有则关闭其他redis服务
    $  ps -ef |grep redis 
    $  pkill -9 redis
    ## 启动每台机器的redis
    $ /root/usr/redis/snipe/bin/redis-server /root/usr/redis/snipe/cluster/7001/redis.conf
    $ /root/usr/redis/snipe/bin/redis-server /root/usr/redis/snipe/cluster/7004/redis.conf
    
  8. 查看Redis状态,变成cluster
    在这里插入图片描述

  9. 其他机器同理,启动服务(192.168.52.136,192.168.52.135)

  10. 最后一步,集群的主从配置。

    ## redis-cli -a snipe --cluster create --cluster-replicas 1 各个实例的ip:端口
    ##  snipe 为配置的集群密码 
    ##  1 表示有多少从实例,这里的1表示1个master有一个slave
    redis-cli -a snipe --cluster create --cluster-replicas 1 192.168.52.137:7001 192.168.52.136:7002 192.168.52.135:7003 192.168.52.137:7004 192.168.52.136:7005 192.168.52.135:7006
    
  11. 如果配置集群不成功,可能原因是因为防火墙没有关闭。关闭防火墙,再次执行步骤10
    在这里插入图片描述
    解决:关闭防火墙。

    $ systemctl stop firewalld
    $ sudo iptables -F
    

    在这里插入图片描述
    在这里插入图片描述

  12. 接下来就是测试连接集群,做一些简单的操作

    ## 客户端 redis-cli 启动
    $ /root/usr/redis/snipe/bin/redis-cli -a snipe -c -h 192.168.52.135 -p 7003
    

    在这里插入图片描述

  13. 以上,搞定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值