상세 컨텐츠

본문 제목

[AWS] CLI를 통해 Key Pair 생성 | NAT Gateway | Load Balancing

IT/AWS

by o_zeew 2022. 6. 20. 15:06

본문

(1) CLI를 통해 Key Pair 생성

(2) NAT Gateway

(3) Load Balancing


 1. 복습  

1. Private & Public Key 생성 및 올리기

이전 실습에 생성한 Access Key 삭제
새로운 Key 생성
생성된 private & public key

 

  * 이전 실습에서는 AWS에서 키 페어 가져오기로 진행하였다

  * cmd 창에서 명령어로 AWS로 키 올리기

 

키 페어 생성 확인

 

2. VPC 생성

VPC 생성

 

3. 서브넷 생성

  * web과 was를 pub 이름으로 묶어서 진행

  - PUB_A : 10.0.0.0/24, ap-northeast-2a

  - PUB_C : 10.0.1.0/24, ap-northeast-2c

  - DB_A : 10.0.2.0/24, ap-northeast-2a

  - DB_C : 10.0.3.0/24, ap-northeast-2c

서브넷 생성 완료

 

4. 인터넷 게이트웨이 생성

2Tier_IG 이름으로 인터넷 게이트웨이 생성 후 VPC에 연결
생성한 VPC와 연결
상태 Attached 확인

 

5. 라우팅 테이블 편집

 

  - 네트워크 대역이 다를 때 Local 대역에 속하면 Local끼리 통신

  - 네트워크 대역이 다를 때 Local 대역에 속하지 못하면 인터넷 게이트웨이를 통해 외부로 내보냄

  - 현재 라우팅 우선순위는 Local(내부)에 있음(서브넷 마스크가 긴 것에 먼저 맞춤 10.0.0.0/16 > 0.0.0.0/0)
    → 내부에 없는 애들은 외부(인터넷 게이트웨이)로 내보냄

인터넷 게이트웨이 추가

 

  - 외부와 통신할 서브넷을 명시적으로 연결

서브넷 연결 편집
PUB_A, PUB_C 추가
추가 완료

 

 

 2. NAT 게이트웨이 

  - 라우팅 테이블에 연결되지 못한 인스턴스들은 공인 IP를 할당받아도 외부로 나갈 수 X

  - DB는 업데이트를 위해 인터넷이 연결되어있어야 하기 때문에 NAT 게이트웨이를 통해서 사용

    → NAT 게이트웨이는 포트포워딩 기능이 없기 때문에 외부로 나갈 순 있지 외부에서 들어오기 불가능

    → NAT 게이트웨이는 인터넷 가용 영역에 있어야 하기 때문에 공인 IP 할당

 

NAT 게이트웨이 구성도

 

1. NAT 게이트웨이 생성

NAT 게이트웨이 생성
서브넷 : PUB_A, Elastic IP 할당
NAT 게이트웨이 생성 완료

 

2. 라우팅 테이블 생성

NAT 이름의 라우팅 테이블 생성

 

3. 라우팅 편집

  - 네트워크 대역이 다를 때 Local 대역에 속하면 Local끼리 통신

  - 네트워크 대역이 다를 때 Local 대역에 속하지 못하면 NAT 게이트웨이를 통해 외부로 내보냄

라우팅 편집

 

4. 명시적 서브넷 연결

  - 명시적 서브넷에 연결되어있지 않다면 공인 IP를 할당 받더라도 외부 통신 불가

서브넷 연결 편집
DB_A, DB_C 연결
NAT 라우팅과 DB_A, DB_C 연결 완료

 

5. 보안 그룹 편집

모든 사용자에 대해 SSH, ICMP, HTTP 열기

 

6. 인스턴스 생성

인스턴스 시작
위에서 cli로 올린 키 페어 사용
PUB_A 서브넷에 생성

 

  * 고급 세부 정보의 사용자 데이터에 스크립트 작성 시 인스턴스가 생성될 때 실행

    → 인스턴스 생성 시 공인 IP를 주지 않아도 사용자 데이터를 실행 시키기 위한

         최소한의 인터넷이 연결되도록 설정되어있음 (설정이 끝나면 끊김)

httpd 스크립트 작성

 

7. 공인 IP 할당

탄력적 IP 주소 연결
WEB_A1과 연결

 

  - 인스턴스의 사용자 데이터가 정상적으로 실행이 되면 공인 IP로 내용 확인 가능

공인 IP로 웹 페이지 접속 가능

 


 

 <NAT 게이트웨이 설정 확인> 

  - WEB_A1은 인터넷 게이트웨이 라우팅에 연결되어있기 때문에 공인 IP를 통해 외부 접속 가능

  - DB_A1는 NAT 게이트웨이 라우팅에 연결되어있기 때문에 외부로 나가기만 가능

WEB_A1 공인 IP 확인
DB_A1 공인 IP X

 

1. WEB_A1에 개인키 올리기

  - WEB_A1에서 DB_A1로 SSH 접속을 위해서는 DB_A1에는 공개키가, WEB_A1에는 개인키가 존재 해야함

 

* RSA 공유키 충돌 오류 * 

  - 원격 호스트 식별 정보가 변경되어서 발생하는 오류

  - 해당 경고를 제거하려면 /root/.ssh/known_hosts에 올바른 Host Key 추가

    → [ssh-keygen -R] 명령어를 사용하여 known hosts 정보 갱신

 

  - known hosts 정보 갱신 후 scp 명령어 사용 가능

  * 개인키의 이름 : id_rsa

    공개키의 이름 : authorized_keys 

jwoh private key를 ec2-user의 /home/ec2-user/.ssh에 id_rsa 이름으로 올리기

 

2. 개인키의 권한 수정

  - 개인키는 600 권한

id_rsa의 권한을 600으로 설정

 

3. ssh 접속

ssh로 DB_A1 접속

4. 외부 통신 확인

  - DB_A1은 NAT 게이트웨이를 통해 외부와 연결

외부 통신 가능

 

5. MySQL 설치

root 권한 부여 후 mysql 리포지토리 설치
리포지토리 설치 확인
리포지토리 편집
mysql 5.7 버전 설치를 위해 gpgcheck=0 수정
mysql server 설치
mysql 시스템 시작 후 초기 패스워드 확인
초기 패스워드를 사용하여 mysql 접속
mysql 로그인

 

 


 

 

 3. Load Balancing

* 현재 WEB_A1에는 웹 시작 페이지 작동중

   WEB_C1 인스턴스 생성 후 두 인스턴스를 로드밸런싱 설정

 

1. 인스턴스 생성

  - PUB_C 서브넷에 WEB_C1 인스턴스 생성

  - curl http://169.254.169.254/latest/meta-data/local-ipv4 : 접속하는 인스턴스의 메타정보를 볼 수 있는 명령어(IP)

    위의 명령어를 /var/www/html/index.html에 입력하면 인스턴스의 IP만 출력된다

 

2. 공인 IP 해제

WEB_A1에 연결되어있던 공인 IP 연결 해제
연결 해제

 

3. 대상 그룹 생성

대상 그룹 생성
Instances 생성
대상그룹명, protocol&port, VPC, Protocol version 설정

 

  - Health checks : 로드밸런서가 정상적인 웹 서버로만 트래픽을 보내기 위해 서버의 정상상태를 확인하는 것

백엔드의 80번 포트를 점검, index.html 검사(위치가 default가 아니라면 변경 필수)

 

  - 로드밸런싱을 적용할 인스턴스 설정

WEB_A1, WEB_C1 체크
설정 확인 후 대상 그룹 생성
생성 완료

 

4. 로드 밸런서 생성

대상 그룹의 Load balancer의 None associated를 클릭하여 새로운 load balancer 생성
인터넷 연결을 위해 Internet-facing 선택
VPC선택, 매핑할 서브넷 선택
default 보안 그룹 선택

 

  - 리스너 : 프론트엔드 (외부에서 접속하는 사용자를 위함)

외부에서 80번 포트로 접속 시 대상 그룹 실행
요약 확인 후 로드 밸런서 생성

 

  - 대상 그룹이 모두 Healthy가 되어야 설정 적용 성공

 

 

5. 로드밸런싱 확인

로드 밸런서의 DNS 이름 확인

 

  - cmd 창에서 nslookup 확인

 

  - 새로고침으로 로드 밸런싱 설정 적용 확인

WEB_A1에서 제공하는 웹 페이지
WEB_C1에서 제공하는 웹 페이지

 

관련글 더보기