商业网站网址,手机怎么创建网站,网站开发一般用什么软件有哪些,微信h5用什么软件制作Redis | 哨兵模式
1. 简介
Redis Sentinel#xff08;哨兵#xff09;是Redis提供的一种高可用性解决方案。它是一个独立的进程#xff0c;用于监控和管理Redis主从模式的节点#xff0c;并在主节点故障时自动进行故障转移。哨兵模式可以确保Redis集群的高可用性和数据一…Redis | 哨兵模式
1. 简介
Redis Sentinel哨兵是Redis提供的一种高可用性解决方案。它是一个独立的进程用于监控和管理Redis主从模式的节点并在主节点故障时自动进行故障转移。哨兵模式可以确保Redis集群的高可用性和数据一致性。
在哨兵模式中有一个主节点Master和多个从节点Slave以及一个或多个哨兵Sentinel。主节点负责接收写操作和复制数据到从节点而从节点负责复制主节点的数据。哨兵负责监控主节点和从节点的状态并在主节点故障时自动将一个从节点提升为新的主节点。
以下是Redis哨兵模式的一些特点和工作原理
哨兵选举在启动时每个哨兵都会对主节点进行投票选举选出一个领头哨兵Leader Sentinel。领头哨兵负责协调故障转移过程。监控哨兵会定期检查Redis节点的健康状态包括主节点和从节点的状态。如果发现主节点不可用哨兵会触发故障转移。故障转移当主节点不可用时领头哨兵会选出新的主节点并通知其他哨兵和从节点进行切换。在故障转移期间客户端的请求会被暂时拒绝直到新的主节点选举完成。数据一致性在进行故障转移时哨兵会确保新的主节点和从节点与旧的主节点数据保持一致。因此即使主节点故障数据不会丢失。
2. 配置 配置Redis主节点 在主节点的配置文件(redis.conf)中设置requirepass选项为主节点的密码。例如 requirepass your_redis_password配置Redis从节点 在从节点的配置文件(redis.conf)中设置masterauth选项为主节点的密码并使用replicaof选项将从节点连接到主节点。例如 masterauth your_redis_password
replicaof master-ip master-portmaster-ip和master-port分别是主节点的IP地址和端口号。 配置Redis Sentinel 创建一个名为sentinel.conf的新文件其中指定以下选项 bind *
sentinel resolve-hostnames yes
sentinel monitor mymaster master-ip master-port quorum
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel auth-pass mymaster master-password在sentinel monitor中mymaster是Redis实例的名称master-ip master-port是主节点的IP地址和端口号quorum是哨兵执行故障转移所需的最少哨兵数目。 sentinel auth-pass配置了连接到主节点的密码以便哨兵能够正确连接到Redis主节点。 启动Redis服务器和哨兵 首先启动带密码的Redis主节点和从节点。然后分别启动哨兵进程并使用配置文件启动 redis-sentinel /path/to/sentinel.conf3. 演示 注意因为每启动redis都会修改sentinel.conf如果之前测试过想重新开始测试要将sentinel.conf内容恢复。 下面以1个主节点2个从节点1个哨兵节点演示。
文件树
hello-redis
├── docker-compose.yaml
└── sentinel└── sentinel.conf文件
sentinel.conf
bind 127.0.0.1
sentinel resolve-hostnames yes
sentinel monitor mymaster 192.168.200.2 6379 1
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel auth-pass mymaster 123456docker-compose.yaml
version: 3.8
networks:network:ipam:driver: defaultconfig:- subnet: 192.168.200.0/24
services:master:container_name: masterimage: redis:7.0networks:network:ipv4_address: 192.168.200.2command:- redis-server- --replicaof no one- --requirepass 123456- --masterauth 123456- --bind * -::*replica1:container_name: replica1image: redis:7.0networks:network:ipv4_address: 192.168.200.3command:- redis-server- --requirepass 123456- --bind * -::*- --masterauth 123456- --replicaof 192.168.200.2 6379depends_on:- masterreplica2:container_name: replica2image: redis:7.0networks:network:ipv4_address: 192.168.200.4command:- redis-server- --requirepass 123456- --bind * -::*- --masterauth 123456- --replicaof 192.168.200.2 6379depends_on:- mastersentinel1:container_name: sentinel1image: redis:7.0networks:network:ipv4_address: 192.168.200.5volumes:- ./sentinel:/root/sentinelcommand:- redis-sentinel- /root/sentinel/sentinel.conf- --sentineldepends_on:- master启动在hello-go文件夹下输入docker compose up启动。测试故障转移docker stop master停止主节点等待5秒就能从控制台或sentinel.conf中看到主节点发生切换。恢复故障主节点docker start master就能看到master节点又加入集群并且以从节点身份。
4. 注意
在生产环境中建议使用多个哨兵和Redis Cluster等高级解决方案来实现更可靠和自动化的高可用性。主节点也要指定masterauth主节点授权防止主节点意外中止恢复正常后以无法以从节点身份连接到集群。