4 오픈스택 구축
4.2 네트워크 노드 설치
4.2.1 NTP 설치
컨트롤러 노드에 NTP 서버를 설치하였으므로 네트워크 노드에는 NTP 클라이언트를 설치한다.
apt-get 명령어를 이용해 ntp 패키지를 설치하고 컨트롤러 노드의 NTP 서버와 시간 동기화 및 BISO 시간과 동기화한다.
# NTP 클라이언트 설치 $ sudo apt-get install ntp $ sudo ntpdate -u 192.168.0.11 15 May 10:12:09 ntpdate[1942]: adjust time server 192.168.0.11 offset 0.008702 sec $ sudo hwclock -w |
4.2.2 데이터베이스 설치
컨트롤러 노드에서 이미 MySQL 서버를 설치하였으므로 네트워크 노드는 Python Mysql API만 설치하면 된다.
# Python Mysql API 설치 $ sudo apt-get install python-mysqldb |
4.2.3 오픈스택 아이스하우스 패키지 설치
apt-get 명령어를 이용해 python-software-properties 패키지를 설치하고 repository에 icehouse를 추가한다. 그리고 시스템 업데이트를 한 후 재부팅한다.
# 아이스하우스 패키지 설치 $ sudo apt-get install python-software-properties $ sudo add-apt-repository cloud-archive:icehouse [ ENTER ] 누른다. $ sudo apt-get update && sudo apt-get dist-upgrade && sudo reboot |
4.2.4 Neutron Networking 설치
/etc/sysctl.conf 파일을 열어 맨 첫줄에 그림과 같은 값들을 붙여넣기 해준다.
net.ipv4.ip_forward=1은 IP를 공유해서 포워딩이 가능하도록 설정하는 것이고, _filter는 들어오는 패킷과 나가는 패킷의 인터페이스가 동일한지 검사하는 것이다.
그리고 설정한 내용을 시스템에 재부팅 없이 적용하기 위해 sysctl 명령어를 사용한다.
# sysctl.conf 파일 설정 $ sudo vi /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 $ sudo sysctl -p net.ipv4.ip_forward = 1 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.default.rp_filter = 0 |
Neutron 관련 패키지를 설치한다.
# Neutron 설치 $ sudo apt-get install neutron-plugin-ml2 neutron-plugin-openvswitch-agent openvswitch-datapath-dkms neutron-l3-agent neutron-dhcp-agent |
/etc/neutron/neutron.conf 파일을 열어 그림과 같이 설정한다.
# neutron.conf 파일 설정 $ sudo vi /etc/neutron/neutron.conf 1 [DEFAULT] 53 core_plugin = ml2 62 service_plugins = router 70 auth_strategy = keystone 98 allow_overlapping_ips = True 105 rpc_backend = neutron.openstack.common.rpc.impl_kombu 134 rabbit_host = 192.168.0.11 136 rabbit_password = rabbitpass 400 [keystone_authtoken] 401 auth_uri = http://192.168.0.11:5000 402 auth_host = 192.168.0.11 403 auth_protocol = http 404 auth_port = 35357 405 admin_tenant_name = service 406 admin_user = neutron 407 admin_password = neutronpass 408 signing_dir = $state_path/keystone-signing 410 [database] 416 #connection = sqlite:////var/lib/neutron/neutron.sqlite 417 connection = mysql://neutron:neutrondbpass@192.168.0.11/neutron |
/etc/neutron/l3_agent.ini 파일을 열어 인터페이스 드라이브를 OVSInterfaceDriver로 사용하겠다고 설정해준다.
# l3_agent.ini 파일 설정 $ sudo vi /etc/neutron/l3_agent.ini 1 [DEFAULT] 11 interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver 23 use_namespaces = True |
/etc/neutron/dhcp_agent.ini 파일을 열어 그림과 같이 설정해준다.
# dhcp_agent.ini 파일 설정 $ sudo vi /etc/neutron/dhcp_agent.ini 1 [DEFAULT] 16 interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver 31 dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq 35 use_namespaces = True |
/etc/neutron/metadata_agent.ini 파일을 열어 keystone 인증정보를 수정한다.
# metadata_agent.init 파일 설정 $ sudo vi /etc/neutron/metadata_agent.ini 1 [DEFAULT] 6 auth_url = http://192.168.0.11:5000/v2.0 7 auth_region = regionOne 12 admin_tenant_name = service 13 admin_user = neutron 14 admin_password = neutronpass 20 nova_metadata_ip = 192.168.0.11 29 metadata_proxy_shared_secret = metadatasecret |
ml2_conf.ini 파일을 열어서 네트워크 타입과 드라이버 정보를 다음과 같이 설정한다. 이 때 [ovs] 항목을 추가해야 되며 local_ip는 eth1에 해당하는 IP로 설정해야 한다.
# ml2_conf.ini 파일 설정 $ sudo vi /etc/neutron/plugins/ml2/ml2_conf.ini 1 [ml2] 5 type_drivers = gre 12 tenant_network_types = gre 17 mechanism_drivers = openvswitch 42 [ml2_type_gre] 44 tunnel_id_ranges = 1:1000 46 [ovs] 47 local_ip = 10.10.10.21 48 tunnel_type = gre 49 enable_tunneling = True 64 [securitygroup] 67 firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver 68 enable_security_group = True 69 metadata_proxy_shared_secret = metadatasecret |
openvswitch 대몬을 재시작하고 내주 인스턴스의 IP를 관리할 br-int을 openvswitch에 추가한다.
# br-int 추가 $ sudo service openvswitch-switch restart $ sudo ovs-vsctl add-br br-int ovs-vsctl: cannot create a bridge named br-int because a bridge named br-int already exists |
외부 인터넷과 연결 될 br-ex를 openvswitch에 추가하고 br-ex에 물리적인 네트워크 카드를 연결한다.
네트워크 노드에서 IP를 설정할 때 인스턴스와 외부와 통신하기 위해 eth2에 manual IP로 설정했었는데 eth2를 다음과 같이 연결하면 된다.
# br-ex 추가 $ sudo ovs-vsctl add-br br-ex $ sudo ovs-vsctl add-port br-ex eth2 |
neutron 서비스들을 모두 재시작한다.
# neutron 서비스 재시작 $ sudo service neutron-dhcp-agent restart; sudo service neutron-plugin-openvswitch-agent restart; sudo service neutron-dhcp-agent restart; sudo service neutron-metadata-agent restart |
▶ openstack 클라우드 구축 (컨트롤러 노드 설치)
▶ openstack 클라우드 구축 (컴퓨터 노드 설치)
▶ openstack 클라우드 구축 (Neutron 네트워크 생성)
▶ openstack 클라우드 구축 (클라우드 이미지 생성)
▶ openstack 클라우드 구축 (클라우드 이미지 등록)