Redis cluster集群搭建

发布于:2023-09-14 ⋅ 阅读:(115) ⋅ 点赞:(0)

通过三台虚拟机搭建一个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、拷贝配置文件到指定目录

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       
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 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到