13.1 Autoscaling을 위한 준비
Step #1: Autoscaling에 사용할 템플릿 Compute 인스턴스 생성
Autoscaling을 사용하려면 기준 이미지가 필요합니다. Oracle Linux에 Apache가 설치된 템플릿 인스턴스를 먼저 만들겠습니다. 설치 스크립트는 cloud-init을 사용하고, 추가 인스턴스임을 확인하기 쉽게 하기 위해 index.html에 생성된 호스트의 Private IP가 보이도록 합니다.
-
왼쪽 상단의 Navigation Menu를 클릭하고 Compute으로 이동한 다음 Instances를 선택합니다.
-
새 Compute Instance를 생성합니다.
Name: Web-Server-Template으로 입력합니다
-
나머지는 이전과 동일하게 필요한 값들을 설정합니다.
-
추가적으로 제일 아래쪽 Show advanced options 클릭
-
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
-
아래쪽 Create를 클릭하여 인스턴스를 만듭니다.
-
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
-
주의사항
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이 필요합니다. 다음과 같은 순서로 만듭니다
-
생성된 인스턴스의 상세 화면으로 이동합니다.
-
추가 액션 메뉴 중 Create instance configuration 클릭
-
Instance Configuration 이름 입력 후 Create Instance Configuration 클릭
-
생성 완료
Step #3: Instance Configuration을 이용해 찍어낼 Instance Pool 생성
Instance Pool은 Instance Configuration을 통해 만들어진 같은 구성기반의 인스턴스들의 모음입니다.
-
Instance Pool에서 Load Balancer를 사용하기 위해서는 사전에 만들어야 합니다. 이전 장에서 만든 Load Balancer를 사용하거나, 없는 경우 미리 만듭니다.
-
앞서 만든 Instance Configuration에서 Create instance pool을 클릭
-
Instance Pool 생성 기본 정보
- Name: 예, web-server-instance-pool
- Create in compartment: 사용중인 Compartment
- Number of instances: 1
-
위치 정보
-
생성될 VM 들이 위치할 도메인 및 VCN, Subnet을 선택합니다.
-
-
Load Balancer 설정
-
인스턴스들간의 분배를 위해 Load Balacner가 필요하므로 Attach a load balancer을 체크합니다.
-
Load Balancer 장에서 만든 것을 그대로 사용합니다. 없으면 새로 만듭니다.
-
Load balancer: 사용할 Load Balancer 선택
-
Backend set: Load Balancer의 분배 대상이 되어 Backend Set 선택
-
Port: 수신할 포트 입력
-
VNIC: Primary VNIC만 있으므로 선택
-
-
다음 페이지에서 선택한 설정을 확인후 Create 합니다.
-
Instance Pool이 만들어지고 인스턴스 1개가 만들어 집니다.
-
Resources > Load balancer 로 이동하여 연관된 Load Balancer을 클릭합니다.
-
LB 상세정보에서 Backend Set으로 이동하여 Instance Pool이 사용하는 Backend Set 클릭
-
Backend Set에 자동으로 추가된 것을 확인할 수 있습니다. 또한 Health가 OK인 상태로 생성된 VM에 있는 Apache 서버와 정상 통신 된 것을 알 수 있습니다.
-
브라우저를 통해 LB의 Public IP로 접속합니다. 정상적으로 구성되었음을 알 수 있습니다.
이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.