我有一个由 3 个 Ubuntu 节点组成的集群,在实验室的 VM 中运行,现在想将其投入生产。Hetzner Online hetzner.de 提供了一些物有所值的专用服务器,所以我租了 3 台机器,连接了一个千兆交换机。
我的目的是在 2 个 HAProxy 服务器前创建一个带有两个 keepalived 的 HA-Setup。Keepalived 在我的设置中配置了一个 VIP。不幸的是,这不适用于 Hetzner。然而,他们提供了一个称为故障转移 IP 的系统,可以在脚本的帮助下切换到另一台服务器:http : //wiki.hetzner.de/index.php/Failover_Skript
我的 keepalived 配置如下所示:
vrrp_script chk_haproxy {
script "killall -0 haproxy" # cheaper than pidof
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
virtual_ipaddress {
192.168.56.101/24 # this is the shared IP …Run Code Online (Sandbox Code Playgroud) 我正在尝试在基于 ESXi 的设置上设置 keepalived,其中 2 个物理盒安装了 ESXi,并且每个物理盒都有一个使用 HAProxy 作为负载均衡器的节点。现在为了实现高可用性,我想使用 KeepAlived,这样两个 HAProxy 实例都可以共享虚拟 IP,并且我可以将物理 IP 地址指向虚拟 IP 地址。我的实现面临的挑战是它有 2 个子网。
子网 A 上的 HAProxy:1.1.10.101 子网 B 上的 HAProxy:1.2.10.101
现在,当我尝试在两个实例上分配虚拟 IP 1.1.10.201 时,它如何指向两个服务器上的本地实例。
我使用带有 HAProxy 和 KeepAlived 的 CentOS 7.x,主要是为了负载平衡 HTTP 流量,也可能用于数据库。
我不会发布配置文件,因为问题本身非常简单,但如果需要,我可以这样做。
我们已经设置了 3 个运行keepalived 的服务器。我们开始注意到一些我们无法解释的随机连任发生,所以我来到这里寻求建议。
这是我们的配置:
掌握:
global_defs {
notification_email {
webops@example.com
}
notification_email_from keepalived@hostname
smtp_server example.com:587
smtp_connect_timeout 30
router_id some_rate
}
vrrp_script chk_nginx {
script "killall -0 nginx"
interval 2
weight 2
}
vrrp_instance VIP_61 {
interface bond0
virtual_router_id 61
state MASTER
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass PASSWORD
}
virtual_ipaddress {
X.X.X.X
X.X.X.X
X.X.X.X
}
track_script {
chk_nginx
}
}
Run Code Online (Sandbox Code Playgroud)
备份1:
global_defs {
notification_email {
webops@example.com
}
notification_email_from keepalived@hostname
smtp_server example.com:587
smtp_connect_timeout 30
router_id …Run Code Online (Sandbox Code Playgroud) 我在 Softlayer 上有 2 个虚拟服务器,都运行 HAProxy。我正在尝试使用 keepalived 设置故障转移。每个服务器都有一个私有IP和一个公共IP,它们在同一个VLAN上。我已经为 keepalived 尝试了许多不同的设置,但是在 master 上停止 HAProxy,它不会故障转移到 BACKUP。
我读到不支持多播,因此我已将设置更改为单播。现在,备份/主服务器上的设置基本上是这样的:
vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
}
vrrp_instance VI_1 {
debug 2
interface eth1
state MASTER
virtual_router_id 51
priority 101
unicast_src_ip 1.2.3.4 # My IP
unicast_peer {
5.6.7.8 # peer IP
}
track_script {
chk_haproxy
}
}
Run Code Online (Sandbox Code Playgroud)
其中 MYIP 是 conf 文件所在服务器的公共 IP 地址,PEERIP 是对等方的公共 IP 地址。它仍然不起作用。在 master 上停止 HAProxy,它不会故障转移到备份。
我想知道是否有人在 Softlayer 上设置了带故障转移的 HAProxy,他们是如何实现的?
问题是如果我想使用keepalived,我的两个 EC2 实例(ha 代理)需要绑定一个虚拟 IP ,但它们在 EC2 中是不可能的,因为在给定时间只有一个实例可以使用弹性 IP,所以它是不可能吧?
high-availability amazon-ec2 amazon-web-services amazon-elastic-ip keepalived
出于测试目的,我提出了 2 个 Debian jessie VM(使用 vagrant 和 virtualbox),并让它们都运行一个迷你 Web 服务器并配置了 keepalived。
问题是 BACKUP 服务器在几秒钟后service keepalived restart无缘无故地转换到 MASTER。
我还看到 VRRP 多播数据包到达两台服务器,它们看起来符合预期。(这似乎意味着Keepalived 不需要的过渡到 master 中建议的解决方案无关)
配置文件如下:
主服务器:
global_defs {
lvs_id tom_lvs
}
vrrp_instance tom_lvs {
state MASTER
interface eth1
virtual_router_id 1
lvs_sync_daemon_interface eth1
priority 100
preempt
authentication {
auth_type PASS
auth_pass 1234
}
advert_int 1
virtual_ipaddress {
172.28.128.10/24
}
virtual_server 172.28.128.10 3000 {
delay_loop 10
lb_algo wlc
lb_kind DR
protocol TCP
persistence_timeout 1800
sorry_server 172.28.128.3 3000
real_server …Run Code Online (Sandbox Code Playgroud)