출처 : http://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img
wget http://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img
- Image 를 OpenStack 에 다운 받자
- 위의 크기와 동일해야 한다
openstack image create "CIRROS" --file cirros-0.5.1-x86_64-disk.img --disk-format img --container-format bare --pub
- 위 명령어를 통해 Image 를 등록하자
- disk format 은 qcow2 이다. img 는 확장자 이다
- 잘 등록되었다
- flavor 확인 - m1.tiny
- network ID 확인 - mynet1 의 ID ( ebe78f35-b03f-4662-bd14-ee9fb1a0c626 )
openstack server create --flavor m1.tiny --image CIRROS --nic net-id=ebe78f35-b03f-4662-bd14-ee9fb1a0c626 --security-group permitweb TESTDB
- Instacne 를 생성해주자
- IP 를 확인해보자
[root@localhost 0916(logged)]# ssh -i ~/.ssh/chulsoo.pem -l centos 211.183.3.205
Last login: Fri Sep 16 00:01:15 2022 from 211.183.3.1
[centos@centos1 ~]$ ping 172.16.123.19
PING 172.16.123.15 (172.16.123.15) 56(84) bytes of data.
- 전에 생성한 CentOS1 에서 새로 생성한 Instance 에 Ping 을 보낼려하면 실패한다. 이는 서로 다른 Network 에 있으며, 서로의 사설 주소 구간을 모르기 때문이다
- 정적 경로 추가를 눌러주자
- Router 1 에서는 Router 2 의 사설 구간의 네트워크 대역으로 가는 것은 Router 2 로 보내도록 Router 2 의 Floating IP 를 지정한다
- 대상 CIDR 은 목적지 네트워크 대역, 다음 HOP 은 해당 목적지 네트워크 대역의 Router 의 IP 를 입력해준다. 이를 통해 다른 사설 네트워크와 통신을 할 때, 라우터는 다른 사설 네트워크 대역에 대해서는 모르지만, 해당 대역으로 가는 요청은 해당 사설 네트워크의 라우터로 보내게 정적 경로를 지정했으므로, 해당 네트워크로 가는 요청을 지정된 라우터로 보내어 통신이 가능하게 한다
- 물론 다른 라우터에서도 이 라우터와 이 라우터의 사설 네트워크 대역에 대한 정적 경로를 지정해야 서로 통신이 가능하다
- Router 2 에서도 동일하게 Router 1 의 사설 구간의 네트워크 대역으로 가는 것은 Router 1 로 보내도록 Router 1 의 Floating IP 를 지정한다
- L4 LB 는 IP 기반의 트래픽 분산 -> AWS 에서 NLB
- L7 LB 는 주소 기반의 트래픽 분산 -> AWS 에서 ALB
- Create Load Balancer 를 누르자
- 이름과 IP 주소, Subnet 을 지정해주자. 우리는 mysubnet2 에 Load Balancer 를 생성할 것이다
- Foreground 를 지정한다. 우리는 HTTP 프로토콜로 80 번 Port 로 들어오는 것에 대해 처리한다
method 를 확인하자
- LEAST CONNECTIONS : 각 서버로 접속한 사용자들의 세션을 확인하여 가장 접속이 적은 쪽으로 보내준다
- ROUND_ROBIN : 돌아가면서 한 번씩
- SOURCE_IP : 출발지 IP 를 확인한다. 서버의 개수에 따라 IP 의 지정돤 개수의 BIT 를 확인한다. 서버가 2 대라면 BIT 한 자리만 확인하고, 4 대라면 BIT 두 자리를 확인한다
서버 2 대 -> 0000 0000 , 0000 0001
서버 4 대 -> 0000 0000 , 0000 0001 , 0000 0010 , 0000 0011
- ROUND_ROBIN 을 선택하자
- 멤버를 지정하자. 연결될 서버라고 보면 된다. Weight 를 통해 요청을 전달할 가중치를 지정할 수 있다
- Ping 을 보냈을 때, 만약 Ping 이 제대로 가지 않는다면, 5 초를 간격으로 3 번 시도하는데, 5 초 이내에 응답이 오지 않으면 해당 멤버를 트래픽 전달 대상에서 제외시키는 설정이다
- 우리는 HTTP 를 이용해 기본 페이지로 접속이 가능한지 확인하게 할 것이다. 만약, index.html 이 없으면, 해당 서버는 제외된다. 다시 index.html 을 생성해주면, 해당 서버는 Load Balancer 에서 다시 트래픽을 전달해준다
- Load Balancer 를 생성해주자!!!
- LB 에 Floating IP 를 할당해주자
- Floating IP 확인
- 위와 같은 구조이다. LB 로 접근하려면 Router 에서 NAT 를 거쳐서 LB 에 트래픽을 전달해준다
- 처음 접속시
- 다음 접속시에는 다른 페이지가 출력된다. 라운드 로빈 방식으로 요청을 돌아가면서 전달해주는 것이다
- CentOS1 의 index.html 을 삭제하자
- 새로 고침을 계속 해도 CentOS2 만 출력된다. CentOS1 서버는 살아있지만, 기본 페이지가 없으므로 LB 에서 트래픽 전달을 안해주는 것이다
- 다시 index.html 을 생성해주자
- 트래픽을 다시 전달해준다