Book2014.11.11 21:50

안녕하세요~!!


오늘은 책에 대한 이야기 그리고, 우분투에 대한 이야기를 좀 해 볼까 합니다. 


"오픈스택을 다루는 기술"의 5장은 서비스를 할 수 있는 오픈스택 설치를 다루고 있습니다.

제가 설치하고 테스트 했던 우분투 리눅스의 OS 버전은 12.04 LTS 버전이였으며, 오픈스택의 버전은 IceHouse였습니다.


그런데, 얼마전 10월 16일 오픈스택 Juno가 릴리즈되었고, 우분투 서버 역시 14.04.1까지 버전이 업그레이드되었습니다. 

우분투에서 네트워크 IP를 설정하려면 /etc/network/interfaces 파일을 수정해 주어야 합니다. 그리고, 시스템을 재부팅하지 않고 네트워크를 재설정하려면 ubuntu 12.04일 경우에는 sudo /etc/init.d/networking restart 명령어를 실행하면 되고, ubuntu 13.10부터는 sudo service networking restart 명령어를 실행 해주면 네트워킹이 재 적용됩니다. 


여기서, 문제가 발생합니다. Ubuntu 14.04 버전에서는 service networking restart 명령어를 실행하였을 때 네트워크 설정이 되지 않고 아래와 같은 메시지가 보이면서, 아무런 반응을 하지 않습니다.

$ sudo service networking restart

stop: Job failed while stopping

start: Job is already running: networking


예전에는 우분투가 업그레이드 되면 당연히 이 문제를 해결할 것이라고 생각을 했었는데, 아직까지도 이런 현상은 계속해서 확인이 되고 있습니다. 


오늘은 이런 현상을 쓰고자 하는것이 아니라, 14.04에서 오픈스택을 설치했을 경우 네트워크를 어떻게 설정할 수 있는지에 대한 방법을 공유하고자 이렇게 포스팅을 합니다.


일단, 3가지 방법이 있습니다. 


첫번째!  /etc/network/interfaces 파일의 네트워크 IP 설정을 마치면 시스템을 재부팅합니다. 가장 깔끔하고 쉬운 방법입니다. 이전 IceHouse install 문서에서는 service networking restart를 하라고 되어 있었지만, 최근 릴리즈된 Juno의 Install 문서에서는 재부팅을 하라고 변경되어 있습니다. 재부팅 명령어는 아래와 같습니다.

$ sudo reboot



두번째! 설정한 네트워크 인터페이스를 내렸다 올려도 네트워크를 설정할 수 있습니다. 바로 아래와 같은 명령어로 가능합니다. 여기서 eth0이 바로 interfaces에서 설정해 준 네트워크 인터페이스명입니다.

sudo ifdown eth0 && sudo ifup eth0



마지막 세번째!! 

우선, 네트워크 설정 명령어가 잘 실행이 되는 13.10 서버의 /etc/init/networking.conf 환경설정파일과 /etc/init.d/networking 실행 파일을 14.04 서버와 비교하여 봤습니다. 그리고, 13.10 서버의 networking.conf 환경설정파일과 networking 실행파일을 14.04에 대체합니다. 그러면, 14.04에서도 네트워크 설정이 아주 잘 됩니다.

root@ubuntu:/etc/init# mv networking.conf networking.conf.1401 #우선, 기존 환경설정 파일을 백업합니다.

root@ubuntu:/etc/init# tar xvf networking.tar    #13.10에서 가져온 환경설정파일의 압축을 풉니다.

networking.conf

root@ubuntu:/etc/init# diff networking.conf networking.conf.1401 #그리고, 두파일을 비교합니다.

13c13
<       and (stopped udevtrigger or container)) or runlevel [2345] #13.10에 있는 파일 내용입니다.
---
>     and (stopped udevtrigger or container)) or runlevel [2345] or stopped networking RESULT=failed PROCESS=post-stop EXIT_STATUS=100 #14.04에서는 네트워크 stop시 몇가지를 체크하도록 변경되었습니다.
16a17,20  #아래 부분은 14.04에 추가된 부분입니다. 네트워크 stop 명령어가 들어오면 정상종료가  됩니다.
>     if [ "$UPSTART_EVENTS" = "stopped" ] && [ "$UPSTART_JOB" = "networking" ] && [ "$EXIT_STATUS" = "100" ]; then
>         exit 0
>     fi
21a26,31 # 아래 부분 역시 14.04에 추가된 부분입니다. 네트워크 stop 관련된 if문입니다.
>     if [ -z "$UPSTART_STOP_EVENTS" ]; then
>         echo "Stopping or restarting the networking job is not supported."
>         echo "Use ifdown & ifup to reconfigure desired interface."
>         exit 100
>     fi
root@ubuntu:/etc/init# cd ../init.d
root@ubuntu:/etc/init.d# mv networking networking.1401 #이번에는 실행파일을 백업합니다.
root@ubuntu:/etc/init.d# tar xvf network.tar  #13.10에서 가져온 실행파일의 압축을 해제합니다.
networking
root@ubuntu:/etc/init.d# diff networking networking.1401  # 두 파일을 비교합니다.
14a15 #14.04 에 추가된 변수입니다.
> STATEDIR="$RUN_DIR/state"
21,27d21 #아래는 13.10의 네트워크를 실행하기위해 시스템 상태를 체크하는 부분입니다.
< # Make sure that it's clear to the user that they shouldn't use this
< # script under upstart
< if init_is_upstart; then
< echo "ERROR: Calling a sysvinit script on a system using upstart isn't supported. Please use the 'service' command instead."
< exit 1
< fi
57a52,54 #14.04에서는 위 부분이 사라졌으며, check_ifstate 함수에 아래와 같은 조건문이 추가 되었습니다.
> if ! chown root:netdev "$RUN_DIR" ; then
>    log_warning_msg "can't chown $RUN_DIR"
> fi
162a160,162 #14.04의 reload하는 부분에 아래와 같은 조건문이 추가 되었습니다.
> if init_is_upstart; then
> exit 1
> fi
166c166 #13.10의 인터페이스 체크하는 부분이
< state=$(cat /run/network/ifstate)
--- #14.04에서는 아래와 같이 변경되었습니다.
> state=$(ifquery --state)
root@ubuntu:/etc/init.d# ifconfig #네트워크 설정을 하기전 먼저 IP를 확인합니다.
eth0      Link encap:Ethernet  HWaddr 08:00:27:bd:71:c0  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:febd:71c0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2568 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1547 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:236344 (236.3 KB)  TX bytes:353671 (353.6 KB)

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@ubuntu:/etc/init.d# service networking restart  #네트워크를 재시작합니다. 그러나 아직 서비스가 적용전인듯..
stop: Job failed while stopping
networking start/running
root@ubuntu:/etc/init.d# service networking restart #다시 네트워크를 재시작했습니다. 이제서야 적용이 된 듯...
networking stop/waiting
networking start/running
root@ubuntu:/etc/init.d# ifconfig # 재시작후 다시 IP 확인합니다. 설정이 제대로 되었습니다.
eth0      Link encap:Ethernet  HWaddr 08:00:27:bd:71:c0  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:febd:71c0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2892 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:264381 (264.3 KB)  TX bytes:375503 (375.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:ee:09:16  
          inet6 addr: fe80::a00:27ff:feee:916/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:318 errors:0 dropped:0 overruns:0 frame:0
          TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:75247 (75.2 KB)  TX bytes:1226 (1.2 KB)

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@ubuntu:/etc/init.d# 


13.10 네트워킹 파일과 14.04 네트워킹 파일은 Ubuntu 서버에서 각각 확인하여 보실수 있지만 편의를 위해 이곳에 올려드리도록 하겠습니다. 언제라도 다운로드 받아 보시길 바랍니다.



networking.1310

networking.1401

networking.conf.1310

networking.conf.1401



위 방법은 아래 사이트를 참조하시면 더 많은 정보들을 얻으실 수 있습니다.

http://askubuntu.com/questions/441619/how-to-successfully-restart-a-network-without-reboot-over-ssh

http://snoopybox.co.kr/1720


그럼, 다음에 다시 만나요~~~ ^^

Posted by 나리 짱!!! naleejang