티스토리 뷰
안녕하세요~!!
SDN을 위한 네트워크 노드를 설치해 보자
네트워크 노드는 Neutron을 이용해서 SDN(Software Defined Network)을 해야 할 경우에 필요합니다. 기존 레거시 네트워크(nova-network)를 이용할 경우에는 필요하지 않습니다. 앞서 Neutron 기본 플러그인 ML2을 사용해서 GRE 방식에 OpenvSwitch 메커니즘 드라이버를 사용하기로 했습니다. 그럼 지금부터 네트워크 노드에 필요한 서비스들을 하나씩 설치하겠습니다.
네트워크 인터페이스 설정
네트워크 노드는 모니터링 및 관리를 위한 IP, 컴퓨트 노드의 인스턴스들과 통신할 내부 IP, 인스턴스들이 외부 인터넷을 할 수 있도록 연결하기 위한 외부 IP로 이루어 집니다. 그래서 필요한 이더넷 카드는 총 3장입니다. 그럼 지금부터 네트워킹을 위한 IP 설정을 하겠습니다.
1. eth0은 모니터링 및 관리용 IP로, eth1은 내부용 IP로, eth2는 외부용 manual IP로 설정합니다.
$ sudo vi /etc/network/interfaces # The loopback network interface auto lo iface lo inet loopback
# The primary network interface auto eth0 iface eth0 inet static address 10.10.15.21 netmask 255.255.255.0 gateway 10.10.15.1 dns-servers 8.8.8.8
auto eth1 iface eth1 inet static address 10.10.10.21 netmask 255.255.255.0
# The external network interface
auto eth2
iface eth2 inet manual
up ip link set dev $IFACE up
down ip link set dev $IFACE down |
2. /etc/hosts 파일에는 네트워크 노드, 컨트롤러 노드, 컴퓨트 노드의 관리용 IP를 등록합니다.
$ sudo vi /etc/hosts # network 10.10.15.21 network
# controller 10.10.15.11 controller
# compute1 10.10.15.31 compute1 |
3. 네트워크 인터페이스 설정이 완료되면 우분투 서버에 적용할 수 있게 다음과 같이 네트워크 서비스를 재시작합니다.
$ sudo service networking stop && sudo service networking start |
*** 지난번 블로그에 포스팅한 내용을 보셨나요? Ubuntu Server 14.04 LTS 버전에서 오픈스택을 설치하시는 분이시라면 당연히 위와 같이 설정을 해 주어야 합니다. 그런데, 14.04 LTS 버전에서 네트워크 설정시 문제가 발생한다고 하였습니다. 저는 그래서, Ubuntu 12.04 LTS 버전에서 설치를 했었습니다. 해결 방법은 아래 블로그에 포스팅해 드렸으니 참조하시길 바랍니다.
[Ubuntu] Ubuntu 14.04와 13.10에 대한 Networking 서비스 차이
NTP 설치
컨트롤러 노드에 NTP(Network Time Protocol) 서버를 설치했다면 네트워크 노드와 컴퓨트 노드에는 클라이언트를 설치합니다.
1. Ntp를 설치합니다.
$ sudo apt-get install ntp |
2. Ntpudate를 이용해서 컨트롤러 노드의 NTP 서버와 시간을 동기화합니다.
$ sudo ntpdate -u 10.10.15.11
28 May 10:35:31 ntpdate[2737]: step time server 10.10.15.11 offset -134035.065856 sec |
3. 동기화된 시간은 다음과 같은 명령어로 하드웨어 시간인 BIOS 시간과 다시 동기화합니다.
$ sudo hwclock -w |
데이터베이스 설치
컨트롤러 노드에서 이미 Mysql 서버를 설치했으므로 네트워크 노드와 컴퓨트 노드에서는 Python Mysql API만 설치하면 됩니다.
1. apt-get을 이용해서 Python Mysql API를 설치합니다.
$ sudo apt-get install python-mysqldb |
Packages 설치
패키지는 컨트롤러 노드 뿐만 아니라 네트워크 노드, 컴퓨트 노드에도 반드시 설치해야 합니다. 만일 패키지 설치를 하지 않고 그냥 지나간다면 노드 간 버전이 맞지 않아 실행이 되지 않습니다. 패키지 설치 방법은 컨트롤러 노드와 동일합니다.
1. apt-get을 이용해서 python-software-properties를 설치하고 레파지토리에 icehouse를 추가합니다.
$ sudo apt-get install python-software-properties
$ sudo add-apt-repository cloud-archive:icehouse |
** "오픈스택을 다루는 기술"에서는 IceHouse 버전으로 오픈스택을 설치했습니다. 그러나 얼마전에 Juno가 릴리즈되었죠~!! Juno를 설치하시고 싶으신 분들은 클라우드 아카이브를 설정하실때 아래와 같이 juno로 설정하시면 됩니다.
$ sudo add-apt-repository cloud-archive:juno
2. 패키지가 설치되면 시스템 업데이트 및 업그레이드를 실행합니다.
$ sudo apt-get update $ sudo apt-get dist-upgrade |
3. 이때 네트워크 노드의 우분투 버전이 12.04라면 다음과 같이 백포트된 리눅스 커널을 설치해야 합니다. 리눅스 커널은 Neutron을 사용할 경우 설치하는 것이 좋고, Nova-network를 사용할 경우라면 설치하지 않아도 됩니다.
$ sudo apt-get install linux-image-generic-lts-saucy linux-headers-generic-lts-saucy |
4. 패키지 설치와 시스템 업그레이드가 완료되면 시스템을 재부팅합니다.
$ sudo reboot |
Neutron 네트워킹 설치
네트워크 노드는 컴퓨트 노드에 설치되는 모든 인스턴스의 IP를 관리하고 외부 인터넷과 연결될 수 있도록 관리합니다. 그럼 지금부터 Neutron을 설치하겠습니다.
1. /etc/sysctl.conf 파일을 열어 다음과 같은 내용을 추가합니다. net.ipv4.ip_forward=1은 IP를 공유해서 포워딩이 가능하도록 설정하겠다는 뜻입니다. 또한 rp_filter는 패킷이 들어오는 인터페이스와 나가는 인터페이스가 같은지에 대한 검사 여부를 설정하는데 0으로 설정하면 검사를 하지 않겠다는 뜻입니다.
$ sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0 |
2. 수정된 sysctl.conf 파일의 내용을 sysctl 명령을 이용해서 시스템에 적용합니다.
$ sudo sysctl –p
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0 |
3. ML2 플러그인과 OpenvSwitch, L3 에이전트, DHCP 에이전트를 설치합니다.
$ sudo apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent \n
openvswitch-datapath-dkms neutron-l3-agent neutron-dhcp-agent |
4. 설치가 완료되면 /etc/neutron/neutron.conf 파일의 내용을 다음과 같이 수정합니다. 이때 들어가는 모든 IP는 컨트롤러 노드 IP나 도메인 주소를 입력합니다.
|
5. /etc/neutron/l3_agent.ini 파일을 열어 다음과 같이 수정합니다. 우리는 OpenvSwitch을 메커니즘 드라이버로 사용할 것이기 때문에 인터페이스 드라이버는 OVSInterfaceDriver를 사용하겠다고 설정합니다.
$ sudo vi /etc/neutron/l3_agent.ini
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True |
6. /etc/neutron/dhcp_agent.ini 파일을 열어 다음과 같이 수정합니다.
$ sudo vi /etc/neutron/dhcp_agent.ini
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
use_namespaces = True |
7. /etc/neutron/metadata_agent.ini 파일에서 keystone으로 인증할 인증정보를 다음과 같이 수정합니다.
$ sudo vi /etc/neutron/metadata_agent.ini
[DEFAULT]
...
auth_url = http://10.10.15.11:5000/v2.0
auth_region = regionOne
admin_tenant_name = service
admin_user = neutron
admin_password = neutronpass
nova_metadata_ip = 10.10.15.11
metadata_proxy_shared_secret = metadatasecret |
8. /etc/neutron/plugins/ml2/ml2_conf.ini 파일에서 네트워크 타입과 메커니즘 드라이버 정보를 다음과 같이 입력합니다.
|
9. 환경설정을 모두 마치면 openvswitch을 재시작합니다.
$ sudo service openvswitch-switch restart |
10. 내부 인스턴스의 IP를 관리할 br-int를 Openvswitch에 추가합니다.
$ sudo ovs-vsctl add-br br-int |
11. 이번에는 외부 인터넷과 연결될 br-ex를 openvswitch에 추가합니다.
$ sudo ovs-vsctl add-br br-ex |
12. Openvswitch에 br-ex를 추가했으면 br-ex에 물리 네트워크 카드를 연결해야 합니다. 네트워크 노드의 네트워크 IP를 설정할 때 인스턴스의 외부 인터넷 사용을 위해서 manual IP를 설정했었습니다. 그때 설정했던 manual IP의 네트워크 인터페이스를 다음과 같이 연결합니다.
$ sudo ovs-vsctl add-port br-ex eth2 |
13. 마지막으로 설치했던 neutron 서비스들을 재시작합니다.
$ sudo service neutron-dhcp-agent restart
neutron-dhcp-agent stop/waiting
neutron-dhcp-agent start/running, process 11797
$ sudo service neutron-plugin-openvswitch-agent restart
neutron-plugin-openvswitch-agent stop/waiting
neutron-plugin-openvswitch-agent start/running, process 11814
$ sudo service neutron-dhcp-agent restart
neutron-dhcp-agent stop/waiting
neutron-dhcp-agent start/running, process 11926
$ sudo service neutron-metadata-agent restart
neutron-metadata-agent stop/waiting
neutron-metadata-agent start/running, process 11949 |
** "오픈스택을 다루는 기술"에서 이부분에 오류가 있었습니다. neutron-dhcp-agent 서비스 역시 다른 서비스와 마찬가지로 한번만 재 시작을 해 주어야 합니다. 그런데 두번을 재시작을 했습니다. 물론 두번 재시작한다고 해서 문제가 되지는 않습니다. 그리고, neutron-metadata-agent 서비스 역시 재시작을 해 주어야 합니다. 처음 써 본 책이라 생각보다 오류와 오타가 많았습니다. 넓은 마음으로 이해해 주시면 정말 감사하겠습니다.
이렇게서 네트워크 노드를 설치해 보았습니다. 다음 포스팅에서는 컴퓨트 노드를 설치해 보도록 하겠습니다.
그럼, 다음 시간에 다시 만나요~~~~ ^^
'OpenStack Class' 카테고리의 다른 글
[OpenStack Class] 제39강 서비스가 가능한 오픈스택 설치11편 - 컴퓨트 노드 설치2 (2) | 2014.12.19 |
---|---|
[OpenStack Class] 제38강 서비스가 가능한 오픈스택 설치10편 - 컴퓨트 노드 설치1 (2) | 2014.12.17 |
[OpenStack Class] 제36강 서비스가 가능한 오픈스택 설치8편 - 컨트롤러 노드 설치6 (4) | 2014.12.13 |
[OpenStack Class] 제35강 서비스가 가능한 오픈스택 설치7편 - 컨트롤러 노드 설치5 (12) | 2014.12.10 |
[OpenStack Class] 제34강 서비스가 가능한 오픈스택 설치6편 - 컨트롤러 노드 설치4 (19) | 2014.12.05 |
- Total
- Today
- Yesterday
- Java
- 설치
- ubuntu
- Network
- 파이썬
- Swift
- 레드햇
- NOVA
- install
- 클라우드
- 뉴트론
- 오픈쉬프트
- sdn
- cpu
- OVN
- Python
- Redhat
- 쿠버네티스
- 하둡
- 네트워크
- 우분투
- 세미나
- neutron
- 후기
- 컨테이너
- 명령어
- openstack
- 김미경
- 오픈스택
- command
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |