TheKoguryo's 기술 블로그

 Version 2024.04.01

13.1 Autoscaling을 위한 준비

Step #1: Autoscaling에 사용할 템플릿 Compute 인스턴스 생성

Autoscaling을 사용하려면 기준 이미지가 필요합니다. Oracle Linux에 Apache가 설치된 템플릿 인스턴스를 먼저 만들겠습니다. 설치 스크립트는 cloud-init을 사용하고, 추가 인스턴스임을 확인하기 쉽게 하기 위해 index.html에 생성된 호스트의 Private IP가 보이도록 합니다.

  1. 왼쪽 상단의 Navigation Menu를 클릭하고 Compute으로 이동한 다음 Instances를 선택합니다.

  2. 새 Compute Instance를 생성합니다.

    Name: Web-Server-Template으로 입력합니다

  3. 나머지는 이전과 동일하게 필요한 값들을 설정합니다.

  4. 추가적으로 제일 아래쪽 Show advanced options 클릭

  5. cloud-init 을 사용하여 인스턴스 생성시 시작할 스크립트를 설정할 수 있습니다. 여기서는 bash 스크립트를 사용하여 Apache 설치 및 index.html 생성작업을 실행합니다.

    #!/bin/bash
    sudo yum -y install httpd
    sudo firewall-offline-cmd --add-port=80/tcp
    MY_IP=$(hostname -I)
    sudo bash -c "echo 'Hello Apache on '$MY_IP >> /var/www/html/index.html"
    sudo systemctl start httpd
    sudo systemctl enable httpd
    sudo systemctl restart firewalld
    

    image-20230509194305261

  6. 아래쪽 Create를 클릭하여 인스턴스를 만듭니다.

  7. cloud-init 로그

    /var/log/cloud-init-output.log 파일에서 cloud-init의 실행로그를 확인할 수 있습니다. 패키지 설치 등으로 인해 인스턴스 생성직후 약간의 시간이 걸립니다.

    • cloud-init 로그 예시

      Cloud-init v. 22.1-6.0.4.el8_7.2 running 'init-local' at Tue, 09 May 2023 10:44:10 +0000. Up 17.71 seconds.
      Cloud-init v. 22.1-6.0.4.el8_7.2 running 'init' at Tue, 09 May 2023 10:44:12 +0000. Up 19.65 seconds.
      ...
      Installed:
        apr-1.6.3-12.el8.x86_64                                                       
        apr-util-1.6.1-6.el8.x86_64                                                   
        apr-util-bdb-1.6.1-6.el8.x86_64                                               
        apr-util-openssl-1.6.1-6.el8.x86_64                                           
        httpd-2.4.37-51.0.1.module+el8.7.0+21029+de29ba63.5.x86_64                    
        httpd-filesystem-2.4.37-51.0.1.module+el8.7.0+21029+de29ba63.5.noarch         
        httpd-tools-2.4.37-51.0.1.module+el8.7.0+21029+de29ba63.5.x86_64              
        mod_http2-1.15.7-5.module+el8.7.0+21029+de29ba63.4.x86_64                     
        oracle-logos-httpd-84.5-1.0.1.el8.noarch                                      
      
      Complete!
      success
      Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
      Cloud-init v. 22.1-6.0.4.el8_7.2 running 'modules:final' at Tue, 09 May 2023 10:44:17 +0000. Up 24.13 seconds.
      Cloud-init v. 22.1-6.0.4.el8_7.2 finished at Tue, 09 May 2023 10:45:59 +0000. Datasource DataSourceOracle.  Up 126.30 seconds
      

주의사항

cloud-init에서 앞서 Load Balancer 실습에서 사용한 firewall-cmd 구문을 그대로 사용하면 cloud-init시 다음 에러가 발생합니다. 그래서 대신 firewall-offline-cmd 구문을 사용합니다.
Mar 5 05:50:46 instance-20190305-1447 cloud-init: ERROR:dbus.proxies:Introspect error on :1.3:/org/fedoraproject/FirewallD1: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

Step #2: 생성한 인스턴스로 Instance Configuration 생성

Autoscaling시 만들어진 Instance의 구성정보를 만들기 위해 Instance Configuration이 필요합니다. 다음과 같은 순서로 만듭니다

  1. 생성된 인스턴스의 상세 화면으로 이동합니다.

  2. 추가 액션 메뉴 중 Create instance configuration 클릭

    image-20230509195300395

  3. Instance Configuration 이름 입력 후 Create Instance Configuration 클릭

    web-server-instance-config

  4. 생성 완료

Step #3: Instance Configuration을 이용해 찍어낼 Instance Pool 생성

Instance Pool은 Instance Configuration을 통해 만들어진 같은 구성기반의 인스턴스들의 모음입니다.

  1. Instance Pool에서 Load Balancer를 사용하기 위해서는 사전에 만들어야 합니다. 이전 장에서 만든 Load Balancer를 사용하거나, 없는 경우 미리 만듭니다.

  2. 앞서 만든 Instance Configuration에서 Create instance pool을 클릭 Create Instance Pool

  3. Instance Pool 생성 기본 정보

    • Name: 예, web-server-instance-pool
    • Create in compartment: 사용중인 Compartment
    • Number of instances: 1 image-20230509201553369
  4. 위치 정보

    • 생성될 VM 들이 위치할 도메인 및 VCN, Subnet을 선택합니다.

      image-20230509200203683

  5. Load Balancer 설정

    • 인스턴스들간의 분배를 위해 Load Balacner가 필요하므로 Attach a load balancer을 체크합니다.

    • Load Balancer 장에서 만든 것을 그대로 사용합니다. 없으면 새로 만듭니다.

    • Load balancer: 사용할 Load Balancer 선택

    • Backend set: Load Balancer의 분배 대상이 되어 Backend Set 선택

    • Port: 수신할 포트 입력

    • VNIC: Primary VNIC만 있으므로 선택

      image-20230509200626000

  6. 다음 페이지에서 선택한 설정을 확인후 Create 합니다.

  7. Instance Pool이 만들어지고 인스턴스 1개가 만들어 집니다.

    image-20230509202153557

  8. Resources > Load balancer 로 이동하여 연관된 Load Balancer을 클릭합니다.

    image-20230509202322461

  9. LB 상세정보에서 Backend Set으로 이동하여 Instance Pool이 사용하는 Backend Set 클릭

  10. Backend Set에 자동으로 추가된 것을 확인할 수 있습니다. 또한 Health가 OK인 상태로 생성된 VM에 있는 Apache 서버와 정상 통신 된 것을 알 수 있습니다.

    image-20230509202519985

  11. 브라우저를 통해 LB의 Public IP로 접속합니다. 정상적으로 구성되었음을 알 수 있습니다.

    image-20230509202631542



이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 17 Jan 2022