Redis集群搭建

概述

redis集群的搭建至少需要六个redis实例,为了更接近实际的生产环境,准备了三台虚拟机,ip分别为192.168.1.12 ,192.168.1.15 , 192.168.1.18,redis的默认端口为6379,在这不使用默认端口,使用7000和7001端口。

集群介绍

redis集群是一个提供在多个Redis间共享数据的程序集,但不支持多个keys命令的处理。 在集群中每个节点都是平等的关系,都是对等的。每个节点都保存了各自的数据和整个集群的状态,每个节点都和其他所有节点连接,而且这些链接保持活跃,这样就保证了链接集群中的任意一个节点,就可以获取其他节点的数据。

环境:
  • vitrualbox
  • centos 7
  • redis 3.2.8
安装redis
  • 上传: redis 3.2.8 源码包 到 /opt下
  • 使用: tar -zxvf redis 3.2.8.tar.gz
  • 进入解压目录: make

安装过程中可能会有一些错误,可以参考这篇文章 : http://www.jianshu.com/p/cc403be7f80d

创建Redis节点

在1.12主机上 /usr/local 文件夹下创建 redis_cluster 目录:

mkdir /usr/local/redis_cluster 目录

在redis_cluster目录下创建 名为 7000 7001 的两个文件夹 ,并将/opt/redis-3.2.8目录下的redis.conf 文家拷贝到文件夹下:

mkdir 7000 7001
cp /opt/redis-3.2.8/redis.conf /usr/local/redis_cluster/7000/
cp /opt/redis-3.2.8/redis.conf /usr/local/redis_cluster/7001/

修改redis.conf配置文件的内容,如下:

port 7000                            //redis启动端口号 , 7001文件夹的配置文件端口号修改为7001
bind 主机的ip地址                     //默认为127.0.0.1 ,修改该主机的实际地址
daemonize yes                        //默认为no ,改为yes, 以守护进程模式运行,即为后台运行,不显示界面
pidfile /var/run/redis_7000.pid      //pid文件对应的端口号 7000 7001 
cluster-enabled yes                  //开启集群,把#去掉,默认不开启集群模式
cluster-config-file nodes_7000.conf  //集群的配置文件,由redis自己来维护
cluster-node-timeout 15000           //请求超时,默认15秒
appendonly yes                       //aof日志,开启后每次写操作都会记录一条命令,可自行决定是否开启

完成上面的步骤,一台主机上的两个节点就配置完了,在另外两台主机上也执行同样的操作。

启动各节点实例
/opt/redis-3.2.8/src/redis-server /usr/local/redis_cluster/7000/redis.conf
/opt/redis-3.2.8/src/redis-server /usr/local/redis_cluster/7001/redis.conf 

自行查看各个节点的启动情况,确保各个节点都能正常的运行。之后关闭防火墙

配置集群的运行环境
yum install -y ruby ruby-devel rubygems rpm-bulid 
gem install redis 
创建集群
/opt/redis-3.2.8/src/redis-trib.rb create --replicas 1 192.168.1.12:7000 192.168.1.12:7001 192.168.1.15:7000 192.168.1.15:7001 192.168.1.18:7000 192.168.1.18:7001
Redis集群搭建_第1张图片
创建集群.png

输入yes


Redis集群搭建_第2张图片
完成创建.png

加参数 -C 可连接到集群,因为 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略,-p 参数为端口号
$ /usr/local/redis-3.2.6/src/redis-cli -h 192.168.1.18 -c -p 7000

192.168.1.12:7000> set key zhagnsn
-> Redirected to slot [12539] located at 192.168.1.18:7000
OK

JAVA 操作redis集群

public class JedisClusterTest {
    public static void main(String[] args) {
        Set jedisClusterNodes = new HashSet() ;

        jedisClusterNodes.add(new HostAndPort("192.168.1.12" , 7000));
        jedisClusterNodes.add(new HostAndPort("192.168.1.12" , 7001));
        jedisClusterNodes.add(new HostAndPort("192.168.1.15" , 7000));
        jedisClusterNodes.add(new HostAndPort("192.168.1.15" , 7001));
        jedisClusterNodes.add(new HostAndPort("192.168.1.18" , 7000));
        jedisClusterNodes.add(new HostAndPort("192.168.1.18" , 7001));

        JedisCluster cluster = new JedisCluster(jedisClusterNodes) ;
        String name = cluster.get("key");
        System.out.println(name );
    }
}


少年听雨歌楼上,红烛昏罗帐。  
壮年听雨客舟中,江阔云低,断雁叫西风。
感谢支持!
                                        ---起个名忒难

你可能感兴趣的:(Redis集群搭建)