카테고리 없음

클라우드의 활용(AWS)

황성안 2021. 7. 22. 13:15
728x90
반응형

개요

  • 서버의 해킹 위협으로부터 보호, 백업, 장애점 방지, 고가용성을 높이기 위해 이중화를 사용합니다.
    • active-active로 할 예정
    • 서버가 하나 죽더라도 다른 서버로 서비스 가능
    • 무중단 배포 같은 것도 가능함
  • active-standby
    • 장애가 발생하면 다른 대기 중은 서버로 트래픽이 fail-over 되고 장애처리 되면 다시 원래 서버로 복구
  • load-balancer는 reverse-proxy로 구성
  • Bastion host
    • private network 작업을 위해 거쳐가는 서버
    • Jump Host
    • 노출되지 않은 서버들을 관리하는 용도로 사용이 됨
  • 서버는 보안 패치 등이 중요
    • 그럴 때 NAT instance를 사용할 수 있음
    • 프록시 서버 역할을 해주어 나가는 인터넷을 중계
    • 안전하게 인터넷을 사용할 수 있게 함
    • NAT gateway도 있음
      • t2.micro 대비 4배나 비쌈
  • Nat Instance의 다운 여부는 서비스에 영향을 주지 않음
  • Bastion host, NAT Instance는 관리 목적이라 편의상 이중화를 따로 구성하지 않을 것
  • Security Diagram
    • 인터넷 라우팅이 열리면, VPC gateway에 등록을 해주게 됨
    • 관리 목적의 트래픽, 인터넷의 트래픽이 접근 가능하도록 가상의 방화벽 설정이 필요함
      • 안전하게 센터를 운영할 수 있음

🕰️과정

1) 서울 리전에 VPC 생성 (ssafy-vpc)

  • latency가 가장 좋음
  • CIDR 블록 설정

2) 서브넷 생성 (ap-northeast-2a, 2b)

  • VPC라는 넓은 네트워크 영역에 서브네팅을 통해 public 용 서브넷을 2a에 생성
  • 물리적으로 떨어져 있어 이중화해서 만들면, 떨어져도 다른 거로 가용 가능
    • 2a, 2b로 나누어서 만드는 이유!
    • ip에도 의미를 prefix로 부여하는 게 좋음!
  • private은 100번대, a는 10, private-b는 200번 대, b는 20번 대로 할당
  • public instance에 IP가 자동할당되도록 설정

3) 보안 그룹 생성

  • 리소스 별로 보안 그룹을 생성 (보안을 좀 더 철저히 하기 위함!)
  • 용도가 각각 정해져 있어서 식별할 수 있는 이름을 설정
  • 세팅을 할 수 있도록 필요한 그룹을 미리 생성
  • 생성할 때 주의점! - 사용할 VPC를 정확하게 골라주어야 함
  • 리소스를 만들고 Name 태그를 통해 검색을 용이하게 하자!

4) EC2 인스턴스 생성

  • 시스템에 필요한 인스턴스를 생성
  1. Bastion 인스턴스 생성
    1. 생성, 키 페어(관리용하고 실제 서비스 용하고 분리해서 사용하는 것이 좋음)
    2. 개인 키 파일은 관리를 잘 해주자!
  2. 웹 서버 인스턴스 생성
    1. 항상 현재 인스턴스의 서브넷을 잘 골라주어야 함
  3. Nat 인스턴스를 생성
    1. nat를 검색해서 만들자!
    2. Nat 인스턴스는 설정이 하나 더 필요함
      1. 소스/대상 확인의 중지 옵션을 선택해 줍니다

5) IGW 생성(인터넷 게이트웨이)

  • VPC와 연결할 목적으로 생성
  • 외부에서 접근하기 위해 VPC 상에 필수로 존재해야 하기 때문
  • 집에 공유기 설치하는 것과 비슷한 개념

6) Routing Table 생성

  • public subnet 라우팅 테이블, private subnet 라우팅 테이블을 생성해서 사용하자
  • 네트워크 엔지니어가 할 일을 쉽게 할 수 있음
  • 2개의 서브넷에 라우팅 테이블을 잡아줌
  • private은 바로 나갈 수 없게, 라우팅 테이블에는 Nat instance를 경유하게 하자

7) 보안 그룹 설정

  • 방화벽 그룹을 설정, 허용할 인바운드 그룹에 의해 보안 그룹이나 CIDR 블록을 설정
  • 인바운드 규칙 편집 ⇒ 웹 서버 운영 목적 : 80은 아무나 접근 가능하게 해주자
    • bastion_server를 통해서 들어올 수 있게끔 해주고, application-loadbalancer를 통해서 들어올 수도 있게 해주어야 함
    • Nat 같은 경우에는 웹 서버들만 이용할 수 있어야 함

8) 웹 서버 설치

chmod 400 ssafy-bastion.pem # 인증서 권한을 낮춤
  • Nginx 웹 서버 설치
  • bastion 서버는 공인IP를 할당 받음
  • bastion에 접근 후, 웹 서버로 넘어가야 하는 데, 원래는 bastion 안에 key가 존재
    • 필요할 때 만들고 다시 삭제하는 게 좋다고 하심
  • 똑같이 인증서 권한을 낮추어 주고 이 개인키를 통해 웹 서버로 넘어가야 함
    • 왜? 바로 접속이 불가능하기 때문에!
  • ip만 봐도 private, public, A ZONE, B ZONE에 있는지 유추 가능하게 해야 함 !!!
    • 인터넷이 되는 이유는 라우팅 테이블이 NAT로 돌려주고 NAT를 통해 인터넷이 됨
  • 웹 서버를 식별할 수 있는 HTML을 수정해야 확인 가능
sudo apt-get install nginx
sudo vi /var/www/html/index.nginx-debian.html
  • localhost로 curl을 날려 잘 서비스가 되는지 확인해야 함

9) LoadBalancer

  • 우리 웹 서버는 바로 들어올 수 없고, 로드밸런서를 경유해서만 접근 할 수 있음
  • 장애가 나지 않는 쪽으로 트래픽을 돌리는 목적
  • public zone에 2개의 proxy가 동작 중에 서비스가 세팅되는 중
  • privisioning ⇒ active 상태에 시간이 걸림
    • 상태가 준비되면, loadbalancer의 DNS를 통해 접근되는 지를 확인 가능

10) 정리

  • 과금이 되는 ALB 등 자원 정리가 필요함
  • 중지만 한다면 ⇒ EBS를 사용하는 과금이 되기는 함
    • 인스턴스를 종료하는 것도 과금을 줄이는 데 좋은 방법
728x90
반응형