bxm's IT Story

Cloud #3 (KVM Final-Migration, Cirros, Overlay Network) 본문

가상화/KVM

Cloud #3 (KVM Final-Migration, Cirros, Overlay Network)

bxmsta9ram 2021. 9. 1. 09:33

## 3. 마이그레이션 ##

## 3.1 가상머신의 라이브 마이그레이션 ## 

 - 오프라인 마이그레이션은 가상머신이 중지되어 있거나 일시중지 상태에서의 이동을 의미한다.

 - 실습의 편의를 위해 본 실습에서는 공유 저장소로 NFS를 사용한다. 이는 파일의 크기가 크거나 작은

   I/O가 있는 경우, 보안성을 요구한 곳에서는 좋은 선택이 아니다. 

 - 이러한 경우에는 iSCSI 기반, FC기반 Gluster, Ceph 등을 고민해야 한다.

 

 

## 3.1.1 sshpass 설치하기 ##

  모든 노트에서 아래 명령 실행. 저장소를 찾지 못할 경우 epel-release 설치 후 진행한다.

KVM1, KVM2, KVM3, STG]

yum -y install sshpass


## 3.1.2 Live Migration 실행 ##

  KVM1 호스트에 있는 centos02를 KVM3으로 이동시켜 보자. 

KVM1]

virsh migrate --live centos02 qemu+ssh://kvm3/system --verbose --persistent --unsafe

도메인이 꺼져있기에 실행이 되지 않음!!

 

도메인이 안켜진다 ㅡㅡ..

 

KVM1~3]

df -h

마운트가 풀려있음 ;;

 

mkdir /stg
mount -t nfs stg:/kvm /stg
mount | grep stg:/kvm

 

df -h

 

 

## T 피셜 KVM3에 private1이 없어서 마운트가 풀릴 수도 있다고 하심.

KVM3]

vi private1.xml

 

virsh net-define private1.xml

 

KVM1]

virsh start centos02

virsh migrate --live centos02 qemu+ssh://kvm3/system --verbose --persistent --unsafe

무슨 private01이 실행되지 않는다고 뜬다 ㅡㅡ..

 

 

KVM3]

virsh net-list

virsh net-start private01

virsh net-list

 

 

KVM3]

virsh migrate --live centos02 qemu+ssh://kvm3/system --verbose --persistent --unsafe

흠... 무엇이 문제일까...

## 앗 T 피셜 Host의 이름을 바꿔보라고 하심. 이름풀이가 안되어서 오류!!

 

KVM1]

vi /etc/hosts

맨 위에 우물정(#) 추가에, KVM1.kedu ~ KVM3.kedu 추가.

 

virsh migrate --live centos02 qemu+ssh://kvm3/system --verbose --persistent --unsafe

됐다아~!~!~!!!!!!

마 이 그 레 이 션    성 고 오 옹 ~ !

 

## Migration 제대로 되었는지 확인

KVM3]

virsh list --all

centos02가 제대로 넘어왔음!!


 

## 방금 KVM1 -> KVM3 으로 옮긴 centos02를 다시 KVM3 -> KVM1로 이동시켜보자.

KVM3]

## KVM1에서 옮겼을 때와 마찬가지로 Host를 변경해주어야 한다.

vi /etc/hosts

 

virsh migrate --live centos02 qemu+ssh://kvm1/system --verbose --persistent --unsafe

바로 됐어 이쁜놈 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

 

virsh list --all

 

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

## 마이그레이션은 복사-붙여넣기의 개념이 아니다!!

## 우리가 지금 다뤘던 centos02는 스토리지에 저장되어 있고, 그 것의 소유권을 누구에게 주는지가 마이그레이션임!!

## KVM1 -> KVM3 마이그레이션을 하게 되면, https://192.168.1.101:8001로는 접속이 안된다.

## 반대로 지금 상황인 KVM3 -> KVM1 마이그레이션을 하게 되면, https://192.168.1.101:8001에서만 접속이 가능!!

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★



## 4. 브리지 네트워크와 overlay 네트워크 ##

## 다음 실습을 위해서 KVM3에서 centos02 삭제 ##

KVM3]

virsh net-destroy centos02

virsh undefine centos02

virsh list --all

 

KVM1]

virsh list-all

 

virsh destroy centos01

 

 

## 스냅샷이 있어서 centos01은 바로 삭제가 안된다. 스냅샷을 먼저 지우고 undefine 해야함.

virsh snapshot-delete centos01 centos-2021-08-31

virsh snapshot-list centos01

virsh undefine centos01

 

virsh undefine centos02

 

virsh undefine ubuntu01

 

virsh list --all


## 4.1 linux bridge 사용하기 ##

 - 기본의 VM은 KVM 호스트 내에 별도의 네트워크로 생성되므로 NAT를 통해 외부와 연결된다.

 - 또한 외부로부터의 접속에 대한 어려움이 있다. LinuxBridge를 활용하여 기존 eth0를 L2로 변경하고 가상머신들이

   외부와 직접 연결이 가능하도록 설정해 본다.


## 4.2 br0 생성과 eth0를 br0의 L2 포트 변경 (KVM1, KVM2, KVM3) ##

centos01, centos02, ubuntu01을 br0이라는 단자에 꼽는 것임!!

KVM1]

cd /etc/sysconfig/network-scripts

ls -l ifcfg-*

 

cp ifcfg-eth0 ifcfg-br0

vi ifcfg-br0

 

 

vi ifcfg-eth0

BOOTPROTO=static이 아니라 none임!! 잘못적음. eth0는 br0에 꼽힌 하나의 포트이다. 라는 뜻!

systemctl restart network

 

 

ifconfig br0

## br0에 inet 5.5.5.101로 브릿지가 하나 만들어진 것을 확인할 수 있음.


## 4.2.2 각 호스트에서 테스트용 가상머신 생성하기 ##

 - STG에서 테스트용 클라우드 이미지 다운로드 후 복사

현재 VM들이 Bridge에 연결되어 있고, Bridge가 하나의 포트에 연결되어 있는 상황임. br0이 곧 eth0임! ㅎㅎ

STG]

wget https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img 

 

ls 

다운로드 완료

 

 

## 이름을 바꿔보자. 복사 !!

cp cirros-0.4.0-x86_64-disk.img cirros01.img

cp cirros01.img cirros02.img

cp cirros01.img cirros03.img

## cirros라는 OS 3개를 만들어놨음.

 

## 얘네들이 루트에 있기 때문에 KVM(공유 스토리지)으로 복사해야지 공유 할 수 있음

cp cirros* /kvm/

## cirros로 시작하는 모든 애들을 KVM으로 복사

 

 

 

## 이제 이것을 브릿지에 물릴 것임.

KVM1]

virt-install --name cirros01 --vcpus 1 --ram 512 --network bridge=br0 --disk /stg/cirros01.img --graphics none -v --import

설치 완료! ID : cirros // PW : gocubsgo

 

KVM1-cirros]

ip a

5.5.5.0/24 대역인데 브릿지가 만들어져서 5.5.5.8/24 를 받았음.


## KVM2와 KVM3도 똑같이 해주자!! ##

 

KVM2]

## br0 만들기

cd /etc/sysconfig/network-scripts

cp ifcfg-eth0 ifcfg-br0

vi ifcfg-br0

 

vi ifcfg-eth0

systemctl restart network

 

ifconfig br0

 

virt-install --name cirros02 --vcpus 1 --ram 512 --network bridge=br0 --disk /stg/cirros01.img --graphics none -v --import

 

 

 

 


KVM3]

## br0 만들기

cd /etc/sysconfig/network-scripts

ls -l ifcfg-*

 

cp ifcfg-eth0 ifcfg-br0

vi ifcfg-br0

 

vi ifcfg-eth0

 

systemctl restart network

 

ifconfig br0

 

 

virt-install --name cirros03 --vcpus 1 --ram 512 --network bridge=br0 --disk /stg/cirros01.img --graphics none -v --import


## 이제 아래의 사진처럼 서로 다른 가상머신들끼리 통신이 되어야함.

## ip a 를 통해서 3개의 IP를 알아낸 뒤에, 각각 통신해보기.

KVM1-Cirros]

ip a

5.5.5.8

 

KVM2-Cirros]

ip a

 

KVM3-Cirros]

ip a

5.5.5.10


KVM1-Cirros]

ping 5.5.5.9

ping 5.5.5.10

KVM1 -> KVM2, KVM1 -> KVM3으로 통신이 잘 되는것을 확인할 수 있다.

 

KVM2-Cirros]

ping 5.5.5.8

ping 5.5.5.10

KVM2 -> KVM1, KVM2 -> KVM3으로 통신이 잘 되는것을 확인할 수 있다.

 

KVM2-Cirros]

ping 5.5.5.8

ping 5.5.5.9

KVM3 -> KVM1, KVM3 -> KVM2로 통신이 잘 되는것을 확인할 수 있다.



## 각 Cirros간 통신이 잘 되는 것을 확인하였으면, 다음과 같이 KVM1의 Cirros01을 KVM2로 마이그레이션 한다.

## Cirros를 나가기 위해서는 'Disconnect'를 해야 한다.

 

## 마이그레이션 하기 전에 list 먼저 확인

KVM2]

virsh list

 

KVM1]

virsh migrate --live cirros01 qemu+ssh://kvm2/system --verbose --persistent --unsafe

마이그레이션 성공

 

KVM2]

virsh list

cirros01이 마이그레이션 된 것을 확인하였음!!

 

 

## KVM1에서 list를 확인해보자.

 

 

## Test. Test가 끝나면 Disconnect를 해서 빠져나오고, 다시 Connect로 접속하면 된다.

## KVM1에서 KVM2로 마이그레이션 되었으며 기존 IP 정보를 유지하고 있어 마이그레이션과 상관없이 외부로의 접속,

    외부로부터의 접속을 처리할 수 있다.

KVM2]

virsh console cirros02    - CUI로 접속. GUI로 접속하려면 https://192.168.1.102:8001 접속해서 KIMCHI로 접속

KVM1에서의 5.5.5.8/24 IP를 그대로 가지고 있음.



## 다음 실습을 위해서 KVM2로 마이그레이션 했던 Cirros01을 KVM1로 다시 원위치 시키기 ##

## 마이그레이션을 하기 위해서 KVM2에서 Cirros01을 종료한 이후에 마이그레이션을 수행해야 한다.

KVM1]

virsh list

 

 

KVM2]

virsh migrate --live cirros01 qemu+ssh://kvm1/system --verbose --persistent --unsafe

ㅡㅡ? KVM1.kedu가 없다고 뜬다?

 

vi /etc/hosts

없었네~~!

 

 

virsh migrate --live cirros01 qemu+ssh://kvm1/system --verbose --persistent --unsafe

 

 

KVM1]

virsh list




## Overlay 네트워크 ##

기존에는 브릿지를 KVM1에다가만 달아 놓고 사용했었다.

 

## 하지만 Overlay 네트워크는 위의 그림과는 다르게 KVM1 ~ KVM3 까지 한 방에 브릿지로 묶어 사용한다.


## 4.3 Openvswitch 설치하기 ##

 - Linux Bridge를 사용할 경우 각 가상머신에 일종의 공인 주소를 부여하면 서비스 제공에 유연함을 가질 수 

   있었으나, 보안적인 문제가 발생할 수 있다.

 - 이제 호스트의 물리적 위치와 상관 없이 모든 가상머신간 통신이 가능하도록 Overlay 네트워크의 구성을

   진행한다. 이를 위해서는 터널링을(ex VxLAN 터널링 기법, GRE 터널링 기법_우리가 사용했던 것) 지원하는

   가상의 스위치가 필요하다.

 - 이를 우리는 Openvswitch를 이용하여 구성한다. 오버레이를 구성할 경우, 각 호스트에 동일 사설 주소를 갖는

   스위치를 배치하고, 해당 스위치를 마치 하나의 가상 스위치처럼 사용할 수 있다.

 - 가상머신들은 물리적 위치에 관계 없이 사설 주소를 이용하여 타 지역 물리 서버에 있는 가상머신과의 통신,

   라이브 마이그레이션이 가능해진다.

 

 

4.3.1 각 KVM 호스트에 Openvswitch(이하 ovs)를 설치하기

KVM1, KVM2, KVM3]

yum -y install epel-release https://www.rdoproject.org/repos/rdo-release.rpm 

 

yum -y install openvswitch bridge-utils

 

yum update -y 

 

systemctl start openvswitch && systemctl enable openvswitch

 


4.3.2 각 KVM(KVM1 ~ KVM3)에 ovs 기반의 가상 브릿지인 vswitch01을 위한 ifcfg-vswitch01 파일을 생성하고,

       기존의 eth0을 vswitch01의 포트로 등록시킨다.

  - 동작에 문제가 발생할 수 있으므로 동작 중인 Cirros 가상 머신들은 중지 시킨뒤 구성한다.


4.3.3 기존 br0 인터페이스를 vswitch01로 변경하고 내용을 아래와 같이 수정한다. eth0의 내용 또한 변경한다.

     (KVM1 ~ KVM3 모두 적용)

KVM1, KVM2, KVM3]

cd /etc/sysconfig/network-scripts

mv ifcfg-br0 ifcfg-vswitch01

vi ifcfg-vswitch01

 

vi ifcfg-eth0

 

systemctl restart network

shutdown -r now

## 얘는 무조건 재부팅해줘야함!!

 

 

ifconfig eth0 ; ifconfig vswitch01

eth0이 생겼고, vswitch01이 5.5.5.101이라는 IP를 할당받았음!! 이건 KVM1 ~ KVM3 까지 모두 IP가 똑같음. 나중에 Docker에서 빛이 나는 파트임.


4.3.4 가상머신 연결을 위한 내부 가상 브리지(vswitch02) 생성

 - 동일 사설 주소를 사용하는 각 호스트별 가상머신간 통신을 위한 브리지를 생성한다.  

 - 해당 브리지는 overlay 네트워크를 통해 연결된다.  내부 주소는 172.16.1.0/24 를 사용한다.

 - 만약 vm1이 172.16.1.101, vm2가 172.16.102 라면 서로 다른 호스트 상에 배치가 되어 있더라도 오버레이 네트워크를

   통해 연결이 가능해야 한다.  또한 마이그레이션이 되더라도 통신에는 문제가 없어야 한다.

 


## 기존 방법이 있었으나 안되서 블로그에서 다 지웠음. 새로운 방법으로! ##

## IP 충돌나서 SSH가 아예 안먹히므로 KVM2와 KVM3의 IPADDR을 수정해주자.

KVM2]

vi ifcfg-vswitch01

systemctl restart network

ifconfig vswitch01

바뀐 것을 확인할 수 있다.

 

KVM3]

vi ifcfg-vswitch01

systemctl restart network

ifconfig vswitch01



## 결국 Cirros01, 02, 03이 br->vswitch로 바꾼 뒤에 재설치가 안되서 T꺼를 전부 다시 받았음. ##

KVM1]=ccie18722 // KVM2, KVM3]=cisco123 비밀번호임. 그리고 나는 VMNet 1번이기에 VMNet 1번으로 변경하기.


KVM1]

cd ~

vi vswitch02.xml

 

virsh net-define vswitch02.xml

virsh net-start vswitch02

virsh net-autostart vswitch02

virsh net-list

 

virsh net-info vswitch02

 

 

## 브리지 만들기

ovs-vsctl add-br vswitch02

 

 

## Cirros01을 잡아넣기 전에 Cirros01을 시작하기. (시작 안하면 아래의 잡아 넣는 명령어가 통하지 않음)

virsh start cirros01

 

## Cirros01_port1, Cirros01 빼기. (불필요함 뭔가 안되는 사람만 해보기.)

ovs-vsctl show

ovs-vsctl del-port vswitch02 cirros03_port

ovs-vsctl del-port vswitch02 cirros03_port1

ovs-vsctl del-port vswitch02 cirros01                  ## 없는 Port라고 에러가 떠서 삭제 한번 해준 것.

 

## Cirros01을 여기다가 잡아넣자. (edit dumpxml에서 cirros01을 확인 / 수정 해준 뒤에 다시 기입 해준 것임.)

ovs-vsctl add-port vswitch02 cirros01

에러가 뜨는데 다시 한번 해보면 들어가져있음.

 

## 확인하기.

ovs-vsctl show

cirros01_port1과 cirros01이 사라진 것을 확인할 수 있다.

 

## Port 이름이 무엇으로 되어있는지 확인해보자. (포트 이름 확인할 때는 dumpxml 명령어를 확인하면 된다!!)

virsh dumpxml cirros01

cirros01_port1 인것을 확인하였음. 복사하기!

 

ovs-vsctl add-port vswitch02 cirros01_port1


## KVM2, KVM3에서도 똑같이 해주기!!

KVM2]

cd ~

vi vswitch02.xml

KVM1에서 했던 것 Copy-Paste

 

virsh net-define vswitch02.xml

virsh net-start vswitch02

virsh net-autostart vswitch02

virsh net-list

 

virsh net-info vswitch02

 

## 브리지 만들기

ovs-vsctl add-br vswitch02

 

 

## 만약에 Cirros02를 실행하려 했는데 나오지 않으면 아래 명령어로 재설치하기. (나 이러면 파일 왜받았지 ㅠ)

virt-install --name cirros02 --vcpus 1 --ram 512 --network bridge=br0 --disk /stg/cirros02.img --graphics none -v --import

 

## 그리고 MTU 어쩌구 에러가 뜨면(어제 내가 떴던 에러 ㅡㅡ)

virsh edit cirros02 

추가해주기.

 

## Cirros02을 잡아넣기 전에 Cirros02을 시작하기. (시작 안하면 아래의 잡아 넣는 명령어가 통하지 않음)

virsh start cirros02

 

## Cirros02_port, Cirros02 빼기. (굳이 지울 필요가 없는 것. 안되는 사람만 추가)

ovs-vsctl show

ovs-vsctl del-port vswitch02 cirros03_port

ovs-vsctl del-port vswitch02 cirros03_port1

ovs-vsctl del-port vswitch02 cirros02

 

 

## Cirros02을 여기다가 잡아넣자.

ovs-vsctl add-port vswitch02 cirros02

ovs-vsctl add-port vswitch02 cirros02_port1

 

## 확인하기.

ovs-vsctl show

나중에 ovs-vsctl del-port vswitch02 cirros02로 저거 날려버림. No Such Device 떠서!! T도 상관없다고 하심.

 

ovs-vsctl add-port vswitch02 cirros02_port

 


KVM3]

cd ~

vi vswitch02.xml

KVM1에서 했던 것 Copy-Paste

 

virsh net-define vswitch02.xml

virsh net-start vswitch02

virsh net-autostart vswitch02

virsh net-list

 

virsh net-info vswitch02

 

## 브리지 만들기

ovs-vsctl add-br vswitch02

 

 

## 만약에 Cirros03를 실행하려 했는데 나오지 않으면 아래 명령어로 재설치하기. (나 이러면 파일 왜받았지 ㅠ)

virt-install --name cirros03 --vcpus 1 --ram 512 --network bridge=br0 --disk /stg/cirros03.img --graphics none -v --import

 

## 그리고 MTU 어쩌구 에러가 뜨면(어제 내가 떴던 에러 ㅡㅡ)

virsh edit cirros03 

추가해주기.

 

## Cirros03을 잡아넣기 전에 Cirros03을 시작하기. (시작 안하면 아래의 잡아 넣는 명령어가 통하지 않음)

virsh start cirros03

 

## Cirros03_port1, Cirros03 빼기. (굳이 지울 필요가 없는 것. 안되는 사람만 추가. 난 되지롱 개꿀)

ovs-vsctl show

ovs-vsctl del-port vswitch02 cirros03_port

ovs-vsctl del-port vswitch02 cirros03_port1

ovs-vsctl del-port vswitch02 cirros03

 

 

## Cirros02을 여기다가 잡아넣자.

ovs-vsctl add-port vswitch02 cirros03

ovs-vsctl add-port vswitch02 cirros03_port1

 

## 확인하기.

ovs-vsctl show

cirros03과 cirros03_port가 vswitch02 Bridge에 들어가있는 것을 확인할 수 있다.

 

ovs-vsctl add-port vswitch02 cirros03_port



4.3.5 가상머신의 실행과 vswitch02 상태확인

KVM1, KVM2, KVM3]

ovs-vsctl show

 

 

4.3.6 가상머신에 연결된 가상포트에 VLAN 할당하기

KVM1]

ovs-vsctl set port cirros01_port1 tag=172

 

KVM2]

ovs-vsctl set port cirros02_port1 tag=172

 

KVM3]

ovs-vsctl set port cirros03_port1 tag=172


4.3.7 가상머신에 IP 입력하기
 - 내부 연결용 인터페이스만 있으므로 17216.1.0/24 내에서 IP 주소를 할당한다.

 - cirros 는 sudo를 이용하여 root 계정을 설정한 뒤, "/etc/network/interfaces" 의 파일에 IP 주소를 작성한다.

   (KVM1-172.16.1.101 // KVM2-172.16.1.102 // KVM3-172.16.1.103)

 - root 계정으로 전환 후 reboot 명령을 통한 재부팅 이후에 IP를 제대로 할당 받았는지 확인하기.

KVM1]

virsh console cirros01

 $ sudo vi /etc/network/interfaces

.101

 $ sudo passwd

   : 비밀번호 입력후 exit + exit 하면 로그인창으로 가짐.

 $ reboot

 $ ifconfig

.101을 제대로 할당 받았음.

KVM2]

virsh console cirros02

 $ sudo vi /etc/network/interfaces

.102

 $ sudo passwd

   : 비밀번호 입력후 exit + exit 하면 로그인창으로 가짐.

 $ reboot

 $ ifconfig

 

KVM3]

virsh console cirros03

 $ sudo vi /etc/network/interfaces

.103

 $ sudo passwd

   : 비밀번호 입력후 exit + exit 하면 로그인창으로 가짐.

 $ reboot

 $ ifconfig


## 이제 Overlay 네트워크만 구성하면, Ping을 서로 주고 받을 수 있다.

4.3.8 GRE를 이용하여 Overlay 네트워크 구성하기.

 

중요!!

## 가상머신끼리 통신이 되어야 하는데 172.16.1 대역과 192.168.1 대역이 서로 라우팅이 안되므로 터널을 뚫어줌!!

KVM1]

ovs-vsctl add-port vswitch02 gre12 -- set interface gre12 type=gre options:remote_ip=5.5.5.102

## KVM1과 KVM2 간의 통신이라는 뜻임.

 

ovs-vsctl add-port vswitch02 gre13 -- set interface gre13 type=gre options:remote_ip=5.5.5.103

## KVM1과 KVM3 간의 통신이라는 뜻임.

 

KVM2]

ovs-vsctl add-port vswitch02 gre21 -- set interface gre21 type=gre options:remote_ip=5.5.5.101

## KVM2과 KVM1 간의 통신이라는 뜻임.

 

ovs-vsctl add-port vswitch02 gre23 -- set interface gre23 type=gre options:remote_ip=5.5.5.103

## KVM2과 KVM3 간의 통신이라는 뜻임.

 

KVM3]

ovs-vsctl add-port vswitch02 gre31 -- set interface gre31 type=gre options:remote_ip=5.5.5.101

## KVM3과 KVM1 간의 통신이라는 뜻임.

 

ovs-vsctl add-port vswitch02 gre32 -- set interface gre32 type=gre options:remote_ip=5.5.5.102

## KVM3과 KVM2 간의 통신이라는 뜻임.


4.3.9 통신상태 확인하기

KVM1]

virsh console cirros01

 # ping 172.16.1.102

 # ping 172.16.1.103

 

KVM2]

virsh console cirros02

 # ping 172.16.1.101

 # ping 172.16.1.103

 

KVM3]

virsh console cirros03

 # ping 172.16.1.101

 # ping 172.16.1.102

 

## 아 핑이 안간다 ㅡㅡ.. 트러블 슈팅 고고..

KVM1]

route            

default 있는지 확인!! 있다.

ovs-vsctl show

 

virsh console cirros01

 # ifconfig 

제대로 들어가있는데 왜 안될까 ...?

 

## Del-port로 전부 지워보고 다시 넣어보기.

KVM1]

ovs-vsctl del-port gre12

ovs-vsctl del-port gre13

ovs-vsctl add-port vswitch02 gre12 -- set interface gre12 type=gre options:remote_ip=5.5.5.102

ovs-vsctl add-port vswitch02 gre13 -- set interface gre13 type=gre options:remote_ip=5.5.5.103

## 트러블 슈팅하면서 발견한 것임. 딱 이거 1개만 죽이면 모든 구간에서 Ping이 감!!

## 반대로 이거를 포함하면 모든 구간에서 Ping이 안감!!

cisco 사의 메뉴얼에 심각한 결함이 있다고 느껴진다...

 

KVM2]

ovs-vsctl del-port gre21

ovs-vsctl del-port gre23

ovs-vsctl add-port vswitch02 gre21 -- set interface gre21 type=gre options:remote_ip=5.5.5.101

ovs-vsctl add-port vswitch02 gre23 -- set interface gre23 type=gre options:remote_ip=5.5.5.103

 

 

KVM3]

ovs-vsctl del-port gre31

ovs-vsctl del-port gre32

ovs-vsctl add-port vswitch02 gre31 -- set interface gre31 type=gre options:remote_ip=5.5.5.101

ovs-vsctl add-port vswitch02 gre32 -- set interface gre32 type=gre options:remote_ip=5.5.5.102


KVM1]

 $ ping 172.16.1.102

 $ ping 172.16.1.103

 

KVM2]

 $ ping 172.16.1.102

 $ ping 172.16.1.103

 

KVM3]

 $ ping 172.16.1.102

 $ ping 172.16.1.103

## 후 개고생했다... 일단 Ping 가는 것 까지 확인 완료!! ##

## Cisco 피셜 ##

 - 다수의 터널이 생성되며 통신을 시도할 경우 자원 사용률이 매우 높아지게 되어, 정상적인 테스트가 어려울 수 있다.

 - 통신상태 확인을 위해서는 터널의 숫자를 줄이고 테스트 해본다.




5. 클라우드 이미지를 이용한 인스턴스 생성

## 지금까지는 Cirros끼리만 통신을 해봤는데, 더 어려운 내용임.

5.1 외부 연결용 Openvswitch(vswitch01)에 직접 연결된 가상머신 생성하기.

5.1.1 stg에서 클라우드 이미지 준비

STG]

cp cirros-0.4.0-x86_64-disk.img /kmv/cirros99.img


5.1.2 vswitch01에 직접 연결되어 외부 연결용 주소(5.5.5.0/24)에 연결된 인스턴스 생성

KVM1]

virt-install --name cirros99 --vcpu 1 --ram 512 --network bridge=vswitch01,virtualport_type=openvswitch --disk /stg/cirros99.img --graphics none -v --import

root / 1849XXXX

ip a

5.5.5.11 IP 확인

Host PC]

ping 5.5.5.11

## 된다!! 바깥의 Host에서 안쪽의 가상머신으로 Ping이 감..!!


5.2 클라우드 이미지, virt-customize를 이용한 root 패스워드 지정하여 설치하기

5.2.1 virt-customize는 Openstack의 glance와 같은 곳에 배치할 이미지를 수정하여 사용하고자 할 때 사용된다.

  - 루트 패스워드 지정, 패키지 설치 등을 적용할 수 있다. 

  - 먼저 '루트 패스워드 변경'을 적용해 본다.

  - 다음과 같이 클라우드 이미지를 다운로드하고, 해당 이미지를 별도로 복사하여 디스크를 생성해 보자.

 

STG]

cd /kvm

wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-2009.qcow2 

설치 완료 ^^.. 겁나 오래 걸림;

 

cp CentOS-7-x86_64-GenericCloud-2009.qcow2 centos7-root-pass.qcow2

복사 완료.


5.2.2 virt-customize를 위한 libguestfs-tools 설치후 루트 패스워드 변경된 이미지로 커스터마이징

KVM1]

yum -y install libguestfs-tools libguestfs-xfs virt-top


export LIBGUESTFS_BACKEND=direct
export LIBVIRT_DEFAULT_URI=qemu:///system
virt-customize -a /stg/centos7-root-pass.qcow2 --root-password password:test123

## 간혹 정상적인 상태에서도 이미지가 변경되지 않는 경우가 있다. 이 경우에는 새로운 VM을 생성

    (Core2, Memory 2GB) 하여 진행하는 것이 좋다.

0.0%의 저주에 빠져버렸다... ㅎㅎ Customize bug라고 하심. 루트 패스워드 바꾸는건 그냥 생략하고 인스턴스를 생성하자!! 


5.2.3 루트 패스워드가 추가된 이미지로 인스턴스 생성하기

KVM1]

virt-install --name instance01 --vcpus 1 --ram 1024 --network bridge=vswitch01,virtualport_type=openvswitch --disk /stg/centos-root-pass.qcow2 --disk /stg/centos7-root-pass2.img,size=5 --graphics none -v --import


## 안될 경우 ##

KVM1]

vi vswitch01.xml


virsh net-define vswitch01.xml
virsh net-autostart vswitch01

virsh net-start vswitch01

 

virt-install --connect qemu:///system --name instance01 --vcpu 2 --ram 1024 --disk path=/stg/instance01.qcow2,size=10 --network bridge=vswitch01,virtualport_type=openvswitch --graphics vnc,port=5903 --cdrom /stg/CentOS-7-x86_64-Minimal-2009.iso --noautocons

Network 접속이 아닌, Openvswitch를 이용해서 접속을 하겠다라는 뜻임!!

 

## KIMCHI 들어가서 https://192.168.1.101:8001

^^.. 이것도 안된다 ^^..
virsh destroy instance01 // virsh undefine instance01 쳐서 CUI로 없애도 된다.

 

virt-install --connect qemu:///system --name instance01 --vcpu 1 --ram 1024 --disk path=/stg/instance01.qcow2,size=10 --network bridge=vswitch01,virtualport_type=openvswitch --graphics vnc --cdrom /stg/CentOS-7-x86_64-Minimal-2009.iso --autocons

## 별 방법을 다 써봐도 안된다. 최종적으로 알려준 방법으로는 아예 설치가 안된다 ㅎㅎ... 

K V M 은   여 기 서   그 냥   쫑 내 기 로 !! 쒜 엣 . . . 

K V M 은   여 기 서   그 냥   쫑 내 기 로 !! 쒜 엣 . . . 

K V M 은   여 기 서   그 냥   쫑 내 기 로 !! 쒜 엣 . . . 

K V M 은   여 기 서   그 냥   쫑 내 기 로 !! 쒜 엣 . . . 

K V M 은   여 기 서   그 냥   쫑 내 기 로 !! 쒜 엣 . . . 

다시는 보지 말자.

'가상화 > KVM' 카테고리의 다른 글

Cloud #2 (KVM 3대 + 스토리지 1대, KIMCHI Project)  (1) 2021.08.26
Cloud #1 (KVM-Linux의 가상머신)  (2) 2021.08.24