오토스케일링
기존의 방법대로 EC2를 여러개 만들어서 ELB에 붙이는 방법이 있습니다. 근데 만약에 트레픽이 없는데, 놀고 있는 EC2가 생기게 되면 엄청난 자원낭비가 될 수 있습니다. 그래서 트레픽에 따라서 인스턴스를 늘리고 줄일 수 있는 오토스케일러를 사용하면 좋습니다.
이는 ELB에 연결된 EC2를 늘렸다가 줄이는 역할을 하는 겁니다. 유저가 적을 때는 비용을 아끼고, 유저가 많을 때는 서버 과부화를 막습니다. 그리고 서버를 늘리는 기준도 오토스케일러를 만들 떄 설정할 수 있습니다. 만약에 기본의 개수가 3개고 이들의 CPU 점유율이 50%가 넘어가면 1개를 추가하고 추가했는데도 50%를 넘어가면 1개를 추가하는 방식으로 설정할 수 있습니다. CPU외에도 다양한 것을 활용할 수 있습니다.
이를 만들기 위해서는 아래의 과정을 차례대로 진행해 줘야 합니다.
- 우선 서버를 하나 만듭니다.
- 이에 대한 이미지를 생성합니다.
- 그리고 시작 템플릿을 생성합니다.
- 이미지는 이제 Nginx, Django폴더들을 캡쳐를 뜨는 것을 말하고 시작 템플릿이라는 것은 AWS에서 관장하는 다양한 용량,.. 서버 외적인 것들의 환경을 저장해 놓은 것이라고 할 수 있겠습니다.
- 그리고 대상그룹을 만듭니다.
- default몇개의 인스턴스를 연결할 건지도 가능! ( 실습에서는 1개로 fix )
- 그리고 ALB를 대상 그룹으로 연결시킵니다.
- Auto Scaling그룹을 만듭니다.
우선 1차적으로 Auto Scaling그룹은 ALB와 연결해야 합니다. 그래야 default로 어떤 대상 그룹과 연결 되어있는지 로드벨런서를 통해 알 수 있으니까요. 그리고 시작 템플릿 까지 넣습니다. 왜냐하면 인스턴스를 찍어내야 하니까요.
실습
우선 저는 기존에 만든 nginx-server의 이미지를 활용하여, 시작 템플릿을 하나 간단히 만들어 주도록 하겠습니다.
그 후에 대상 그룹을 하나 만들고 인스턴스 하나와 연결해주도록 하겠습니다.
그 다음으로는 로드벨런서를 만들어 주도록 하겠습니다. 그리고 대상 그룹과 연결시켜주는 작업을 해보도록 하겠습니다.
이는 80번 HTTP를 위에서 만든 대상 그룹을 리스닝합니다.
대망의 Auto Scaling Group을 만들겠습니다.
다음과 같이 시작하겠습니다.
이렇게 기존 로드벨런서에 연결하도록 하겠습니다. 만약 로드벨런서와 연결하지 않아도 상관은 없지만. 로드벨런서가 있음에 대상그룹이 있고 새로 추가되고 없어지는 인스턴스를 쉽게 관리해 줄 수 있습니다. 그리고 상태 확인 유예기간을 설정할 수 있습니다. 이는 health-check를 5분마다 하겠다는 의미입니다.
마지막으로 최대 최소 시작 인스턴스의 개수를 적고 크기 조정 정책을 설정해 주었습니다. CPU점유율이 50프로 넘어가면 하나 추가하도록 설정했습니다. 또한 인스턴스 요구 사항에 300을 적었는데, 이도 이는 인스턴스를 하나 추가하고 300초 후 부터 CPU점유율 같은걸 확인하겠다는 의미입니다(유예기간) 이라고 합니다.
그리고 인스턴스 축소는 하지 않을 것이므로 이는 체크하지 않았습니다.
그럼 성공적으로 Auto Scaling Group을 만들어 성공적으로 트레픽을 관리할 수 있게 되는 겁니다.