keepalived设置不抢占

本文介绍如何通过配置Keepalived避免主备节点在故障恢复后的不必要切换。通过设置不同优先级并使用nopreempt选项,确保高优先级节点故障恢复后不再抢占主节点位置。
通常情况下,利用Keepalived做整个集群的高可用组件,其中一台设置为master,一台设置为backup。当master出现异常后,backup自动切换为master。然而当master恢复正常后会再次抢占成为master,最终导致不必要的主备切换。因此可以将两台keepalived初始状态均配置为backup,设置不同的优先级,优先级高的设置为nopreempt来解决异常恢复后再次抢占的问题。
具体设置如下所示:
A调度机器设置为:
vrrp_instance VI_feng
{
    ....
     
    state backup
    priority 100
    nopreempt
   ....
 
  }
B调度机器设置为:
vrrp_instance VI_feng
{
    ....
     
    state backup
    priority 70
    nopreempt
   ....
 
  }
通过以上设置我们可实现当优先级高的调度节点故障恢复后,不再抢占为主调度服务器,从而也就避免了因调度节点的故障及故障恢复后来回切换的问题。

原文出自:
http://blog.chinaunix.net/uid-25723371-id-5011178.html
<think>首先,用户的问题是:“我想查找keepalived配置抢占的方法 请问keepalived如何配置抢占”。我需要基于系统级指令来回答。 系统指令包括: - 所有行内数学表达式使用$...$格式(但这里可能涉及数学)。 - 独立公式使用$$...$$并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^number]。 用户提供了多个引用,我需要参考它们来回答问题。引用内容是关于Keepalived配置抢占模式的。 关键点从引用中: - 引用[1]:设置两台机器都为backup状态,设置同优先级,使用nopreempt参数。 - 引用[2]:讨论非抢占模式的异常情况。 - 引用[3]:对比抢占模式的配置,强调主备由priority决定。 - 引用[4]:建议设置为非抢占模式nopreempt。 - 引用[5]:提供master端作为backup状态的配置示例。 用户的核心需求是配置Keepalived抢占。 我的回答结构应该清晰,逐步解决问题: 1. 解释什么是抢占和非抢占模式。 2. 描述如何配置抢占模式。 3. 提供配置示例。 4. 确保回答真实可靠,基于引用。 步骤: - 开始用中文解释。 - 使用行内LaTeX格式(如果有数学表达式,但可能需要)。 - 独立公式如果有(这里可能需要)。 - 生成相关问题在末尾。 - 在引用内容后添加引用标识。 回答大纲: 1. **引言**:简述Keepalived抢占问题。 2. **配置方法**: - 设置state为backup。 - 设置priority同。 - 添加nopreempt参数。 3. **配置示例**:提供一个简单的配置片段。 4. **注意事项**:提到可能的异常情况(如引用[2])。 5. **结论**:总结效果。 6. **相关问题**:生成3-5个相关问题。 配置示例来自引用: - 引用[1]和[5]提供了配置:state backup, priority, nopreempt. 配置示例: - 优先级高的机器: ``` vrrp_instance VI_feng { state backup priority 100 nopreempt ... } ``` - 优先级低的机器: ``` vrrp_instance VI_feng { state backup priority 70 nopreempt ... } ``` 确保回答中自然地添加引用: - 例如,在描述配置时,添加“[^1]”或“[^5]”。 生成相关问题: - 基于主题,如:Keepalived抢占模式的优点、常见问题、优化方法等。 相关问题示例: 1. 什么是Keepalived抢占模式? 2. 如何解决Keepalived抢占模式下的故障? 3. Keepalived配置中priority的意义是什么? 4. 非抢占模式在高可用系统中的优缺点? 5. 如何处理Keepalived启动时的抢占问题(如引用[2])? 最后,确保回答结构清晰。 </think>### Keepalived抢占模式配置方法 在Keepalived高可用集群中,默认情况下,当MASTER节点故障恢复后,会重新抢占成为主节点,导致必要的切换。为避免这种情况,可以配置非抢占模式(nopreempt)。以下是基于站内引用整理的详细配置步骤和示例。 #### 配置原理 非抢占模式的核心是通过设置所有节点为`BACKUP`状态、定义同优先级(priority),并添加`nopreempt`参数来实现: - **state backup**:所有节点初始状态均设为`BACKUP`,而非`MASTER`(主节点由优先级决定)[^3][^4]。 - **priority**:优先级高的节点默认成为主节点(例如,优先级100 > 70),但会因恢复而抢占[^1][^5]。 - **nopreempt**:添加此参数阻止高优先级节点故障恢复后重新抢占主节点角色[^1][^4]。 - **其他一致参数**:`virtual_router_id`、`authentication`等必须主备一致,确保节点属于同一组[^3]。 #### 配置步骤 1. **修改Keepalived配置文件**(通常位于`/etc/keepalived/keepalived.conf`)。 2. **设置所有节点为BACKUP状态**:避免任何节点初始化为MASTER。 3. **定义同优先级**: - 主节点(优先级高):例如,priority 100。 - 备节点(优先级低):例如,priority 70。 4. **添加nopreempt参数**:在主节点配置中启用非抢占。 5. **确保一致性**: - `virtual_router_id`值相同(例如,51或52)。 - 认证信息(如`auth_type PASS`和`auth_pass`)一致。 6. **重启服务**:配置后重启Keepalived服务(如`systemctl restart keepalived`)。 #### 配置示例 以下是一个典型的两节点集群配置(优先级100的节点为主节点,优先级70的为备节点): - **主节点配置**: ```bash vrrp_instance VI_1 { state BACKUP # 初始状态设为BACKUP interface eth0 # 网卡名称,根据实际修改 virtual_router_id 51 # 虚拟路由ID,主备必须一致 priority 100 # 高优先级(默认成为主) nopreempt # 启用非抢占模式 advert_int 1 # VRRP报文间隔 authentication { auth_type PASS auth_pass 1234 # 密码需一致 } virtual_ipaddress { 192.168.1.100/24 # 虚拟IP地址 } } [^1][^5] ``` - **备节点配置**: ```bash vrrp_instance VI_1 { state BACKUP # 同样设为BACKUP interface eth0 virtual_router_id 51 # 与主节点相同 priority 70 # 低优先级 nopreempt # 非抢占模式 advert_int 1 authentication { auth_type PASS auth_pass 1234 } virtual_ipaddress { 192.168.1.100/24 } } [^1][^5] ``` #### 效果验证 - 正常运行时:优先级100的节点为主节点,持有虚拟IP。 - 主节点故障:备节点(优先级70)自动接管。 - 主节点恢复:抢占,备节点继续作为主节点,避免频繁切换[^1][^4]。 #### 注意事项 - **硬件兼容性问题**:某些服务器(如DELL)可能在启动时抢占,需检查VRRP报文是否正常接收(可使用`tcpdump`抓包排查)[^2]。 - **参数一致性**:`virtual_router_id`或认证密码一致可能导致配置失效[^3]。 - **测试建议**:在生产环境部署前,模拟故障测试切换逻辑(如手动关闭节点)。 通过以上配置,可以实现稳定的非抢占模式,提升集群可靠性[^4][^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值