공부/AWS

ELB - ALB(2)

HY13 2021. 1. 4. 16:25

시작 템플릿 생성

 

왼쪽 몰록에서 시작 템플릿 클릭 

시작 템플릿 버튼 클릭

 

 

원하는 템플릿 이름 입력

템플릿버전 설명: v2.0 입력

Auto Scaling 체크박스 체크

 

AMI: Amazon Linux 2 AMI

인스턴스: t2.micro

키페어: 자신의 키페어 선택

 

 

키: Name, 값: WEB, 리소스 유형: 볼륨 추가

 

 

네트워크 인터페이스

퍼블릭 IP 자동할당: 비활성화 클릭 - 퍼블릭 IP를 할당받지 않게 하기 위해

`

 

고급세부정보 - 사용자 데이터 아래와 같이 추가

#!/bin/bash
yum -y install httpd 
systemctl start httpd && systemctl enable httpd
echo 'WEB' > /var/www/html/

 

 

시작 템플릿 생성 클릭

시작 템플릿 보기 클릭

 

템플릿 생성 완료!!


생성한 템플릿을 이용하여 인스턴스 생성해보자.

왼쪽 메뉴에서 인스턴스 클릭

인스턴스 시작 드롭다운 - 템플릿으로 인스턴스 시작 클릭

 

원본 템플릿 버전: 2 선택

네트워크 설정

서브넷: 가용영역 2a

보안그룹: SG-FRONTEND 선택

 

리소스 태그

값: WEB01로 변경

 

고급 세부 정보

사용자 데이터

echo 'WEB' 을 ech 'WEB01'로 변경

 

템플릿으로 인스턴스 시작 클릭

 

 

위와 같은 방법으로 4개의 인스턴스를 추가로 만들어준다.

두번째: 가용영역 2c, 리소스 값: WEB02, 사용자 데이터: WEB02

세번째: 가용영역 2a, 리소스 값: WEB03, 사용자 데이터: WEB03

네번째: 가용영역 2c, 리소스 값: WEB04, 사용자 데이터: WEB04

다섯번째: 가용영역 2a, 리소스 값: WEB05, 사용자 데이터: WEB05

 

 

 

 

배스천 생성

 

배스천 보안그룹 생성

원하는 이름 및 설명 입력

 

인바운드 규칙: SSH, 내 IP - 보안을 강화하기 위해(외부에서 들어오지 못하도록)

 

보안 그룹 생성 클릭

 

 

 

 

보안 그룹에서 SG-FRONTEND 체크 

SG-BASTION 대신 SG-FRONTEND를 선택한 이유는? 소스 수정하기 위해

 

아래부분 인바운드 규칙 수정 클릭

SSH - 하나 삭제

SSH 소스: 0.0.0.0/0 지우고 SG-BASTION 선택 - 내부 사용자들도 믿지 못해서 SG-BASTION 그룹 사람들만 들어올 수 있도록 해준다.

 

 

생성완료 클릭

 

 

 

 

 

 

원본 템플릿 버전: 1

 

 

서브넷: 가용영역 2c 선택

보안그룹: SG-BASTION으로 변경

 

 

 

리소스 태크

값: BASTION으로 변경

 

 

 

고급 세부 정보에서 사용자 데이터 정보 지워준다.

(배스천은 웹서버가 필요없기 때문에)

 

 

템플릿으로 인스턴스 시작 클릭


 

 

IP 선번장 / 대장 (IP를 따로 정리해 두는 것)

 

WEB01 172.31.11.200

WEB02 172.31.46.6

WEB03 172.31.8.92

WEB04 172.31.47.206

WEB05 172.31.10.152

BASTION 3.36.128.174

(BASTION을 제외하고 나머지 WEB0X는 프라이빗 아이피) - 생성할때 자동할당 비활성화 했기 때문에

 

 

 

BASTION의 퍼블릭 아이피 복사

MobaXterm을 열어 BASTION을 연결시켜준다.

OK 버튼을 눌러 연결을 시도한다.

연결 성공하면 아래와 같은 창이 뜬다.

 

 

curl 명령을 이용하여 WEB에 연결을 시도해본다.

아마 연결이 되지 않을것이다.

-> 아까 생성할때 보안을 강화시켜서 웹서버가 깔리지 않았다. 그래서 연결이 되지 않는다.

 

duplication을 이용해 탭을 총 5개로 만들어준다

 

SFTP를 이용해 키를 업로드 해준다.

왼쪽에 위로 화살표 방향 아이콘을 클릭해준다,

 

키를 선택하고 열기버튼을 눌러준다.

바로 업로드가 된다.

 

키의 권한을 낮춰준다. 

권한을 낮춰주지 않으면 권한이 너무 높아서 연결 실패가 발생한다.

[ec2-user@ip-172-31-45-254 ~]$ chmod 400 20210104.pem
[ec2-user@ip-172-31-45-254 ~]$ ssh -i 2 20210104.pem ec2-user@아이피 주소(아까 정리해둔 WEB아이피) 
// 총 4개 각각의 탭에 하나씩 입력 - WEB01, WEB02, WEB03, WEB04 아이피 복사 후 붙여넣기

 

 

MultiExec 클릭

$ sudo su - root                 // 각각의 탭에서 작성하기 번거로우니 한번에 입력

 

 


 

왼쪽 메뉴에서 탄력적 IP 클릭

탄력적 IP 주소 할당 클릭

변경 사항 없이 할당 클릭 - 총 5개 생성

 

 

 

탄력적 주소IP 하나 클릭 

작업 - 탄력적 IP주소 연결 클릭

 

 

 

MobaXterm에서 MultiExec

[root@ip-172-31-46-6 ~]# sudo yum -y install httpd
[root@ip-172-31-46-6 ~]# systemctl start httpd && systemctl enable httpd

 

 

모두 연결 해제 클릭하고 릴리즈 클릭

 

 

curl 연결이 된다.

 

 

 

왼쪽 메뉴에서 로드 벨런서 클릭

로드 벨런서 생성 버튼 클릭

Application Load Balancer

 

1단계)

이름: ALB(원하는 이름 입력)

가용영역: 현재 프리티어 이므로 가용영역 2a와 2c만 클릭

 

2단계)

경고 무시후 다음 클릭

 

3단계)

새 보안 그룹 생성

 

 

4단계)

대상그룹 이름: TG-ALB(원하는 이름 입력)

포트: 80 - 웹서버 5개의 80포트

5단계)

BASTION 제외하고 모든 인스턴스(WEB) 대상 등록

6단계)

검토 후 아래 생성 버튼 클릭

 

 

왼쪽 메뉴에서 대상 그룹 클릭

TG-ALB 클릭

아래 대상 클릭

등록된 대상에서 상태가 healthy로 변경될때까지 기다린다.

 

 

왼쪽 메뉴에서 로드밸런서 클릭

아래 설명부분 클릭

DNS 이름 복사 후 새 창 열어서 붙여넣기

새로고침하면 WEB01,WEB02 등등으로 계속 바뀐다.

 

 

 

 

 

대상그룹 총 5개 생성

 

첫번째 대상그룹 생성

왼쪽 목록에 대상그룹 클릭

대상 그룹 생성 클릭

이름: TG-CHROME

다음 클릭

 

사용가능한 인스턴스에 WEB01 체크

아래에 보류 중인 것으로 포함 클릭

대상 그룹 생성 클릭

 

 

 

위와같이 나머지 4개 대상그룹 생성

 

2. 이름: TG-FIREFOX

사용가능한 인스턴스에 WEB01 체크

 

3. 이름: TG-IE

사용가능한 인스턴스에 WEB01 체크

 

4. 이름: TG-ANDROID

사용가능한 인스턴스에 WEB01 체크

 

5. 이름: TG-IPHONE

사용가능한 인스턴스에 WEB01 체크

 

 

 

로드밸런서 아래부분에 리스너 클릭

규칙 보기/편집 클릭

+ 버튼 클릭

규칙 추가 클릭

조건: HTTP 헤더

User-Agent

*Chrome*

작업: TG-CHROME

저장

 

이제 크롬에서 새로고침을 아무리 해도 계속 WEB01(CHROME)만 나온다.

크롬이 아닌 다른 웹브라우저에서는 새로고침할때마다 변경됨

 

 

각각 페이지에서 해당 페이지만 뜨도록 위 방법과 같이 추가

 

만약 안드로이드 핸드폰을 사용한다면 1번이 안드로이드 2번이 아이폰

아이폰을 사용한다면 1번이 아이폰 2번이 안드로이드

(순서가 중요하다)

 

 

안드로이드 핸드폰에서 크롬, 인터넷 익스플로어 등 어떤 웹사이트든간에 DNS이름을 입력하여 접속해보면, 다음과 같이 안드로이드 페이지만 뜬다.

새로고침을 아무리 해도 안드로이드 화면만 뜬다.

(1번이 안드로이드이기 때문)

 

'공부 > AWS' 카테고리의 다른 글

Route 53 / Auto Scaling  (0) 2021.01.05
RDS  (0) 2021.01.04
ELB  (0) 2020.12.31
IAM  (0) 2020.12.31
EBS  (0) 2020.12.30