I was presented with quite an unpleasant surprise today when I rebooted a few OpenVZ containers running CentOS 7 with the latest patches applied. Though each of the reboots appeared to be going fine, the virtual ethernet (venet0) interfaces did not get properly initialized with its usual public IP address:
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 12359 bytes 8562348 (8.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12359 bytes 8562348 (8.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
venet0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP> mtu 1500
inet 127.0.0.1 netmask 255.255.255.255 broadcast 0.0.0.0 destination 127.0.0.1
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 0 (UNSPEC)
RX packets 431683 bytes 454960074 (433.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 242391 bytes 38057183 (36.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
As Google often turns out to be mine and your best friend in such cases, it did come up with a valid answer to the problem:
RHEL 7.1 VPS - initscripts upgrade causes networking failures: http://forum.openvz.org/index.php?t=rview&goto=51961&th=12869
The clue to the solution being to add following line to the /etc/vz/dists/scripts/redhat-add_ip.sh
script on the hardware node:
ARPCHECK="no"
in the function create_config()
:
function create_config()
{
local ip=$1
local netmask=$2
local ifnum=$3
local file=${IFCFG_DIR}/bak/${VENET_DEV_CFG}:${ifnum}
echo "DEVICE=${VENET_DEV}:${ifnum}
ONBOOT=yes
ARPCHECK="no"
IPADDR=${ip}
NETMASK=${netmask}" > $file ||
error "Can't write to file $file" ${VZ_FS_NO_DISK_SPACE}
}
A fully patched version the script can be found here: http://git.openvz.org/?p=vzctl;a=blob;f=etc/dists/scripts/redhat-add_ip.sh
Rebooting the containers a second time confirmed that the script fix was sufficient to get the IP address assigned again:
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 12359 bytes 8562348 (8.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12359 bytes 8562348 (8.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
venet0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP> mtu 1500
inet 127.0.0.1 netmask 255.255.255.255 broadcast 0.0.0.0 destination 127.0.0.1
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 0 (UNSPEC)
RX packets 431683 bytes 454960074 (433.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 242391 bytes 38057183 (36.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
venet0:0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP> mtu 1500
inet 15.2.3.4 netmask 255.255.255.255 broadcast 15.2.3.4 destination 15.2.3.4
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 0 (UNSPEC)
Leave a comment