我已经编译和配置keepalived
但是它不会启动。
这是我最基本的配置;
vrrp_sync_group PUBLIC_WEB_IPS {
group {
public_http_ip_lan
}
}
vrrp_instance public_http_ip_lan {
state MASTER
interface br1118
virtual_router_id 18
priority 100
advert_int 1
virtual_ipaddress {
192.168.0.254/24 dev br1118
}
nopreempt
}
当我启动 keepalived 时,我没有收到任何错误,但它似乎让大部分等待启动,然后暂停/挂起?这是启动时来自 /var/log/syslog keepalived
;
Apr 11 17:25:33 basil Keepalived[8047]: Starting Keepalived v1.2.7 (04/08,2013)
Apr 11 17:25:33 basil Keepalived[8048]: Starting Healthcheck child process, pid=8051
Apr 11 17:25:33 basil Keepalived[8048]: Starting VRRP child process, pid=8052
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Initializing ipvs 2.6
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Interface queue is empty
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: No such interface, eth0
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: No such interface, eth1.116
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: No such interface, br1116
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: No such interface, eth1.118
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: No such interface, br1118
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Netlink reflector reports IP 10.0.115.69 added
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Netlink reflector reports IP 10.0.116.249 added
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Netlink reflector reports IP 192.168.0.250 added
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Netlink reflector reports IP fe80::2a0:c9ff:fe8f:4164 added
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Netlink reflector reports IP fe80::220:edff:fe9f:9774 added
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Netlink reflector reports IP fe80::2a0:c9ff:fe8f:4164 added
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Netlink reflector reports IP fe80::2a0:c9ff:fe8f:4164 added
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Netlink reflector reports IP fe80::2a0:c9ff:fe8f:4164 added
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Netlink reflector reports IP fe80::2a0:c9ff:fe8f:4164 added
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Registering Kernel netlink reflector
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Registering Kernel netlink command channel
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Configuration is using : 2777 Bytes
Apr 11 17:25:33 basil Keepalived_healthcheckers[8051]: Using LinkWatch kernel netlink reflector...
keepalived
仍在运行(且 CPU 使用率为 2~3%,RAM 为 10%)
user@basil:/usr/local/etc/keepalived$ ps aux | grep keepalived
root 8048 0.0 0.1 8372 808 ? Ss 17:25 0:00 /usr/local/sbin/keepalived -D
root 8051 0.0 0.3 8492 1820 ? S 17:25 0:00 /usr/local/sbin/keepalived -D
root 8052 0.0 0.2 8492 1344 ? S 17:25 0:00 /usr/local/sbin/keepalived -D
当我启动 keepalived 时,tcpdump 中没有显示任何内容,例如没有广告:
user@basil:~$ sudo tcpdump -nlASX -s 0 -vvv -e src net 192.168.0.0/24 and not port 22tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
网桥接口已启动(因为它运行在一个单独的 vlan 上);
user@basil:/usr/local/etc/keepalived$ ip a s br1118
11: br1118: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 00:a0:c9:8f:41:64 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.250/24 brd 192.168.0.255 scope global br1118
inet6 fe80::2a0:c9ff:fe8f:4164/64 scope link
valid_lft forever preferred_lft forever
我可以 ping 通该 VLAN 上的主机。这是怎么回事,我怀疑我犯了一个非常愚蠢的错误,但我无法发现任何错误。
更新:
按要求:
user@basil:~$ ifconfig -a
br1116 Link encap:Ethernet HWaddr 00:a0:c9:8f:41:64
inet addr:xxxxx Bcast:xxxxx Mask:xxxx
inet6 addr: fe80::2a0:c9ff:fe8f:4164/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1120 (1.0 KiB) TX bytes:468 (468.0 B)
br1118 Link encap:Ethernet HWaddr 00:a0:c9:8f:41:64
inet addr:xxxxx Bcast:xxxxx Mask:xxxx
inet6 addr: fe80::2a0:c9ff:fe8f:4164/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1064 (1.0 KiB) TX bytes:468 (468.0 B)
eth0 Link encap:Ethernet HWaddr 00:20:ed:9f:97:74
inet addr:xxxx Bcast:xxxxx Mask:xxxxx
inet6 addr: fe80::220:edff:fe9f:9774/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:169 errors:0 dropped:0 overruns:0 frame:0
TX packets:96 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20019 (19.5 KiB) TX bytes:11089 (10.8 KiB)
eth1 Link encap:Ethernet HWaddr 00:a0:c9:8f:41:64
inet6 addr: fe80::2a0:c9ff:fe8f:4164/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:150 errors:0 dropped:10 overruns:0 frame:0
TX packets:30 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:11680 (11.4 KiB) TX bytes:2436 (2.3 KiB)
eth1.116 Link encap:Ethernet HWaddr 00:a0:c9:8f:41:64
inet6 addr: fe80::2a0:c9ff:fe8f:4164/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1120 (1.0 KiB) TX bytes:936 (936.0 B)
eth1.118 Link encap:Ethernet HWaddr 00:a0:c9:8f:41:64
inet6 addr: fe80::2a0:c9ff:fe8f:4164/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1064 (1.0 KiB) TX bytes:936 (936.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:732 (732.0 B) TX bytes:732 (732.0 B)
我刚刚重新启动了这个盒子,这就是流量计数器很低的原因。
我遇到的情况是 keepalived 启动后什么也不做,最后一行日志是;
删除设置并重新开始后,我发现有两种情况 keepalived 会在此时停止并且什么都不做;
Keepalived 被指向 keepalived.conf 文件,所以它在技术上是在没有配置的情况下启动的
Keepalived 正在加载配置文件,但出现错误(例如拼写错误)
keepalived 的启动问题通常是因为 keepalived.conf 文件中的错误。Keepalived 目前不支持检查配置文件,如果发现任何错误,它通常会忽略所有可能的错误。
但是有一种方法可以更轻松地检测配置问题。
-d
您应该使用一个将配置数据转储到系统日志中的开关来启动 keepalived 。如果您是从 Red Hat/Centos 软件包安装的,只需编辑/etc/sysconfig/keepalived
并将其附加-d
到 KEEPALIVED_OPTIONS 变量:现在,当您启动 keepalived 时,您将能够在 syslog 中读取 keepalived 解析了哪些配置数据。此外,如果配置的某些部分有效而某些部分无效,则可能是因为您忘记了用右括号关闭一个配置块。
RHEL 6.5 有同样的问题,如果你从源代码编译 keepalived , 它将把配置文件
/usr/local/etc/keepalived
放在/etc/keepalived.conf
/etc/keepalived/keepalived.conf