redis三主三从集群部署

环境准备

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 集群的整体信息。

数据验证操作 

在其中一个节点插入数据

在另一个节点验证

### 部署 Redis 三主三从架构集群 #### 准备工作 为了成功部署Redis三主三从架构,在多台服务器上配置环境是必要的。每台机器都需要安装Docker和Docker Compose工具,并确保这些服务能够正常运行。对于跨主机部署Redis,需在各目标主机上设置Swarm模式并创建覆盖网络以便容器间通信[^3]。 #### 构建 Docker 组成文件 针对每个节点(master 或 slave),编写相应的`docker-compose.yml`文件来定义所需的服务及其参数。以下是用于构建单个Redis实例的基础模板: ```yaml version: '3' services: redis-master: image: "redis" container_name: "redis-master" ports: - "6379:6379" volumes: - ./data:/data command: ["redis-server", "/etc/redis/redis.conf"] ``` 此段代码展示了如何指定镜像版本、端口映射以及挂载数据卷等基本选项;实际应用时应根据具体需求调整配置项以适应不同的角色定位——比如作为Master还是Slave节点。 #### 设置 Redis 主从关系 为了让某些成员成为其他成员的副本,可以在各自的`redis.conf`中添加如下指令: - `slaveof master-ip-address port-number`: 明确指出要复制哪个地址上的数据库; - 使用`requirepass your-password`设定访问控制列表(Access Control List),从而增强安全性[^2]。 #### 初始化哨兵机制 (Sentinel) 考虑到高可用性的要求,引入Redis Sentinel监控整个系统的健康状况十分关键。通过命令行操作连接至任意一个已有的Redis进程并向其发送特定语法的通知消息即可完成初始化过程: ```bash docker exec -it redis-sentinel*5 redis-cli -p 26379 -a root ``` 上述命令允许用户进入正在运行中的sentinel容器并通过CLI界面提交进一步的操作请求,例如设置投票规则或是触发故障转移流程等等[^1]。 #### 启动与验证 当所有的前置条件都满足之后,则可以通过执行位于项目根目录下的启动脚本来激活所有组件: ```bash cd /usr/local/docker/redis/data/ docker-compose up -d ``` 最后一步就是确认各个部分是否按照预期那样协同作业了。这通常涉及到检查日志输出、利用客户端工具查询状态信息等方面的工作。例如输入`info replication`查看当前实例的角色身份及关联情况。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌暴龙兽z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值