redis三主三从集群部署

发布于:2025-03-20 ⋅ 阅读:(19) ⋅ 点赞:(0)

环境准备

IP地址
192.168.247.138
192.168.247.145
192.168.247.158

redis的安装部署在前文已经详细写过
redis安装部署

有需要的可以看上篇文章   附上链接redis安装部署

创建集群

在解压编译之后进行如下操作(三台机器都执行)

mkdir -p /data/redis/cluster/6379
mkdir -p /data/redis/cluster/6380

cd /data/redis/cluster/6379
mkdir logs data
cd /data/redis/cluster/6380
mkdir logs data

mkdir /usr/local/redis/conf
mkdir /usr/local/redis/pid


vi /usr/local/redis/redis.conf

对redis.conf 进行如下修改

#redis访问端口(需要修改)
port 6379

#设置开启守护进程
daemonize yes

#关闭保护模式
protected-mode no

#开启远程访问
bind 0.0.0.0

# 开启AOF
appendonly yes

#日志存放位置(需要修改)
logfile "/data/redis/cluster/6379/logs/redis-cluster-6379.log"

#数据保存目录(需要修改)
dir /data/redis/cluster/6379/data/

# pid文件创建位置(需要修改)
pidfile  /usr/local/redis/pid/redis_6379.pid

#aof 持久化文件位置(需要修改) 在dir目录下
appendfilename "6379-appendonly.aof"

#修改rdb持久化文件位置(需要修改) 在dir目录下
dbfilename 6379-dump.rdb

# 开启集群模式
cluster-enabled yes
# 每一个redis节点需要有一个配置文件,三主三从集群共6个节点,因此需要6份配置文件。每个节点处于集群中都需要告知其他所有节点,达到集群中节点信息交换的目的,这个文件用于存储集群模式下的集群状态等信息,这个文件是由redis自己维护,不用管。如果你要重新创建集群,那么把每个节点的这个文件删了就行
#(需要修改) 在dir目录下
cluster-config-file nodes-6379.conf
# 超时时间,超时则认为master宕机,随后主备切换单位毫秒
cluster-node-timeout 5000
#设置集群节点间访问密码
masterauth 123456
#设置连接密码
requirepass 123456

创建redis集群配置文件

cp  /usr/local/redis/redis.conf /usr/local/redis/conf/redis-cluster-6379.conf
cp  /usr/local/redis/redis.conf /usr/local/redis/conf/redis-cluster-6380.conf

编辑 /usr/local/redis/conf/redis-cluster-6380.conf 把其中的6379修改成6380

sed -i "s/6379/6380/g" /usr/local/redis/conf/redis-cluster-6380.conf

在每个redis机器上分别启动redis程序

nohup /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-cluster-6379.conf &
nohup /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-cluster-6380.conf &

创建redis集群,在任意一台redis机器上执行就行

--cluster create:用于创建 Redis 集群

–cluster-replicas 1 :表示每个主节点需要1个从节点。这里随机分配主从关系,如果需要定制,则可以不加该参数,使用add-node来定制

-a 123456:-a 选项用于指定连接 Redis 节点时使用的密码,123456 就是具体的密码。这意味着在创建集群以及后续与这些节点交互时,都需要使用这个密码进行认证。

redis-cli --cluster create 192.168.247.138:6379 192.168.247.138:6380 192.168.247.145:6379 192.168.247.145:6380 192.168.247.158:6379 192.168.247.158:6380 --cluster-replicas 1 -a 123456

会弹出一个对话框  输入yes就可以了

若出现下面的报错  则是因为防火墙的问题  开启端口即可   或者直接关闭防火墙

[ERR] Node 192.168.128.138:6379 NOAUTH Authentication required
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --zone=public --add-port=6380/tcp --permanent
firewall-cmd --reload

 然后重新执行开启集群命令

如果忘了开放端口导致一直Waiting for the cluster to join…,那就先停止集群启动,先去开放端口

[ERR] Node 192.168.247.128:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解决办法:

  1. 先kill redis创建的集群节点进程
  2. 删除appendonly.aof、dump.rdb、nodes.conf文件,文件位置在数据存储目录:/usr/local/redis/data
  3. 执行./redis-cli flushdb 命令,清空每个redis里面的数据。
  4. 重启redis节点,再重新启动集群即可

 

验证集群

查看集群信息

选择一个节点进入

redis-cli -a 123456 -h 192.168.247.145 -p 6379 -c

-c 选项的作用是启用集群模式。

cluster nodes 命令用于展示 Redis 集群中各个节点的详细信息。

cluster info 命令用于查看 Redis 集群的整体信息。

数据验证操作 

在其中一个节点插入数据

在另一个节点验证