• Redis cluster集群搭建


    通过三台虚拟机搭建一个3主3从的cluster集群

    1、安装 gcc-c++ 依赖包

    yum install gcc-c++

    2、下载安装包并解压

    wget https://download.redis.io/releases/redis-6.0.9.tar.gz

    tar -zxvf redis-6.0.9.tar.gz

    3、编译安装

    编译

        cd redis-6.0.9

        make 

    默认安装

        make install

    指定路径安装 ( PREFIX 必须大写)

       sudo make install PREFIX=/export/App/redis6.0 CONF_PATH=/export/App/redis6.0/conf

    4、拷贝配置文件到指定目录

    1. sudo cp software/redis-6.0.9/redis.conf ./conf/
    2. 调整配置信息
    3. #bin 127.0.0.1 //如果要远程访问就将这里注释掉
    4. protected-mode no //保护模式
    5. requirepass "mGo#fgdfg" //密码认证
    6. masterauth "mGo#fgdfg" //密码认证,节点数据同步的时候用
    7. logfile "按需设置"
    8. port 6379 //端口6379
    9. daemonize yes //redis后台运行
    10. pidfile /var/run/redis_6379.pid //pidfile文件
    11. cluster-enabled yes //开启集群 把注释#去掉
    12. cluster-config-file nodes_6379.conf //集群的配置 配置文件首次启动自动生成6379
    13. cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
    14. appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 

    5、拷贝 redis-cli 到 bin 目录

    sudo cp redis-6.0.9/src/redis-cli bin/

    6、集群节点配置

    a、安装目录下创建 cluster 目录

          sudo mkdir redis_cluster

    b、拷贝配置文件到 6379 6380 目录下

          sudo cp -r conf/ redis_cluster/6379

          sudo cp -r conf/ redis_cluster/6380

    c、调整 6379 目录下的下 redis.conf 配置信息

    1. #bin 127.0.0.1 //如果要远程访问就将这里注释掉
    2. protected-mode no //保护模式
    3. requirepass "mGo#fgdfg" //密码认证,登录权限
    4. masterauth "mGo#fgdfg" //密码认证,节点数据同步的时候用
    5. port 6379 //端口6379
    6. maxmemory 4GB
    7. daemonize yes //redis后台运行
    8. pidfile /var/run/redis_6379.pid //pidfile文件
    9. cluster-enabled yes //开启集群 把注释#去掉
    10. cluster-config-file nodes_6379.conf //集群的配置 配置文件首次启动自动生成6379
    11. cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
    12. appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 

    d、将 6379 调整后的 redis.conf 复制到 6380 并替换配置

          sudo cp -r conf/ redis_cluster/6380

          cd redis_cluster/6380

          配置替换:sudo sed -i 's/6379/6380/g' redis.conf

    e、启动节点验证

          sudo bin/redis-server redis_cluster/6379/redis.conf

          sudo bin/redis-server redis_cluster/6380/redis.conf

    f、检查节点启用情况

         ps -ef | grep redis

    7、创建集群

    sudo bin/redis-cli --cluster create 10.221.2.62:6379 10.221.2.62:6380 10.25.1.92:6379 10.25.1.92:6380 11.249.2.108:6379 11.249.2.108:6380 --cluster-replicas 1 -a mGo#fgdfg

    ps: redis-5.0.0版本开始才支持“--cluster”

    集群验证:

    bin/redis-cli -c -a mGo#fgdfg    // -c 设置集群模式连接

    可能遇到的问题

    1、CentOS7上安装Redis(6.0.9)进入目录后make,编译失败提示:struct redisServer’没有名为‘sentinel_mode’的成员,In file included from server.c:30:0:server.h:1072:5: error: expected specifier-qualifier-list before '_Atomic' _Atomic unsigned int lruclock; /* Clock for LRU eviction */

    问题出现原因:gcc版本问题

    查看gcc版本:gcc -v

    如果 gcc 的版本低于5,使用以下命令升级

    sudo yum install centos-release-scl

    sudo yum install devtoolset-7-gcc*

    scl enable devtoolset-7 bash

    2、是否只设置requirepass就可以,masterauth是否需要同步设置? 

    redis启用密码认证一定要requirepass和masterauth同时设置。

    如果主节点设置了requirepass登录验证,在主从切换,slave在和master做数据同步的时候首先需要发送一个ping的消息给主节点判断主节点是否存活,再监听主节点的端口是否联通,发送数据同步等都会用到master的登录密码,否则无法登录,log会出现响应的报错。 也就是说slave的masterauth和master的requirepass是对应的,所以建议redis启用密码时将各个节点的masterauth和requirepass设置为相同的密码,降低运维成本。当然设置为不同也是可以的,注意slave节点masterauth和master节点requirepass的对应关系就行。

    3、requreipass和master的作用?

    masterauth作用:主要是针对master对应的slave节点设置的,在slave节点数据同步的时候用到。

    requirepass作用:对登录权限做限制,redis每个节点的requirepass可以是独立、不同的。

    4、redis 提示:(error) MOVED xxx 什么原因?

    原因:一般是因为启动redis-cli时没有设置集群模式所导致。

    解决: redis-cli -c -p 6379 

    5、关于内存设置 redis.conf

    如果没有显式设置maxmemory配置项,默认情况下Redis不会限制内存使用,即maxmemory的默认值为0,表示不设置最大内存限制。

    这意味着Redis在默认情况下可以使用系统的全部可用内存,直到系统的内存资源耗尽为止。然而,这也可能导致Redis过度使用内存并影响系统的稳定性。

    因此,在生产环境中,建议明确设置maxmemory配置项,以控制Redis的内存使用,并确保系统有足够的内存供其他关键应用程序使用。

    6、淘汰策略设置

    noeviction: 默认策略,不淘汰,如果内存已满,添加数据是报错。
    allkeys-lru: 在所有键中,选取最近最少使用的数据抛弃。
    volatile-lru: 在设置了过期时间的所有键中,选取最近最少使用的数据抛弃。
    allkeys-random: 在所有键中,随机抛弃。
    volatile-random: 在设置了过期时间的所有键,随机抛弃。
    volatile-ttl: 在设置了过期时间的所有键,抛弃存活时间最短的数据。

  • 相关阅读:
    最新基于MATLAB 2023a的机器学习、深度学习教程
    【Java 进阶篇】Java Request 获取请求体数据详解
    基于Promise + XHR 封装myAxios函数
    多宽带叠加的分布式云盘:文件秒传、断点续传、大文件下载
    excel文档打不开怎么修复?
    vue用法示例(一)
    [读论文] Monocular 3D Object Reconstruction with GAN inversion (ECCV2022)
    2022年12月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
    BO-CNN-LSTM分类预测 | MATLAB实现贝叶斯优化卷积长短期记忆网络多输入分类预测
    Cheat Engine 学习
  • 原文地址:https://blog.csdn.net/qq_27789551/article/details/132875310