AWS- 복습

박형준·2024년 6월 3일
  1. VPC 구성 (사설 네트워트 구성)
  2. 라우팅 테이블 구성 (개념 정립, 내부 네트워크 연결)
  3. Subnet 구성 (보안) & 보안그룹 생성
  4. 인터넷게이트웨이 & NAT Gateway 구성 (외부로 접속하는 네트워크 연결)
  • public 네트워크: 홈페이지 접속 (nginx)

  • private 네트워크: 취약한 정보 저장 (mariaDB, mysql)

  1. Route53 구성(도메인 등록/구성 방법), ELB 구성 (CLB, ALB)

시작하기전 명심해야할 사항 : 몇 가지 Tip

  • 마우스, 키보드 보다는 종이와 펜 부터

  • EC2 관점에서 Traffic Flow 고려

  • 익숙해 지면 유형 별 Cloudformation Template 작성

  • "VPC 내부" / "VPC 외부" 서비스 구분

  • Service Limits / 숨어있는(?) 제약사항 찾기


아키텍처 편집 프로그램 : www.draw.io
가비아 도메인 확인


aws route 53 작업을 이용해서 가비아에서 네임서버 등록

aws route 53 으로 돌아와서 호스팅 영역 생성

  • 퍼블릭 ip를 통해 외부에서 접속 가능

Http(80) 대신에 Https(443) 사용 ( 보안 때문에, 인증서 등록 필요 )

  • aws certificate manager(ACM) 이동 , 인증서 요청

  • 도메인 이름 추가 ( *.gabia.shop )


리소스 대장문서

  1. VPC 생성
    vec-prd-vpc : 10.250.0.0/16 (65,563)

  2. Subnet 생성( 보안 때문에 서브넷으로 나눔, 수정 불가능 하기에 /16 권장 )

  • 1) AZ : 2A

    • VEC-PRD-VPC-BASTION-PUB-2A, (10.250.4.0/24) - 251, VEC-PRD-VPC-Bastion-PUB-SG-2A (80,443)

      • ec2 name: VEC-PRD-VPC-Bastion-PUB-2A : 10.250.4.107
    • VEC-PRD-VPC-NGINX-PUB-2A, (10.250.1.0/24) - 251, VEC-PRD-VPC-NGINX-PUB-SG-2A (80,443)

      • ec2 name: VEC-PRD-VPC-NGINX-PUB-2A : 10.250.1.212
    • VEC-PRD-VPC-TOMCAT-PRI-2A, (10.250.2.0/24) - 251, VEC-PRD-VPC-TOMCAT-PRI-SG-2A

      • ec2 name: VEC-PRD-VPC-TOMCAT-PRI-2A : 10.250.2.115
    • VEC-PRD-VPC-DB-PRI-2A, (10.250.3.0/24) - 251, VEC-PRD-VPC-DB-PRI-SG-2A

  • 2) AZ : 2C

    • VEC-PRD-VPC-NGINX-PUB-2C , (10.250.11.0/24) - 251, VEC-PRD-VPC-NGINX-PUB-SG-2C
      • ec2 name: VEC-PRD-VPC-NGINX-PUB-2C : 10.250.11.13
    • VEC-PRD-VPC-TOMCAT-PRI-2C, (10.250.12.0/24) - 251, VEC-PRD-VPC-TOMCAT-PRI-SG-2C
      • ec2 name: VEC-PRD-VPC-TOMCAT-PRI-2C : 10.250.12.254
    • VEC-PRD-VPC-DB-PRI-2C, (10.250.13.0/24) - 251, VEC-PRD-VPC-DB-PRI-SG-2C
  • 서브넷을 나누는 기준: 비지니스 로직 ( 업무에 따라서 )

    • 외부 사용자 접속 -> 정적 홈페이지 (web/nginx) -> 동적 홈페이지(WAS/tomcat) -> DB ( MySQL, MariaDB )

정적 홈페이지 (Static Website):

  • 정적 홈페이지는 미리 만들어진 HTML, CSS, JavaScript 및 이미지 파일로 구성됩니다. 이러한 파일들은 웹 서버에 의해 그대로 서빙됩니다. 대표적인 웹 서버로는 Nginx, Apache 등이 있습니다.
  • 사용자가 요청할 때마다 항상 동일한 콘텐츠가 제공됩니다. 따라서 동적 데이터베이스 쿼리나 사용자의 입력에 따라 페이지가 변하지 않습니다.
  • 정적 홈페이지는 변경이 적고, 콘텐츠가 고정되어 있을 때 적합합니다.

동적 홈페이지 (Dynamic Website):

  • 동적 홈페이지는 서버 측에서 요청에 따라 콘텐츠가 생성됩니다. 이는 주로 웹 애플리케이션 서버 (WAS)를 통해 이루어집니다. 대표적인 웹 애플리케이션 서버로는 Apache Tomcat, JBoss, WebSphere 등이 있습니다.
  • 사용자의 요청이 들어올 때마다 서버는 데이터베이스 쿼리 등을 통해 동적으로 페이지를 생성하고 콘텐츠를 반환합니다. 이는 사용자에 따라 다른 콘텐츠를 제공하거나 상호작용이 필요한 경우에 유용합니다.
  • 동적 홈페이지는 사용자에 따라 콘텐츠가 변경되거나, 사용자 입력에 따라 반응해야 할 때 적합합니다.
    • 요약하자면, 정적 홈페이지는 미리 만들어진 콘텐츠를 제공하고, 동적 홈페이지는 요청에 따라 콘텐츠를 생성하여 제공하는 것이 주요 차이입니다.
  1. Routeing 테이블 생성
  • VEC-PRD-RT-PUB-2A, VEC-PRD-RT-PUB
    • VEC-PRD-RT-PUB-2C
  • VEC-PRD-RT-PRI-2A, VEC-PRD-RT-PRI
    • VEC-PRD-RT-PRI-2C
  1. Internet Gateway 생성 (Pub Sunbet 에 있는 인스턴스가 인터넷을 사용할 수 있도록 해주기 위함)
    VEC-PRD-IGW

  2. NAT GATEWAY 생성 (Private Subnet에 있는 인스턴스가 인터넷을 사용할 수 있도록 해주기 위함)
    VEC-PRD-NGW-2A

  1. KeyPair 이름 : soldesk.pem [각자 이름으로 해도됨]

  2. AWS Linux2 ec2에 접속시 연결사용자계정 : ec2-user / 패스워드는 없다. soldesk.pem 를 이용해서 연결

  3. 10.250.1.13(Nginx) <========> 10.250.2.13 (Tomcat)

  4. 10.240.1.13 (VEC-DEV-VPC-Tomcat-2a) <========> 10.250.2.13 (VEC-PRD-VPC-Tomcat-2a) 성공

  5. 10.240.2.13 (VEC-DEV-VPC-Webserver-2a) <========> 10.250.2.13 (VEC-PRD-VPC-Tomcat-2a) 실패 왜?

  6. ELB Security Name : VEC-NGINX-CLB-SG

  7. Target Group : VEC-NGINX-CLB-TG

  8. ELB Name : VEC-PRD-NGINX-ALB


VPC로 들어가서 VPC 생성

서브넷 생성 ( 생성한 VPC 선택 )

  • 가용영역 2A와 2C에 NGINX-PUB 서브넷 생성 ( 정적 홈페이지 )

  • 가용영역 2A와 2C에 동적 홈체이지 생성 (Tomcat-PRI)

보안 그룹 생성

  • NGINX-PUB와 Tomcat-PRI에 대한 보안 그룹 생성

보안 그룹 규칙 추가 (인바운드)

  • public: ssh, http, https

  • private: ssh ( http, https는 x )


라우팅 테이블 생성

  • VEC-PRD-RT-PUB, VEC-PRD-RT-PRI 생성

  • 서브넷 연결 ( nginx와 tomcat끼리 연결 )

  • bastion subnet: 보안을 위해서 노출돼도 상관없는 subnet

  • bastion subnet -> nginx ( PUB ), -> tomcat ( PRI, 3 tier로 동작 )

인터넷 게이트웨이 생성 (Pub Subnet 에 있는 인스턴스가 인터넷을 사용할 수 있도록 해주기 위함)

  • 인터넷 게이트웨이 생성

  • VPC에 연결

  • 라우팅 테이블에서 인터넷 게이트웨이 연결

NAT 게이트웨이 생성 ( PRI Subnet에 있는 인스턴스가 인터넷 사용 가능하게 )

  • 서브넷 PUB-2A에 생성
  • 게이트웨이 생성시 탄력적 IP를 생성하고 할당하면 Free, 할당하지 않으면 요금 부과

키페어 생성


인스턴스 생성

  • 지금까지 구성한 네트워크 리소스 선택 ( nginx, tomcat ( PUB, PRI ) )

  • EC2 생성시 SSH 접속 및 root 암호 설정 ( 1234 )

  • 접속해서 index.html에 my homepage success! 라고 작성

  • private ip로 생성한 인스턴스는 public ip로 생성한 인스턴스를 통해 접속하여 설정하는 것이 보안에 좋음


ssh 접속해서 nginx 접속

  • vi로 접속 /etc/yum.repos.d/nginx.repo ( 저장소 등록 )

  • 시스템 시작 후 curl public ip

  • 보안그룹 인바운드 그룹에 ssh권한이 있을 때 접속 ( /home 디렉터리에 key-pair 이동시키기, xftp를 이용해서 )

    • chmod 400 soldesk.pem.pem로 권한 변환 후 접속하기

    • ssh -i soldesk.pem.pem ec2-user@(private ip)


버킷 생성 후 이미지 업로드 ( 퍼블릭 액세스 차단 해제하는 것이 편하다 )


nginx-PUB-2A, nginx-PUB-2C 로드 밸런서
-> 로드밸런서 생성시 대상 그룹을 생성하고, ELB 지정

  • ELB 생성 ( 이름: VEC-PRD-NGINX-ALB, VPC 지정 )

  • 생성 후 대상 그룹 포함


로드 밸런서 보안그룹 생성

  • vpc 지정 및 인바운드 규칙 설정

로드 밸런서 생성

  • ALB 생성 ( 어플리케이션 )

  • ALB의 체계는 인터넷 경계, DB는 내부

  • 보안 그룹과 리스너 및 라우팅( http, https 추가 )

로드 밸런서 생성 확인 후에 상태 healthy 확인

  • 로드밸런서 DNS 이름 복사 후에 url 검색하면 A, C가 번갈아 가며 동작

로드밸런서 DNS 이름을 route 53에서 레코드 생성으로 gabia.shop과 연결

  • 별칭 선택 후 ALB 지정

  • 지정 후에 접속해보기

  • 리스너 추가를 통해 https로 접속

인스턴스에서 이미지 생성해서 인스턴스 시작

  • 인스턴스 세부 정보에서 이미지 생성 ( 재부팅 안 함 체크 )

  • 이미지/AMI 에서 이미지로 인스턴스 시작해서 설정 후 인스턴스 생성

0개의 댓글