# Auto Scaling 설정

## Amazon EC2 Auto Scaling 지원 <a href="#id-0" id="id-0"></a>

> <https://docs.plura.io/ko/iaas/aws/ec2_scaling>

PLURA 에이전트가 설치된 인스턴스를 Auto Scaling 할 때는 다음 사항을 고려해야 합니다.

* PLURA는 IP주소와 호스트명을 기준으로 에이전트를 식별합니다.
* Auto Scaling으로 새로운 인스턴스가 생성되면 PLURA 에이전트가 자동으로 등록됩니다.
* 인스턴스가 종료되어도 등록된 에이전트는 자동으로 삭제되지 않으며, 상태만 "중지"로 변경됩니다.
* 인스턴스가 종료되었다가 재생성될 때 다른 IP주소를 할당받으면, PLURA 에이전트 목록에 중복이 발생할 수 있습니다.
* 이를 방지하려면, 제한된 IP 풀에서 IP주소를 할당하여 불필요한 에이전트 중복을 방지할 수 있습니다.
* 퍼블릭 IP주소를 사용할 경우 비용이 발생하므로 내부 IP주소 할당 방식을 권장합니다.

아래 절차에 따라 고정 IP주소를 사용하여 Auto Scaling을 설정합니다.

1. 고정 IP주소 확보&#x20;
2. 에이전트 설치&#x20;
3. Auto Scaling 이미지 생성
4. 시작 템플릿 생성&#x20;
5. Auto Scaling 그룹 생성&#x20;
6. 인스턴스 생성/종료 테스트

***

### 1. 고정 IP주소 확보 <a href="#id-1" id="id-1"></a>

* 새로 생성될 인스턴스에 할당할 고정 IP주소 서브넷을 확보합니다.
* 유동 IP와 충돌하지 않도록 고정 IP 전용 서브넷을 생성합니다.
* 여러 가용 영역에서 인스턴스가 생성될 경우, 각 영역에 서브넷을 생성합니다.

<figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/01.png" alt=""><figcaption></figcaption></figure>

**네트워크 인터페이스 생성**

* Auto Scaling 최대 용량만큼 네트워크 인터페이스를 미리 생성하고, 각각에 고정 IP를 할당합니다.
* 나중에 이 IP 목록을 `user-data`에 입력합니다.
* 네트워크 인터페이스의 설명 항목에 "plura-waf"를 입력해, `user-data` 스크립트에서 식별할 수 있도록 합니다.

<figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/02.png" alt=""><figcaption></figcaption></figure>

### 2. 에이전트 설치 <a href="#id-2" id="id-2"></a>

* 에이전트를 설치한 후, 아래 설정을 추가합니다.

```bash
vi /etc/plura/conf/plura.conf

interface=eth1
login_delay_sec=60
```

### 3. Auto Scaling 이미지 생성 <a href="#id-3" id="id-3"></a>

* 에이전트가 설치된 인스턴스의 AMI 이미지를 생성합니다.

<figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/03.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/04.png" alt=""><figcaption></figcaption></figure>

### 4. 시작 템플릿 생성 <a href="#id-4" id="id-4"></a>

* Auto Scaling 그룹에서 사용할 시작 템플릿을 생성합니다.

<figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/05.png" alt=""><figcaption></figcaption></figure>

* 이전 단계에서 생성한 AMI 이미지를 지정합니다.

<figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/06.png" alt=""><figcaption></figcaption></figure>

* 템플릿의 **고급 세부 정보** 항목에 고정 IP주소 및 호스트명을 할당하는 스크립트를 입력합니다.

<figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/07.png" alt=""><figcaption></figcaption></figure>

* 환경에 맞게 접근키, 비밀키, IP주소 값을 수정합니다.

<figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/08.png" alt=""><figcaption></figcaption></figure>

### 5. Auto Scaling 그룹 생성 <a href="#id-5" id="id-5"></a>

* Auto Scaling 그룹을 생성하고, 이전에 만든 시작 템플릿을 지정합니다.

<figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/09.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/10.png" alt=""><figcaption></figcaption></figure>

### 6. 인스턴스 생성/종료 테스트 <a href="#id-6" id="id-6"></a>

* Auto Scaling 그룹의 **그룹 세부 정보**에서 그룹 크기를 수동으로 조정합니다.

<div align="center"><figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/11.png" alt=""><figcaption></figcaption></figure></div>

* 원하는 값을 지정할 수 있습니다.

<div align="center"><figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/12.png" alt=""><figcaption></figcaption></figure></div>

* **시스템 관리 > 에이전트 목록**에서 새로 생성된 인스턴스를 확인할 수 있습니다.

  <figure><img src="https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/15.png" alt=""><figcaption></figcaption></figure>
* 새로운 인스턴스가 생성되면 PLURA 에이전트가 자동으로 추가되며, 인스턴스가 종료되어도 에이전트는 삭제되지 않고 상태만 "중지"로 변경됩니다.
* 상태 변경은 최대 5분 정도 소요됩니다.

&#x20;        [![image](https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/14.png)](https://qubitsec.github.io/docs/images/Public_Cloud/autoscaling_setup/14.png)

* 이미 등록된 에이전트의 IP주소나 호스트명과 일치하는 인스턴스가 생성되면, 새 에이전트가 추가되지 않고 상태만 변경됩니다.
