• Redis5以上版本伪集群搭建(高可用集群模式)


    redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用一台机器(可以多台机器部署,修改一下ip地址就可以了)部署6个redis实例,三主三从,搭建集群的步骤如下:

    第一步:在第一台机器的/usr/local/redis下创建文件夹redis-cluster,然后在其下面创建6个文件夹如下:

    mkdir -p /usr/local/redis/redis-cluster

    进入redis-cluster目录,创建6个文件夹

    mkdir 7001 7002 7003 7004 7005 7006

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

    cp /usr/local/redis/redis-5.0.5/redis.conf  /usr/local/redis/redis-cluster/7001

    说明:redis-5.0.5为解压的源码包

    修改如下配置:

     1 daemonize yes                           //redis后台运行
     2 port 7001                    (分别对每个机器的端口号进行设置)
     3 pidfile  /var/run/redis_7001.pid         //pidfile文件对应7000,7002,7003...7006
     4 cluster-enabled  yes                     //开启集群  把注释#去掉
     5 cluster-config-file  nodes-7001.conf     //集群的配置  配置文件首次启动自动生成 7001,7002,7003...7006
     6 cluster-node-timeout  5000             //请求超时  设置5秒够了
     7 appendonly  yes        //aof日志开启      有需要就开启,它会每次写操作都记录一条日志
     8 bind 127.0.0.1                (去掉bind绑定访问ip信息)
     9 protected-mode no               (关闭保护模式)
    10 #dir /usr/local/redis/redis-cluster/7001/ (指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据,若该配置 不存在,请自行添加)

    如果要设置密码需要增加如下配置:

    11 requirepass xxx (设置redis访问密码)
    12 masterauth xxx (设置集群节点间访问密码,跟上面一致)

    第三步:把修改后的配置文件,copy到8002-8006,修改第2、3、5项里的端口号,可以用批量替换:

    先复制:

    1 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7002
    2 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7003
    3 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7004
    4 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7005
    5 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7006

    然后分别到对应的目录下 把redis.conf  执行 vim  

    %s/源字符串/目的字符串/g 
    :%s/7001/7002/g
    :%s/7001/7003/g
    :%s/7001/7004/g
    :%s/7001/7005/g
    :%s/7001/7006/g

    把7001替换为7002

    全局替换  和 目录保持一致, 比如目录是 7003则 替换为7003

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

    1 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7001/redis.conf
    2 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7002/redis.conf
    3 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7003/redis.conf
    4 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7004/redis.conf
    5 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7005/redis.conf
    6 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7006/redis.conf

    查看是否启动成功

    使用ps-ef|grep redis 看下是否启动成功6个节点

    ps -ef|grep redis

    第五步:用redis-cli创建整个redis集群(redis5以前的版本集群是依靠ruby脚本redis-trib.rb实现)

    执行命令

    /usr/local/redis/bin/redis-cli --cluster create 192.168.83.102:7001 192.168.83.102:7002 192.168.83.102:7003 192.168.83.102:7004 192.168.83.102:7005 192.168.83.102:7006 --cluster-replicas 1

    说明:redis 5.x的集群创建不需要ruby环境了 

        --cluster-replicas 1 命令的意思是创建master的时候同时创建一个slave

    ip不要使用127.0.0.1,否则在使用java代码操作集群时会报错,会提示连接错乱。

    会创建一个3master 3slaver的集群

    输入yes

    看到这说明集群都创建完了

    第七步:验证集群:

    1)连接任意一个客户端即可:

    ./redis-cli -c -a xxx -h 192.168.5.100 -p 7001

    提示:-a访问服务端密码,-c表示集群模式,指定ip地址和端口号(若没有密码,-a xxx可省略)

    执行此命令:

    打开端口为7001的客户端 set一个值

    ./redis-cli -c -h 192.168.83.102 -p 7001

    退出该节点,进入7002端口:

    发现,7002端口也可以取值

     2)进行验证: cluster info(查看集群信息)、cluster nodes(查看节点列表)

    3)进行数据操作验证

    4)关闭集群则需要逐个进行关闭,使用命令:(模板)

    /usr/local/redis/src/redis-cli -a xxx -c -h 192.168.0.60 -p 8001 shutdown

    执行如下命令:

    /usr/local/redis/bin/redis-cli -c -p 7001 shutdown

    说明7001已关闭

     提示:在搭建集群后,依然可以进行主从复制的操作,备份数据。

    参考:

    https://www.jianshu.com/p/8045b92fafb2

    https://blog.csdn.net/qq_36514588/article/details/83856795

    https://blog.csdn.net/woyixinyiyi/article/details/87967911

    https://blog.csdn.net/hoopopo_wll/article/details/84925563

    https://my.oschina.net/ruoli/blog/2252393 (redis5 提供了关闭集群的工具)

    在这里非常感谢以上作者的劳动果实。

  • 相关阅读:
    01-Git 及其可视化工具TortoiseGit 的安装和使用
    IntelliJ IDEA中Warning:java:源值1.5已过时, 将在未来所有发行版中删除
    JVM学习笔记四_垃圾收集器与内存分配策略
    JVM学习笔记三_异常初步
    CentOs7 图形界面和命令行界面切换
    基本概念一
    JVM学习笔记二_对象的创建、布局和定位
    JVM学习笔记一_运行时数据区域
    个人阅读作业二
    软件工程随笔
  • 原文地址:https://www.cnblogs.com/116970u/p/11122331.html
Copyright © 2020-2023  润新知