[Openstack] 잘못된 ovs 브릿지 인터페이스 설정으로 인해 시스템 재부팅 후 네트워크가 단절된 문제 해결
blog post
이 문제는 오픈스택의 네트워크 노드 재부팅 후 발생한 문제로, openvswitch(이하 ovs)의 기술적 문제라기 보다는 사실 관리자의 시스템 설정 실수에 가깝습니다. 지난 밤에 예상치 못하게 전원이 내려가는 바람에 시스템을 재부팅하게 되었습니다. 대부분 노드가 정상적으로 부팅되었으나, 네트워크 노드에 ssh 연결이 되지 않았습니다. 간단한 문제였지만 상황에 대해 정리해 두기 위해 포스팅합니다.
우선 시스템 터미널로 직접 들어가 봅니다. 역시나 ping은 게이트웨이까지도 가지 않는 상황입니다.
[root@Network ~]# ping 8.8.8.8
...반응없음...
ip, 게이트웨이 정보도 잘 잡혀있습니다.
[root@Network ~]# ifconfig eno16777736
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.27 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 ... prefixlen 64 scopeid 0x20<link>
ether ... txqueuelen 1000 (Ethernet)
RX packets 22543 bytes 3005069 (2.8 MiB)
RX errors 0 dropped 34 overruns 0 frame 0
TX packets 17005 bytes 3007077 (2.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@Network ~]#
[root@Network ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eno33554976
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eno33554976
혹시나 브릿지나 ovs에 바인딩되어 있는지(네트워크 설정을 구성한지 좀 오래돼서 정확히 기억이 나지 않는 상황) 확인해봅니다.
[root@Network ~]# ovs-vsctl show
...생략...
Bridge "br-eth1"
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port "phy-br-eth1"
Interface "phy-br-eth1"
type: patch
options: {peer="int-br-eth1"}
Port "br-eth1"
Interface "br-eth1"
type: internal
Port "eno16777736"
Interface "eno16777736"
ovs_version: "2.11.0"
문제를 찾았습니다. eno16777736인터페이스가 br-eth1에 바인딩 되어 있는 것을 볼 수 있습니다.
문제는 아래와 같이, 현재 network 스크립트를 통해 eno16777736 인터페이스에 ip 및 게이트웨이를 할당받도록 설정되어 있었고,
[root@Network ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE="Ethernet"
BOOTPROTO="static"
NAME="eno16777736"
DEVICE="eno16777736"
ONBOOT="yes"
IPADDR="192.168.0.27"
PREFIX="24"
GATEWAY="192.168.0.1"
DNS1="8.8.8.8"
ovs 브릿지(br-eth1)도 리눅스 인터페이스에서 다운되어 있던 상황이었습니다.
[root@Network ~]# ip link
...생략...
12: br-eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
link/ether 00:0c:29:2b:2e:4c brd ff:ff:ff:ff:ff:ff
우선 eno16777736 물리 인터페이스의 ip, gateway, dns 정보를 제거했습니다. 왜냐하면 바인딩한 브릿지가 직접 ip를 할당받아야 하기 때문입니다.
[root@Network ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE="Ethernet"
BOOTPROTO="static"
NAME="eno16777736"
DEVICE="eno16777736"
ONBOOT="yes"
다음으로 재부팅 후 자동으로 브릿지 인터페이스를 활성화 할 수 있도록 아래와 같이 스크립트를 하나 작성했습니다.
[root@Network ~]# vim /var/tmp/create_interface.sh
#!/bin/bash
ip link set up br-eth1
ip addr add 192.168.0.27/24 dev br-eth1
route add default gw 192.168.0.1 dev br-eth1
echo "nameserver 8.8.8.8" > /etc/resolv.conf
시스템에서 스크립트를 사용할 수 있도록 권한을 변경해 주었고,
[root@Network ~]# chmod 755 /var/tmp/create_interface.sh
스크립트를 부팅 과정에서 실행해 주도록 했습니다. 다만 물리 인터페이스가 올라온 후에 ovs 브릿지 인터페이스를 활성화 해 주기 위해 set_interface라는 systemd 서비스 스크립트를 작성하여 systemd를 통해 스크립트가 실행되도록 했습니다.
[root@Network ~]# vim /etc/systemd/system/set_interface.service
[Unit]
Description=Description for sample script goes here
After=network.target
[Service]
Type=simple
ExecStart=/var/tmp/create_interface.sh
TimeoutStartSec=0
[Install]
WantedBy=default.target
마지막으로 이 서비스를 활성화 해주고 재부팅해 보았습니다.
[root@Network ~]# systemctl enable set_interface
[root@Network ~]# shutdown -r now
정상적으로 ovs 브릿지 인터페이스가 ip를 할당받은 것을 볼 수 있습니다.
[root@Network ~]# ifconfig
br-eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.27 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 ... prefixlen 64 scopeid 0x20<link>
ether ... txqueuelen 1000 (Ethernet)
RX packets 26436 bytes 3524796 (3.3 MiB)
RX errors 0 dropped 316 overruns 0 frame 0
TX packets 19324 bytes 3468697 (3.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 ... prefixlen 64 scopeid 0x20<link>
ether ... txqueuelen 1000 (Ethernet)
RX packets 2179769 bytes 1653637286 (1.5 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 19353 bytes 3558987 (3.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...생략...
[root@Network ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 br-eth1
10.0.0.0 0.0.0.0 255.255.255.0 U 101 0 0 eno33554976
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br-eth1
'Trouble Shooting' 카테고리의 다른 글
[Openstack] 시스템 재부팅 후 대시보드 접속 불가 문제 (0) | 2020.05.13 |
---|---|
[Openstack ] 오픈스택 VPNaaS 환경 구성 과정에서 발생한 Max retries exceeded with url 에러 메시지 출력 문제 (0) | 2020.05.13 |
[Openstack ] 오픈스택 VPNaaS 환경 구성 과정에서 발생한 get_vpn_services_on_host 에러 메시지 출력 문제 (0) | 2020.05.13 |
[Openstack] Cinder 볼륨 생성시 error 상태가 발생하는 경우 조치 (0) | 2020.04.10 |
[Openstack] Cinder 볼륨 서비스 (호스트) 리스트에서 특정 서버 제거하기 (0) | 2020.04.10 |
[Openstack] Cinder 볼륨 삭제 안될 때 강제로 제거하기 (0) | 2020.04.10 |
[Linux] WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 현상 해결하기 (0) | 2020.04.09 |
[Linux] CentOS 커널 패닉, 잘못된 설정 등으로 인한 부팅 실패 현상 해결하기 (0) | 2020.04.09 |
[Mac] 맥 VMware Fusion 11.5에서 Windows 8.1, 10 Guest OS (가상머신) 화면 깜빡임 및 블랙아웃, 블랙스크린 현상 (1) | 2020.01.10 |