NOVA-Network를 사용하는 compute node 구성
- eth0 : floating - 외부 접속용
- eth1 : fixed - 내부 사용
- OS 구성 시 사전 절차는 아래 문서 참조
0. OpenStack 패키지 Repository 변경 (필요 시 수행)
(1) kilo config -> juno config : jcloud 1.9에서 kilo의 모든 기능을 지원하지 않아 급하게 Juno로 변경
root@controller:~# rm /etc/apt/sources.list.d/cloudarchive-kilo.list
root@controller:~# echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu" "trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list
root@controller:~# apt-get update
root@controller:~# apt-get dist-upgrade
(2) NTP 설정
# vi /etc/ntp.conf
server controller iburst
# service ntp restart
# ntpq -c peers
remote refid st t when poll reach delay offset jitter
==============================================================================
*controller 203.248.240.140 3 u 156 1024 377 0.595 -15.814 15.528
--> remote가 controller인지 확인
# ntpq -c assoc
ind assid status conf reach auth condition last_event cnt
===========================================================
1 27464 968a yes yes none sys.peer sys_peer 8
--> condition 항목에 sys.peer로 설정되었는지 확인
1. Compute Hypervisor Components, Nova Netowrk 설치
(1) 패키지 설치 및 config 수정
# apt-get install nova-compute sysfsutils
# apt-get install nova-network nova-api-metadata
# apt-get install python-novaclient
(2) KVM 기본 브릿지 제거 및 커널 파라미터 수정
--> 내부 IP 용인 eth1에서 외부용인 eth2로 ip fowrward가 필요함, 이더넷 포트가 2개 이상일 경우 필요
# sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1
# sysctl -p
net.ipv4.ip_forward=1
--> KVM에서 기본적으로 구성하는 bridge 인터페이스 제거
# virsh net-destroy default
# virsh net-undefine default
--> 사설용을 eth1을 promisc로 구성. 멀티 노드로 구성할 경우 각 노드 간의 인스턴스 통신 가능하게 설정
# ip link set eth1 promisc on
(3) nova.conf
--> eth0를 외부용(192.168.0.x), eth1을 내부용(10.10.10.x)으로 구성
--> controller는 192.168.0.221
--> nova-network 중 FlatDHCPManager를 사용하는 설정
# vi /etc/nova/nova.conf
[DEFAULT]
logdir=/var/log/nova
state_path=/var/lib/nova
lock_path=/var/lock/nova
libvirt_use_virtio_for_bridges=True
verbose=True <-- 에러 시 로그 분석용
ec2_private_dns_show_ip=True
api_paste_config=/etc/nova/api-paste.ini
enabled_apis=ec2,osapi_compute,metadata
# RabbitMQ 설정 패스워드는 기 설정 사용
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = rabbitpass
auth_strategy = keystone
# VNC 설정 : 여기서는 noVNC 모드, SPICE일 경우 openstack 사이트 매뉴얼 참조
my_ip = 192.168.0.222 <-- local host
vnc_enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 192.168.0.222 <-- localhost
novncproxy_base_url = http://192.168.0.221:6080/vnc_auto.html <-- controller
# Nova Network Service
network_api_class = nova.network.api.API
security_group_api = nova
firewall_driver = nova.virt.libvirt.firewall.IptablesFirewallDriver
network_manager=nova.network.manager.FlatDHCPManager
dhcpbridge_flagfile=/etc/nova/nova.conf
dhcpbridge=/usr/bin/nova-dhcpbridge
# 이 부분은 아래 내용 대로
flat_network_bridge=br100
flat_interface=eth1
public_interface = eth0
flat_injected=True
fixed_range=10.10.10.0/24 <-- 내부 서비스용
fixed_network_dhcp_start=10.10.10.31 <-- DHCP 서비스 시작
10.10.10.30이 자동적으로 DHCP 서비스 IP가 됨
gateway = 10.10.10.1
network_size = 256
allow_same_net_traffic = True
multi_host = True
send_arp_for_ha = True
share_dhcp_address = False
force_dhcp_release = True
[keystone_authtoken]
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = nova
admin_password = novapass
[database]
connection = mysql://nova:novadbpass@controller/nova
[glance]
host = controller
2. CPU 가상화를 지원하지 않을 경우 설정
# egrep -c '(vmx|svm)' /proc/cpuinfo
위 결과가 0일 경우 아래 설정 (가상화CPU를 지원하지 않을 경우 KVM 사용 불가)
# vi /etc/nova/nova-compute.conf
[libvirt]
virt_type = qemu
--> VMWare, Xen 처럼 가상화환경에서 구성할 경우 위 내용으로 할 경우 성능 이슈 발생
VMWare의 VM CPU 가상화 기능 설정해서 사용 권장
3. 서비스 재가동
# service nova-compute restart
# service nova-network restart
# service nova-api-metadata restart
# rm -f /var/lib/nova/nova.sqlite
4. nova-network 구성
(1) 인터페이스 구성 --> eth1은 설정하지 않음
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.222
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.254
dns-nameservers 168.126.63.1
# Bridge interface
auto br100
iface br100 inet static
#address 192.168.0.212
address 10.10.10.1
netmask 255.255.255.0
bridge_ports eth1
bridge_stp off
bridge_maxwait 0
bridge_fd 0
post-up route add -net 10.10.10.0/24 gw 10.10.10.1 dev br100
(2) 초기 네트워크 구성 : Controller에서
# nova network-create --fixed-range-v4 10.10.10.0/24 --bridge br100 --bridge-interface eth1 --multi-host T --enable-dhcp T net_10.10.10
- 생성 확인 (ID 확인)
# nova network-list
- 프로젝트에 할당 (현재 사용중인 tenant에 할당됨)
# nova network-associate-project <net-id, 위에서 확인한 id>
--> 가끔 VLAN enable 하라고 하는데 잠시 후에 다시 해보면 associate 됨. 안되면 몇 분 후에 다시 시도. 괜히 VLAN 넣지 말것
- 생성을 잘못해서 삭제해야 할 경우 : 과감하게 지워도 괜찮음 (혹시 인스턴스 있을 경우 먼저 제거해야 함)
# nova network-list
# nova network-disassociate <net-id>
# nova network-delete <net-id>
(3) floating ip 설정
- OpenStack 전체가 사용할 IP 대역 정의
# nova floating-ip-bulk-create 192.168.0.0/24 --> 환경에 맞게 대역/bit 적당히 조절
# nova floating-ip-create --> 위에서 정의한 후보 대역 중 미사용 중인 IP를 순차적으로
현재 tenant(project)에 추가
5. 서비스 확인
# nova service-list
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| 1 | nova-cert | controller | internal | enabled | up | 2015-08-21T07:22:35.000000 | - |
| 2 | nova-consoleauth | controller | internal | enabled | up | 2015-08-21T07:22:40.000000 | - |
| 3 | nova-scheduler | controller | internal | enabled | up | 2015-08-21T07:22:44.000000 | - |
| 4 | nova-conductor | controller | internal | enabled | up | 2015-08-21T07:22:38.000000 | - |
| 5 | nova-compute | compute1 | nova | enabled | up | 2015-08-21T07:22:35.000000 | - |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
# nova image-list
+--------------------------------------+---------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+---------------------+--------+--------+
| 931fff4c-3c25-4477-b59c-19545760e772 | cirros-0.3.3-x86_64 | ACTIVE | |
+--------------------------------------+---------------------+--------+--------+
# nova network-list
+--------------------------------------+--------------+---------------+
| ID | Label | Cidr |
+--------------------------------------+--------------+---------------+
| 3f616f7f-d4e2-40cd-bf42-add76b76c6fd | net_10.10.10 | 10.10.10.0/24 |
+--------------------------------------+--------------+---------------+
6. 개선할 내용
- compute node의 br100 ip가 자동적으로 'nova network-create'에서 정의된 대역의 첫번째 ip로 바뀌는 부분
- 각 노드 내의 VM 간 통신은 지장이 업스나 compute node 간의 eth1을 통한 ping은 불가
즉 다른 노드 내의 VM으로 통신 불가
- dnsmasq 서비스의 config를 조정하면 되는데 잘못설정할 경우 nova-network 서비스 자체가 동작하지 않아
명확히 이해한 후 변경 시도 해야 함
'IT > openstack' 카테고리의 다른 글
OpenStack : Instance 생성 오류 "Failure prepping block device" (0) | 2015.09.07 |
---|---|
VMWare에서 만든 VM에 KVM, HyperV 등의 가상화 엔진 설치를 위한 설정 (0) | 2015.09.04 |
nova 서비스에서 compute node 제거 절차 (0) | 2015.09.03 |
OpenStack 설치 - 기타 : 가상화 환경에서 Private Network 구성 (0) | 2015.08.19 |
OpenStack 설치 (5) - Compute 노드 (Cinder, Swift 포함) (0) | 2015.08.19 |