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

Redis cluster集群搭建_第1张图片

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

sudo cp software/redis-6.0.9/redis.conf ./conf/

调整配置信息
#bin 127.0.0.1                        //如果要远程访问就将这里注释掉
protected-mode no                     //保护模式
requirepass "mGo#fgdfg"               //密码认证
masterauth "mGo#fgdfg"                //密码认证,节点数据同步的时候用
logfile "按需设置"
port  6379                             //端口6379       
daemonize    yes                       //redis后台运行
pidfile  /var/run/redis_6379.pid       //pidfile文件
cluster-enabled  yes                   //开启集群  把注释#去掉
cluster-config-file  nodes_6379.conf   //集群的配置  配置文件首次启动自动生成6379
cluster-node-timeout  15000            //请求超时  默认15秒,可自行设置
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 配置信息

#bin 127.0.0.1                        //如果要远程访问就将这里注释掉
protected-mode no                     //保护模式
requirepass "mGo#fgdfg"               //密码认证,登录权限
masterauth "mGo#fgdfg"                //密码认证,节点数据同步的时候用
port  6379                             //端口6379
maxmemory 4GB     
daemonize    yes                       //redis后台运行
pidfile  /var/run/redis_6379.pid       //pidfile文件
cluster-enabled  yes                   //开启集群  把注释#去掉
cluster-config-file  nodes_6379.conf   //集群的配置  配置文件首次启动自动生成6379
cluster-node-timeout  15000            //请求超时  默认15秒,可自行设置
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: 在设置了过期时间的所有键,抛弃存活时间最短的数据。

你可能感兴趣的:(存储篇,redis,数据库,缓存)