[클라우드/OpenStack - OpenStack 환경 구성하기(2) - Loadbalancer]

SooYeon Yeon·2022년 9월 18일
0

클라우드 OpenStack

목록 보기
6/9

실습

  • cirros 이미지 다운
[root@localhost 0916(logged)]# wget http://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img
  • cirros 이미지를 glance에 “CIRROS” 이름으로 등록
[root@localhost 0916(logged)]# openstack image create "CIRROS" --file cirros-0.5.1-x86_64-disk.img --disk-format qcow2 --container-format bare --public
  1. flavor(m1.tiny 사용할 것), network(network ID) (mynet1의 id), image(CIRROS)

    [root@localhost 0916(logged)]# openstack flavor list
    +----+-----------+-------+------+-----------+-------+-----------+
    | ID | Name      |   RAM | Disk | Ephemeral | VCPUs | Is Public |
    +----+-----------+-------+------+-----------+-------+-----------+
    | 1  | m1.tiny   |   512 |    1 |         0 |     1 | True      |
    | 2  | m1.small  |  2048 |   20 |         0 |     1 | True      |
    | 3  | m1.medium |  4096 |   40 |         0 |     2 | True      |
    | 4  | m1.large  |  8192 |   80 |         0 |     4 | True      |
    | 5  | m1.xlarge | 16384 |  160 |         0 |     8 | True      |
    | 6  | m1.xsmall |  1024 |   20 |         0 |     1 | True      |
    +----+-----------+-------+------+-----------+-------+-----------+
    [root@localhost 0916(logged)]# openstack network list
    +--------------------------------------+--------+--------------------------------------+
    | ID                                   | Name   | Subnets                              |
    +--------------------------------------+--------+--------------------------------------+
    | 59c55d07-7d4a-4541-bb95-183fa2c9c0fa | mynet2 | bda81732-6483-44ae-a70b-2694842d4a99 |
    | 5d8c950e-2c55-4725-ac6b-3fc9f1103124 | extnet | b0bf766d-da90-446a-8347-20c186318bbe |
    | 7076d607-5b0e-4877-bd51-4644db97a03b | mynet1 | 6de82e67-b6ca-4ebd-bdc3-a9a020214ffd |
    +--------------------------------------+--------+--------------------------------------+
    • 인스턴스 만들기
    [root@localhost 0916(logged)]# openstack server create --flavor m1.tiny \
    > --image CIRROS \
    > --nic net-id=7076d607-5b0e-4877-bd51-4644db97a03b \
    > --security-group permitweb \
    > TESTDB
    • 만든 인스턴스의 사설 주소 확인
    [root@localhost 0916(logged)]# openstack server list
    +--------------------------------------+---------+--------+--------------------------------------+---------+-----------+
    | ID                                   | Name    | Status | Networks                             | Image   | Flavor    |
    +--------------------------------------+---------+--------+--------------------------------------+---------+-----------+
    | a24fbd40-405a-4344-aefc-201f0562d155 | TESTDB  | ACTIVE | mynet1=172.16.123.4                  | CIRROS  | m1.tiny   |
    • centos로 들어가서 만든 인스턴스(TESTDB)에 ping 보내보기
    [root@localhost 0916(logged)]# ssh -i ~/.ssh/chulsoo.pem -l centos 211.183.3.203
    Last login: Fri Sep 16 00:51:59 2022 from 211.183.3.111
    [centos@centos1 ~]$ ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
            inet 172.16.223.204  netmask 255.255.255.0  broadcast 172.16.223.255
    ...
    [centos@centos1 ~]$ ping 172.16.123.4 -c 3
    PING 172.16.123.4 (172.16.123.4) 56(84) bytes of data.

    ping 보내면 응답하지 않는다.

    static route를 구성해야한다.

현재 상태는 이런 상태이다.

myrouter1은 초록색(172.16.223.0/24)를 가기 위해서는 next hop을 myrouter2(211.183.3.202)로 지정해야 한다.

myrouter2는 주황색(172.16.123.0/24)를 가기 위해서는 next hop을 myrouter1(211.183.3.207)로 지정해야 한다.

프로젝트 > 네트워크 > 라우터 > myrouter1/2 > 정적 경로 클릭 후 작성

이후 ping을 centos1/2에 들어가 ping을 다시 해보면 연결 된 것을 확인할 수 있다.

```bash
[centos@centos1 ~]$ ping 172.16.123.4 -c 3
PING 172.16.123.4 (172.16.123.4) 56(84) bytes of data.
64 bytes from 172.16.123.4: icmp_seq=1 ttl=62 time=7.14 ms
64 bytes from 172.16.123.4: icmp_seq=2 ttl=62 time=2.14 ms
64 bytes from 172.16.123.4: icmp_seq=3 ttl=62 time=2.71 ms

--- 172.16.123.4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2008ms
rtt min/avg/max/mdev = 2.143/3.999/7.142/2.234 ms
```

```bash
[root@localhost 0916(logged)]# ssh -i ~/.ssh/chulsoo.pem -l centos 211.183.3.206
Last login: Fri Sep 16 01:50:04 2022 from 211.183.3.111
[centos@centos2 ~]$ ping 172.16.123.4 -c 3
PING 172.16.123.4 (172.16.123.4) 56(84) bytes of data.
64 bytes from 172.16.123.4: icmp_seq=1 ttl=62 time=3.06 ms
64 bytes from 172.16.123.4: icmp_seq=2 ttl=62 time=11.0 ms
64 bytes from 172.16.123.4: icmp_seq=3 ttl=62 time=1.35 ms

--- 172.16.123.4 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2007ms
rtt min/avg/max/mdev = 1.358/5.165/11.071/4.234 ms
```

Floating IP 연결 해제

프로젝트 > 네트워크 > LoadBalancers > create loadbalancer

- Backend는 .223.~와 이어져있는 상태. 여기서의 IP는 Backend쪽

앞쪽은 Floating IP로 공인IP와 지정 할 예정

- Foreground의 80번 포트에 들어오게 되면

- 부하 분산

부하 분산

1. LEAST_CONNECTIONS
    - 각 서버로 접속한 사용자들의 세션을 확인하여 가장 접속이 적은 쪽으로 보냄
2. ROUND ROBIN
    - 돌아가면서 한번씩 보냄
3. SOURCE IP
    - 출발지의 IP를 확인한다
    - 예를들어 출발지IP(1.1.1.1, 1.1.1.3, 1.1.1.8) / 서버1, 서버2가 있다고 가정했을 때 맨 마지막 비트가 1→ 0000 0001 , 3 → 0000 0011, 8 → 0000 1000 이다. 마지막 비트 1이면 서버2로, 0이면 서버1로
    - 서버가 4대면 비트 두자리를 보고 확인한다. 서버1(00), 서버2(01), 서버3(10), 서버4(11)
    - 단, 이 방법은 아무것도 가지 않는 서버가 생길 수 있고, 한 곳으로 몰릴 수도 있다.

주로 1,2번 방법을 많이 쓴다.

- 백엔드 선택 (CentOS1, CentOS2 선택)

weight 가중치를 주어 세션이 들어왔을 때 2:1로 하면 2개의 세션(위), 1개의 세션(아래) 이런식으로 보낼 수 있다.

- health monitor

해당 경로로 접속해서 정상 접속 되는 것을 확인하는데, GET으로 확인하고, 일정 시간 연결 안되면 죽었다고 판단

curl -X GET [http://localhost/로](http://localhost/로) 해서 열리는 거 확인한다는 것과 같음

Create Load Balancer 클릭

해당 로드밸런서에 FLoating IP를 설정한다.

- 해당 로드밸런서(FloatingIP)로 접속했을 때 Round Robin방식으로 1,2가 번갈아서 나오는 지 확인 할 수 있다.

- centos2의 index.html 파일을 삭제하고 기다린 후 1페이지만 보이는지 확인하기

```bash
[centos@centos2 ~]$ ls /var/www/html
index.html
[centos@centos2 ~]$ sudo rm -rf /var/www/html/index.html
```

- 확인하면 삭제된 centos2의 index 파일은 보이지 않고, centos1의 파일만 보이는 것을 확인할 수 있다.

- 이후 다시 centos2에 index파일을 생성하면 그 파일로 적용된다

0개의 댓글