利用sentinel和cluster创建Redis集群的区别
Sentinel主要用于解决高可用性(HA)问题,而Cluster则用于解决分片问题。两者经常一起使用,以增强Redis集群的可靠性和性能。
Sentinel的功能包括: (1)监控——检查Redis实例是否正常运行。
(2) 通知——向应用程序发送错误信息。
(3) 故障转移——当主节点出现故障时,选择一个从节点升级为主节点,更新其他从节点的从属关系,并更新客户端连接。
(4) 配置提供者——客户端通过sentinel获取Redis地址,并在故障转移时更新该地址。
只需要在配置文件中配置主节点地址,即可自动发现从节点地址和哨兵地址:(1)哨兵通过Redispub/sub交换信息。
(2)从节点向主节点请求获取。
故障检测通常通过乒乓机制进行。
Sentinel引入了sdown(主观离线)和odown(客观离线)机制:(1)sdown - ping在is-master-down-after-milliseconds(可配置)时间内-pong失败。
sdown的从节点无法升级为主节点。
(2) odown - Sentinels超过一定数量(可配置)考虑sdown,并且odown仅针对主节点。
(3)故障转移——大多数哨兵认为odown。
至少需要部署三个哨兵集群才能组成哨兵集群: (1)功能:故障检测更客观,可用性强,防止哨兵挂掉后无法工作。
(2)实现:哨兵之间的数据同步,包括Redis状态(odown、sdown)都是通过Redispub/sub实现的。
执行故障转移需要选举一个哨兵作为领导者来执行。
从节点选举Leader时,会参考以下数据: (1)与主节点断开连接的时间。
(2)从节点优先级。
每个Redis实例都有一个配置项slave-priority,可以通过info命令读取。
当从节点转为主节点时,优先级最高的从节点会被选中,优先级为0的从节点永远不会被选中。
(3) 复制偏移量。
从节点处理的数据量。
(4)运行ID。
执行故障转移时: (1) 从节点领导者晋升为主节点。
(2)其他从节点修改为主节点的从节点。
(3) 客户端修改连接。
(4)如果旧主节点重启成功,它将成为新主节点的从节点。
配置时必须使用配置文件sentinel.conf,为重启时的信息恢复做准备,并且sentinel.conf是实时更新的。
Sentinel客户端需要客户端支持,目前jedis已经支持。
服务发现是指客户端输入哨兵地址列表和服务名称后,自动发现Redis实例地址。
步骤包括: (1)尝试按顺序连接哨兵集群。
(2)通过get-master-addr-by-namemaster-name查询ip:port。
查询失败并请求下一个标记。
(3)使用role命令检查Redis实例是否为主节点。
如果没有(正在进行故障转移?),请等待一段时间,然后从第一步开始。
处理重连包括以下几种情况: (1)超时或socket错误后重连。
(2) 用户显式关闭或重新连接。
(3)其他客户端与Redis断开连接的情况。
Sentinel修改Redis配置时,会发送clientkill命令断开该Redis与所有客户端的连接,以便客户端可以重新通过sentinel获取配置。
当连接到从节点时,sentinel返回从节点列表,并使用role命令进行验证。
客户端连接池需要断开所有连接修改配置时的客户端连接。
客户端订阅哨兵事件以提高响应能力、非必要功能。
redis集群-keepalived+redis
Redis集群配置与Keepaliving配合使用,实现数据冗余和高可用。这个过程涉及很多步骤,从安装配置Redis到集成Keepaliving,再到实现主从切换和自动负载均衡。
首先我们需要安装Redis。
包括安装编译工具、下载并解压Redis安装包、执行编译安装命令。
确保Redis主服务器安装在分别具有公网IP和内网IP的服务器上。
辅助服务器也是如此,但要确保它们是独立的并且彼此独立运行。
接下来,为了管理方便,我们需要在特定目录下创建一个目录,比如/usr/local/redis等。
并将配置文件复制到该文件夹中。
这一步保证了我们可以通过一个统一的目录来管理所有的Redis服务配置。
配置 sysctl.conf 文件是另一个重要步骤。
目标是启用内核参数,保证Redis在重启或停止时不会报错,并能在停止服务前自动将数据同步到磁盘。
为了允许外部访问Redis,我们需要编辑redis.conf文件来设置外部访问权限。
这包括调整 IP 地址和侦听端口以允许从网络访问 Redis 服务。
启动Redis服务的时候,我们有很多方式,比如在前台启动,或者在后台启动。
在后台启动服务时,我们还需要指定一个配置文件,以保证服务的正确初始化和运行。
从外部IP地址访问Redis需要命令行操作,例如通过ipa命令查看网络接口,然后使用redis-cli命令连接到特定的Redis实例并执行相应的操作,例如查看端口号和执行数据存储和检索操作。
关闭Redis服务的方式也有很多,比如关闭前台或者后台,甚至可以通过系统命令。
正常关机期间,Redis会自动启动以保证服务的连续性。
为了实现高可用性,我们需要安装和配置Keepaliving。
包括安装必要的编译工具和库文件,下载并解压Keepaliving安装包,以及执行编译和安装命令。
调整keepaliving.conf配置文件是关键。
我们需要创建一个与Redis集成的脚本来执行主从迁移、状态监控和故障转移。
配置Keepaliving时,需要为每个Redis实例创建相应的脚本,例如redis_check.sh、redis_master.sh、redis_backup.sh、redis_fault.sh、redis_stop.sh。
这些脚本负责监控Redis状态并执行master-. 从属切换操作 处理故障转移、错误检测和服务停止。
后确保所有脚本都可执行,我们启动和关闭 Keepaliving 服务。
启动Keepaliving之前,请确保Redis服务已经启动,避免Keepaliving直接停止Redis服务,导致主节点切换到从节点时出现问题。
要将Keepaliving设置为开机自动启动,我们需要复制并修改相关脚本,以保证其能够与系统服务集成。
这包括创建与在特定文件夹中配置 Keepalive 相关的脚本,以及为这些服务添加执行权限和自动启动选项。
为了测试Keepaliving和Redis集群的高可用,我们验证主从节点之间的虚拟IP地址是否可以切换,检查Redis集群的状态是否可以正常切换,以及数据的完整性和一致性。
主节点宕机。
测试包括在主节点和辅助节点上执行数据操作,以验证数据同步和故障转移机制的正确性。
通过以上步骤,我们实现了Redis集群与Keepaliving的集成,保证了系统的高可用性和数据一致性,为应用程序提供稳定可靠的Redis服务。
Redis集群检测与恢复
一、Redis集群发现方法 1、使用redis-cli登录普通节点; 2. 使用clusterinfo命令查看集群状态。最重要的字段cluster_state:ok,表示集群正常; 另外,还可以通过集群节点来查看是哪个节点出现故障。
2.Redis集群恢复方法。
如果出现警告或者您看到集群中的节点进程丢失,请按照以下步骤操作: 步骤 1. 如果集群中的节点或进程崩溃,请先重新启动该进程; 测试中,集群有6个节点,3个主节点和3个辅助节点。
当所有进程挂起后,通过重新启动一次节点进程即可恢复redis集群。
如果你按照步骤操作的话。
如果集群节点没有恢复则必须重建集群 1. 一次性杀掉集群中所有节点的进程 2. 重新构建集群配置,以redis5为例 redis-cli [-axxx]-- clustercreate- -cluster-replicas1node_ip_1:port_11n ode_ip_2:port_2node_ip_3:port_3node_ip_4:port_4node_ip_5:port_5node_ip_6:port_6可能会报错。
解决方案:删除数据、日志、node.conf等文件并重建集群。
注:[-axxx]redis密码