OpenStack - 네트워크 및 VM간 통신을 해보자! (feat. Horizon)

같은 네트워크를 사용하는 VM간 통신

네트워크 생성

horizon > 관리 > 네트워크 > 네트워크 생성 순서

[네트워크]

  • 이름: network1100
  • 프로젝트: admin
  • 공급자 네트워크 유형: VXLAN
  • 구분 ID: 1100

[서브넷]

  • 서브넷 이름: subnet1100
  • 네트워크 주소: 192.166.0.0/24

[서브넷 세부 정보]

  • DHCP 사용에 체크

결과

인스턴스 생성

프로젝트 > Compute > 인스턴스 > 인스턴스 시작

인스턴스 2개 생성, "vm1100-1", "vm1100-2"

  • 부팅 소스 선택: 이미지
  • 볼륨 크기: 1GB
  • 아래의 cirros 이미지를 할당한다. (오른쪽 화살표)

  • flavor는 m1.tiny를 할당한다.

  • 위에서 생성한 network1100을 네트워크에 할당한다.

인스턴스 확인

생성된 N/W, VM 확인

프로젝트 > 네트워크 > 네트워크 토폴로지

그래프 확인

VM 접근

vm1100-1의 '콘솔 열기'를 선택한다.
cirros에 로그인한다.

  • id: cirros
  • passwd: gocubsgo

ICMP check to vm1100-2 (ping 192.166.0.151)

F/S Full Issue

배경

DevStack 설치 후, 상기 과정 중 "네트워크 생성" 클릭시 오랜 시간 대기 후 다음과 같은 화면이 나타났다.

여러 번 시도해도 동일합니다. 우상단 Danger: 양식을 제출하는 동안 오류가 발생하였습니다. 다시 시도하세요가 표시되었다.

(F12개발자도구 > DevTools -> 504 Gateway Timeout)

해결 과정

journalctl -u devstack@q-svc 명령어 수행시 rabbitmq 미연결, 그러나 5672번 포트는 정상 listen중으로 확인하였다.

devstack 재설치 후 F/S 조회시 100%로 Full 사용중임을 확인하였다.

ubuntu@beomseokkim-devstack:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           392M   41M  351M  11% /run
/dev/vda1        20G   20G     0 100% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/vda15      105M  6.1M   99M   6% /boot/efi
tmpfs           2.0G     0  2.0G   0% /run/qemu
tmpfs           392M     0  392M   0% /run/user/1000

Storage 용량 증설 및 재시작하여 네트워크 정상 생성 완료하였다.

서로 다른 네트워크를 사용하는 VM간 통신

openstack cli 사용 준비

openstack 사용자 인증 정보 확인한다.

admin 계정으로 환경변수를 설정한다.

source openrc admin admin

설정된 환경변수를 확인한다.

네트워크 생성하기

네트워크 생성에 필요한 옵션을 확인한다.

openstack network creat -h

"과제1에서 생성한 network와 또다른", openstack cli를 이용한 별도 network 생성한다.

openstack network create  
    --provider-network-type vxlan 
    --provider-segment 1200 
    network1200

생성된 네트워크의 id 등을 network list 명령어를 통해 확인한다. (network1200)

생성된 네트워크를 확인한다.

openstack network show <NETWORK_ID>

서브넷 생성하기

서브넷 생성에 필요한 옵션을 확인한다.

openstack subnet create -h

과제 1에서 생성한 subnet1100과 동일하게 생성한다.

 openstack  subnet create 
     --subnet-range 192.166.1.0/24 
     --ip-version 4 
     --network <NETWORK_ID> 
     subnet1200

생성된 서브넷의 id 등을 subnet list 명령어를 통해 확인한다. (network1200)

생성된 서브넷을 확인한다.

openstack subnet show <SUBNET_ID>

인스턴스 생성하기

인스턴스를 생성하기 위해서는 network, image, flavor 정보가 필요하므로 하기 명령어를 통해서 조회한다.

openstack network list
openstack image list
openstack flavor list

방금 생성한 network1200을 사용해 인스턴스를 생성한다.

openstack server create 
    --image <IMAGE_ID> 
    --network <NETWORK_ID> 
    --flavor <FLAVOR_ID> 
    <VM_NAME>

생성된 네트워크와 인스턴스 확인

라우터 추가 및 인터페이스 설정

openstack cli를 사용한 라우터 생성

openstack router create router-internal

* UI 기준 생성방법

라우터에 인터페이스 추가

openstack router add subnet <router-name> <subnet-id-1>
openstack router add subnet <router-name> <subnet-id-2>

* UI 기준 추가방법
(단, 아래의 경우 기 subnet를 추가한 상태이기때문에 선택 list-up 목록에는 제외되어 있다.)

라우터 및 해당 라우터에 인터페이스로 subnet이 추가된 네트워크 토폴로지 확인

vm1200-1 에서 vm1100-1으로 ping check

vm1100-1에서 vm1200-1으로의 ping check