搭建Redis缓存高可用集群详解

1、Redis集群方案比较

(1)哨兵模式

在redis3.0以前的版本要实现集群一般是借助哨兵sentinal工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况

在这里插入图片描述

(2)高可用集群模式

redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinal监控哨兵也能完成节点移除和故障转移的功能。需要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展很多个,根据官方文档提供目前可以扩展到1000节点。redis集群的性能和高可用性均优于之前版本的哨兵模式,并且集群配置非常简单,但是也存在瞬断,只能说高可用大大提高了并发量,是相对的,不是绝对的。
在这里插入图片描述

2、Redis高可用集群搭建

(1)redis安装

下载地址:http://redis.io/download
安装步骤:
#安装gcc
yum install gcc

#把下载好的redis-3.0.0-rc2.tag.gz放在/user/local文件夹下,并解压
tar -zxvf redis-3.0.0-rc2.tag.gz

#进入到解压好的 redis-3.0.0目录下,进行编译
make

#进入到redis-3.0.0/src目录下进行安装,安装完成验证src目录下是否已经生成了redis-server和redis-cil
make install

#建立两个文件夹存放redis命令和配置文件
mkdir -p /user/local/redis/etc
mkdir -p /user/local/redis/bin

#把redis-3.0.0下的redis.conf复制到/user/local/redis/etc下
cp redis.conf /user/local/redis/etc

#移动redis-3.0.0/src里的几个文件到/user/local/redis/bin下
mv mkreleasehdr.sh reids-benchmark redis-check-aof redis-check-dump redis-cil redis-server /user/local/redis/bin

#启动并指定配置文件
/user/local/redis/bin/redis-server /user/local/redis/etc/redis-conf(注意要使用后台启动,修改redis-conf里的daemonize改为yes)

#验证启动是否成功
ps -ef|grep redis

#查看是否有redis服务或者查看端口
netstat -tunpl | grep 6379

#进入redis客户端
/user/local/redis/bin/redis-cil

#退出客户端
quit

#退出redis服务
pkill redis-server
kill 进程号
/user/local/redis/bin/redis-cil shutdown

(2)redis集群搭建

redis集群需要至少三个master节点(因为要进行选举),我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,由于节点数较多,所以用一台服务器创建6个redis实例,并将这6个redis实例配置为集群模式,所以这里搭建的是伪集群模式,当然真正的分布式集群的配置方法几乎一样,搭建伪集群的步骤如下:

第一步:在/user/local下创建文件夹redis-cluster,然后在其下面分别建6个文件夹如下:

  1. mkdir -p /user/local/redis-cluster
  2. mkdir 8001、mkdir 8002、mkdir 8003、mkdir 8004、mkdir 8005、mkdir 8006

第二步:把之前的erdis.conf配置文件copy到8001,修改内容如下:

  1. daemonize yes
  2. port 8001(分别对每个机器的端口号进行设置)
  3. bind 192.168.0.60(必须要绑定你当前机器的ip,这里方便redis集群定位到机器,不绑定可能会出现循环查找集群节点机器的情况)
  4. dir /user/local/redis-cluster/8001(指定数据文件存储位置,必须要指定不同的目录位置,不然会丢失数据)
  5. cluster-enabled yes(启动集群模式)
  6. cluster-config-file nodes-8001.conf(这里800x最好和port对应上)
  7. cluster-node-timeout 5000(超时时间设置)
  8. appendonly yes

第三步:把修改后的配置文件分别copy到各个文件夹下,注意每个文件夹要修改第2、4、6项的端口号

  1. 可以批量替换: :%s/源字符串/目的字符串/g

第四步:由于redis集群需要使用ruby命令,所以我们安装ruby

  1. yum install ruby
  2. yum install rubygems
  3. gem install redis --version3.0.0(安装redis和ruby的接口)

第五步:分别启动6个redis实例,然后检查是否启动成功

  1. /user/local/redis/bin/redis-server /user/local/redis-cluster/800*/redis-conf
  2. ps -ef | grep redis 查看是否启动成功

第六步:在redis3的安装目录下执行redis-trib.rb命令创建整个reids集群

  1. cd/user/local/redis3/src
  2. ./redis-trib.rb create --replicas 1 192.168.0.60:8001 192.168.0.60:8002 192.168.0.60:8003 192.168.0.60:8004 192.168.0.60:8005 192.168.0.60:8006(其中‘1’指的是:master节点/slave
    节点的比值)

第七步:验证集群

  1. 连接任意一个客户端即可:./redis-cli -c -h -p(-c表示集群模式,-h指定ip地址和-p端口号)
    如:/user/local/redis/bin/redis-cli -c -h 192.168.0.60 -p 800*
  2. 进行验证:cluster info(查看集群信息)、cluster nodes(查看节点列表)
  3. 进行数据操作验证
  4. 关闭集群,则需要逐个进行关闭,使用命令:
    如:/user/local/redis/bin/redis-cli -c -h 192.168.0.60 -p 800* shutdown

3.验证代码

public class RedisCluster {
	public static void main(String[] args) throws IOException{
        Set<HostAndPort> jedisClusterNode = new HasSet<HostAndPort>();
        jedisClusterNode.add(new HostAndPort("192.168.0.60",8001));
        jedisClusterNode.add(new HostAndPort("192.168.0.60",8002));
        jedisClusterNode.add(new HostAndPort("192.168.0.60",8003));
        jedisClusterNode.add(new HostAndPort("192.168.0.60",8004));
        jedisClusterNode.add(new HostAndPort("192.168.0.60",8005));
        jedisClusterNode.add(new HostAndPort("192.168.0.60",8006));

		JedisPoolConfig config = new JedisPoolConfig();
		config.setMaxTotal(100);
		config.setMaxIdle(10);
		config.setTestOnBorrow(true);
		JedisCluster jedisCluster = new JedisCluster(jedisClusterNode, 6000, 10, config);
		System.out.println(jedisCluster.set("name","bob"));
		System.out.println(jedisCluster.set("age","18"));

		System.out.println(jedisCluster.get("name"));
		System.out.println(jedisCluster.get("age"));

		jedisCluster.close();
    }
}

亲手编写,转自视频:http://www.iqiyi.com/w_19s1iiixkl.html

猜你喜欢

转载自blog.csdn.net/baidu_41937166/article/details/95235539