标签: keepalived

防止 VRRP Master 一旦失败就成为 Master

我有两台机器(A 和 B,A 是主)为虚拟 IP 运行 VRPP(来自 keepalived)。

如果 A 失败并恢复(无论出于何种原因),我如何防止 A 再次成为 Master?

我这样做是为了让我们有一个单一的故障转移到第二个盒子,恢复正常需要手动干预。

linux vrrp keepalived

13
推荐指数
2
解决办法
2万
查看次数

20多个虚拟地址的Keepalived

我已经在两台 Debian 机器上设置了 keepalived 以实现高可用性,但是我遇到了可以分配给我的vrrp_instance. 我将如何配置和故障超过 20 个虚拟 IP?

这是非常简单的设置:

LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 -  10.200.85.200
Run Code Online (Sandbox Code Playgroud)

每台机器还在虚拟 IP 上运行 Apache(后来的 Nginx)绑定,用于 SSL 客户端证书终止和代理到后端网络服务器。我需要这么多 VIP 的原因是无法在 HTTPS 上使用 VirtualHost。

这是我的 keepalived.conf:

vrrp_script chk_apache2 {
        script "killall -0 apache2"
        interval 2
        weight 2
}

vrrp_instance VI_1 {
        interface eth0
        state MASTER
        virtual_router_id 51
        priority 101
        virtual_ipaddress {
            10.200.85.100
            .
            . all the way to
            .
            10.200.85.200
}
Run Code Online (Sandbox Code Playgroud)

BACKUP 机器上有一个相同的配置,它工作正常,但只能达到第 20 个 IP。

我找到了一个HOWTO讨论这个问题。基本上,他们建议只有一个 VIP 并“通过”这个 …

networking linux ip high-availability keepalived

12
推荐指数
1
解决办法
2万
查看次数

keepalived VRRP_script 没有故障转移

所以我在两台服务器上运行keepalived,但无法将其故障转移到另一台服务器。

下面我有我的其中一台服务器的配置。两者之间唯一的区别是优先级数字主为 110,后为 109。

但是当我用 /etc/init.d/process stop keepalived 停止我的进程时,它不会进行故障转移。我只是得到 VRRP_Script(chk_script) 失败,没有别的。没有故障转移或什么都没有。

vrrp_script chk_script {
script "/usr/local/bin/failover.sh"
interval 2
weight 2
}

vrrp_instance HAInstance {
state BACKUP
interface eth0
virtual_router_id 8
priority 109
advert_int 1
nopreempt
vrrp_unicast_bind 10.10.10.8
vrrp_unicast_peer 10.10.10.9
virtual_ipaddress {
  10.10.10.10/16 dev eth0
}
notify /usr/local/bin/keepalivednotify.sh
track_script {
  chk_script weight 20
}
}
Run Code Online (Sandbox Code Playgroud)

这是我下面的 chk_script。当我将 killall -0 进程作为我的脚本时,也会发生同样的问题。

!/bin/bash
SERVICE='process'
STATUS=$(ps ax | grep -v grep | grep $SERVICE)

if [ "$STATUS" != "" ]
then
    exit 0
else …
Run Code Online (Sandbox Code Playgroud)

linux keepalived

11
推荐指数
2
解决办法
3万
查看次数

Keepalived 定期发送免费 ARP

有没有办法让keepalived定期发送免费的ARP?

我们有以下情况:

  1. 交换机故障(VLAN 设置)
  2. keepalived 故障转移到备份实例
  3. 备份实例发送了无偿 ARP,但 Cisco ASA 设备没有收到(因为交换机故障)
  4. 当交换机恢复时(几分钟后)VIP 无法访问,因为 ASA 没有刷新 ARP 表(ARP 表到期时间设置为 4h)
  5. 由于 ASA 已经拥有来自先前活动节点的 MAC,因此它没有发送 ARP 请求
  6. VIP 无法访问,直到我们重新启动了启动新 GARP 的 keepalived 实例

因此,我们认为我们可以通过定期 GARP 来避免这种情况。这是一个好方法吗,有没有办法在keepalived中做到这一点?

还有其他建议可以避免此类问题吗?

保活配置:

global_defs {
   notification_email {
     email@address.com
   }

   notification_email_from SERVER_1
   smtp_server smtp.server.local
   smtp_connect_timeout 30
   router_id SERVER_1
}

vrrp_instance V1 {
    state BACKUP
    nopreempt
    interface eth0
    lvs_sync_daemon_interface eth0
    virtual_router_id 150
    priority 120
    advert_int 1
    persistence_timeout 0
    smtp_alert

    authentication {
        auth_type PASS
        auth_pass xxx
    }

    virtual_ipaddress {
    10.xxx.xxx.xxx …
Run Code Online (Sandbox Code Playgroud)

failover high-availability arp linux-networking keepalived

10
推荐指数
1
解决办法
1万
查看次数

HAproxy 503 Service Unavailable 没有可用的服务器来处理这个请求

我是这种负载平衡方案的新手,我的任务是弄清楚如何使这种负载平衡起作用。

我的环境:

Centos 6.4 64 Bit
Webserver: Lighttpd
All running in ESXI
virtual IP: 192.168.1.6
LB1: 192.168.1.4
LB2: 192.168.1.5
Webserver 1: 192.168.1.12
Webserver 2: 192.168.1.13
Gateway: 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

尝试在使用 HAproxy 和 keepalived 生产之前在实验室中运行测试。这是我的 keepalived 设置:

!keepalived的配置文件

global_defs {
   notification_email {
     myemail@gmail.com
   }
   notification_email_from keepalived@domain.local
   smtp_server 192.168.1.4
   smtp_connect_timeout 30
   router_id 192.168.1.1
}

vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 1                     # check every second
weight 2                       # add 2 points of prio if OK
}

vrrp_instance VI_1 {
    state MASTER
    interface …
Run Code Online (Sandbox Code Playgroud)

load-balancing lighttpd haproxy keepalived centos6.4

9
推荐指数
2
解决办法
10万
查看次数

查看Keepalived的当前状态

有没有办法在服务器实例中使用命令行查看当前状态(主/备份)?

干杯

backup load-balancing keepalived

8
推荐指数
5
解决办法
4万
查看次数

keepalived 不检测虚拟 IP 的丢失

我正在使用 keepalived 在两个虚拟机之间切换浮动 IP。

/etc/keepalived/keepalived.conf 在 VM 1 上:

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 101
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass secret
    }
    virtual_ipaddress {
        1.2.3.4
    }
}
Run Code Online (Sandbox Code Playgroud)

/etc/keepalived/keepalived.conf 在 VM 2 上:

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 101
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass secret
    }
    virtual_ipaddress {
        1.2.3.4
    }
}
Run Code Online (Sandbox Code Playgroud)

这基本上可以正常工作,但有一个例外:每次 systemd 更新(它运行的是 Ubuntu 18.04)时,它都会重新加载它的网络组件,从而导致丢弃浮动 IP,因为它没有在系统中配置。由于两个keepalived实例仍然可以互相ping通,他们都没有看到任何错误,也没有人对此做出反应,导致浮动IP保持不变。

我发现您可以使用这样的简单脚本检查 IP:

vrrp_script chk_proxyip {
    script "/sbin/ip addr |/bin/grep 1.2.3.4" …
Run Code Online (Sandbox Code Playgroud)

keepalived

8
推荐指数
2
解决办法
8175
查看次数

keepalived nopreempt 选项不起作用

我想将 nopreempt 选项与 keepalived vrrp 设置一起使用,以便在主节点出现故障并再次返回网络时将备份节点作为主节点运行。

我在两台服务器中都设置了 nopreempt 选项并将状态设置为两台服务器的备份,但由于高优先级 nopreempt 不起作用。

请指导解决?

  Master Machine: 
  ! Configuration File for keepalived
   vrrp_instance VI_1 {
   state BACKUP
   nopreempt
   interface eth0
   virtual_router_id 1
   priority 250
   advert_int 1
   virtual_ipaddress {
    192.168.1.2/24
    } 
  }

  Backup Machine :
  ! Configuration File for keepalived
   vrrp_instance VI_1 {
   state BACKUP
   nopreempt
   interface eth0
   virtual_router_id 1
   priority 200
   advert_int 1
   virtual_ipaddress {
     192.168.1.2/24
   }
Run Code Online (Sandbox Code Playgroud)

}

问候,本

keepalived

7
推荐指数
2
解决办法
2万
查看次数

使用 Keepalived 设置主动/主动 HAProxy 的任何问题

抱歉,如果之前有人问过这个问题,但我似乎找不到太多关于它的信息。

我们将使用 HAProxy 来平衡我们的 MariaDB Galera 集群。我在这方面看到的所有文章/教程都使用 Keepalived(或类似的东西)进行主动/被动 HAProxy 设置。

有什么好的理由为什么你不应该有一个主动/主动设置?

每个 HAProxy 节点都可以有一个固定的 IP,并且都有一个浮动的 IP。在正常情况下,请求在两个 HAProxy 节点之间共享,如果一个节点宕机,另一个将使用它的浮动 IP 并处理两个 IP 下的请求。当另一个恢复时,它会再次获取其浮动 IP 和负载份额。

我很感激你对此的意见。

卢克

high-availability load-balancing haproxy keepalived

7
推荐指数
1
解决办法
9879
查看次数

Keepalived 不发送多播广告

我有两个系统,两个都是虚拟机。配置为使用桥接网络。我正在尝试使用 keepalived 来管理 VIP 的所有权 - 10.190.1.230。我尝试了从源代码构建的两个版本的 keepalived-1.2.2 和 keepalived-1.2.1。

ServerA - RHEL5.2 x64 - 10.190.1.228 - PRIORITY 50
ServerB - RHEL6 x64 - 10.190.1.229 - PRIORITY 101
VIP - 10.190.1.230
Run Code Online (Sandbox Code Playgroud)

我的问题似乎是在 ServerB 上 keepalived 没有发送多播广告。它正在看到多播广告。来自服务器A:

[root@ServerB~]# tcpdump -vv -c 3 -i eth0 vrrp
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:18:10.760577 IP (tos 0x0, ttl 255, id 856, offset 0, flags [none], proto VRRP (112), length 40)
10.190.1.228 > 224.0.0.18: VRRPv2, Advertisement, vrid 151, …
Run Code Online (Sandbox Code Playgroud)

linux haproxy fault-tolerance keepalived

6
推荐指数
1
解决办法
6158
查看次数