Ucarp 在 Centos 6 上启动错误:“您必须提供有效的主机 ID”

Ucarp 在 Centos 6 上启动错误:“您必须提供有效的主机 ID”

我正在尝试让 ucarp 在 2 台运行 Apache 的 Centos 6 服务器上运行。我已经配置了/etc/sysconfig/carp/vip-001.conf/etc/sysconfig/网络脚本/eth0eth0:0例如在 serv1 上:

vip-001.conf

# Virtual IP configuration file for UCARP
# The number (from 001 to 255) in the name of the file is the identifier
# $Id$
ID=001

# Set the same password on all mamchines sharing the same virtual IP
PASSWORD="MYPASSWD"

# You are required to have an IPADDR= line in the configuration file for
# this interface (so no DHCP allowed)
BIND_INTERFACE="eth0"

# Do *NOT* use a main interface for the virtual IP, use an ethX:Y alias
# with the corresponding /etc/sysconfig/network-scripts/ifcfg-ethX:Y file
# already configured and ith ONBOOT=no
VIP_INTERFACE="eth0:0"

# If you have extra options to add, see "ucarp --help" output
# (the lower the "-k <val>" the higher priority and "-P" to become master ASAP)
   OPTIONS="-k 128 -P"

eth0

DEVICE="eth0"
BOOTPROTO="static"
HWADDR="00:15:5D:09:16:0E"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="9cffb321-f06b-49ce-a075-72baecaa0395"
IPADDR=192.168.9.185
NETMASK=255.255.240.0
BROADCAST=192.168.15.255
NETWORK=192.168.0.0
GATEWAY=192.168.15.254

eth0:0

DEVICE=eth0:0
BOOTPROTO=none
ONBOOT=no
IPADDR=192.168.9.190
NETMASK=255.255.240.0
USERCTL=yes
IPV6INIT=no

Serv2 基本相同,只是 IP 有少许​​修改。但我无法启动 ucarp(ucarp start),而且一直出现错误:

[ERROR] You must supply a valid virtual host id

有人知道如何修复此问题吗?提前致谢!

编辑 1:好的,经过一些测试,似乎 ucarp 不使用我配置的 vip-001.conf 文件。当我尝试通过使用命令行配置来启动它时:ucarp start --vhid=1 它要求输入密码(我猜我可以使用 --password 选项设置)。那么...我在哪里设置它使用的文件?我查看了 /etc/init.d/carp,但它似乎没问题,而且我没有修改它,所以...

编辑 2:当我尝试通过 sh -x /etc/init.d/carp start 启动 ucarp 时,不断收到“在接口文件 ifcfg-eth0: 中未找到 IPADDR”错误。我不知道如何修复它...

答案1

我发现了问题。

注意初始化脚本中的第 55 行:

BIND_ADDRESS="`ifconfig ${BIND_INTERFACE} | sed -n 's/.*inet addr:\([^ ]*\) .*/\1/p' | head -n 1`"

这是尝试从输出中获取 IP 地址ifconfig eth0。在英语中,它工作正常,因为ifconfig eth0返回的内容类似于:

eth0      Link encap:Ethernet  HWaddr C6:9B:8E:AF:A7:69  
          inet addr:192.168.6.192  Bcast:192.168.6.255  Mask:255.255.255.0
          inet6 addr: fe80::c49b:8eff:feaf:a769/64 Scope:Link

所以:

# ifconfig eth0 | sed -n 's/.*inet addr:\([^ ]*\) .*/\1/p' | head -n 1
192.168.6.192

但用您的语言(法语?)ifconfig eth0返回:

eth0      Link encap:Ethernet  HWaddr 00:15:5D:09:16:0E
          inet adr:192.168.9.185  Bcast:192.168.15.255  Masque:255.255.240.0
          adr inet6: fe80::215:5dff:fe09:160e/64 Scope:Lien

请注意,它是“因特网地址“ 代替 ”inet 地址“,所以什么都不返回。这就是启动 UCARP 时ifconfig eth0 | sed -n 's/.*inet addr:\([^ ]*\) .*/\1/p' | head -n 1得到的结果的原因。no IPADDR found in interface file ifcfg-eth0:

修复方法是打开 init 脚本并将第 55 行更改为:

BIND_ADDRESS="`ifconfig ${BIND_INTERFACE} | sed -n 's/.*inet adr:\([^ ]*\) .*/\1/p' | head -n 1`"

(只需删除“d”字符)

$IPADDR或者更简单的方法是从中获取的值/etc/sysconfig/network-scripts/ifcfg-eth0

BIND_ADDRESS=${IPADDR}

答案2

在 vip-001.conf 等文件中,您无需设置 ID,它来自文件名。删除以 ID 开头的那行。

Serv2 也应该在 .conf 文件中具有略微不同的 k 值来设置优先级。

相关内容