Redis集群配置(一步一截图)

1,安装ruby环境

执行yum install ruby 
执行yum install rubygems

注意:我本次redis集群的启动目录为:/opt/myRedis/redisColony,所有的配置文件都在此路径下,别一会搞晕了。

 

2,制作6个实例,7379,7380,7381,7389,7390,7391

需要先为这6个实例制作相应的配置文件,以此命名为:redis7379.conf,redis7380.conf,redis7381.conf,redis7389.conf,redis7390.conf,redis7391.conf等。

配置文件的配置过程如下:

  1. 拷贝多个redis.conf文件
  2. 开启daemonize yes(引入的redis.conf默认已经配置好了我们不需要管
  3. Pid文件名字
  4. 指定端口
  5. Log文件名字(不用管)
  6. Dump.rdb名字
  7. Appendonly 关掉或者换名字(默认关掉)
  8. cluster-enabled yes    打开集群模式
  9. cluster-config-file  nodes-6379.conf  设定节点配置文件名
  10. cluster-node-timeout 15000   设定节点失联时间,超过该时间(毫秒),集群自动进行主从切换。

注意:上面前7步,都已经在Redis主从复制博客中配置到了/opt/myRedis/redis5379.conf这个配置文件中,因此我们只需要先把配置文件/opt/myRedis/redis5379.conf进行复制为/opt/myRedis/redisColony/redis7379.conf,即复制到本次redis集群的启动目录。

cp /opt/myRedis/redis5379.conf /opt/myRedis/redisColony/redis7379.conf

复制过后,然后在redis7379.conf中再进行配置上面的8,9,10三步。

编辑过后的redis7379.conf如下:

​​include /opt/myRedis/redis.conf
pidfile "/var/run/redis_7379.pid"
port 7379
dbfilename "dump7379.rdb"
cluster-enabled yes
cluster-config-file nodes-7379.conf
cluster-node-timeout 15000

此时只是完成了一个实例的配置文件,还有5个实例的配置文件没有配置,那么我们复制redis7379.conf依次给这五个实例,然后只需要修改相应的接口就行了

并修改对应配置文件所对应的端口号,例如redis7380.conf修改后为:

linux中有一键替换命令:

:%s/7379/7380

循环修改完6个实例的配置文件后,就可以启动了

启动后,确认当前工作文件夹会生成nodes开头的文件(就是我们在redis7xxx.conf配置文件中配置的)

 

3,将6个节点合并成一个集群

1,去到你的redis的安装目录中的src文件夹

2,然后再src目录通过指令,将6个节点合并成一个集群。replicas 1表示集群中每个主服务器必须至少要有一个从服务器,因此我们配置成3个主服务器,3个从服务器

./redis-trib.rb create --replicas 1 192.168.239.129:7379 192.168.239.129:7380 192.168.239.129:7381 192.168.239.129:7389 192.168.239.129:7390 192.168.239.129:7391

然后就会显示自动为我们找到了三个主节点:7379,7380,7381。然后7379对应的从服务器是7389;7380对应的从服务器是7390;7381对应的从服务器是7391;

然后会输出安装提示,我们输入yes即可

然后我们启动客户端向集群中存入值,会发现键'a'所对应的插槽再7381端口,需要我们在7381实例上进行写操作

我们可以使用集群 -c 的方式启动客户端,这种方式会自动跳转到对应插槽实例的服务器,并存入键值对

但是这种插槽机制下,我们想把键值对存储到同一个服务器上该怎么办呢,那么就在键后面加上组别,这样相同组别的键值对就都会存储到同一台redis实例上。

 

4,故障恢复

1,如果主服务器下线,对应的从服务器会自动顶替成为主服务器。当旧服务器再次上线后,就会俯首,变为从服务器

2,当主从服务器都下线,那么redis集群瘫痪。因为redis的配置文件中,配置了只有当所有插槽全部正常时,集群才能正常启动。

redis.conf中的参数  cluster-require-full-coverage

 

5,测试Redis集群

 

/**
 * 测试Redis集群
 */
public class JedisTestReidsColony {

    public static void main(String[] args) {
        JedisCluster jedisCluster = new JedisCluster(new HostAndPort("192.168.239.129", 7379));
        jedisCluster.set("zpf", "20");
        System.out.println("a:" + jedisCluster.get("a"));
        System.out.println("b:" + jedisCluster.get("b{test}"));
        System.out.println("zpf的年龄:" + jedisCluster.get("zpf"));
    }

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值