EBS 활용 EC2 기본 웹서버 설정

xlwdn·2023년 1월 17일
0

기본적인 온프레미스 환경에서의 서버 구성을 클라우드 환경에서 제공하는 EC2 서비스를 활용합니다.

우측 상단 인스턴스 시작 버튼을 통해 시작합니다.

Quick Start를 통해 aws에서 기본적으로 제공하는 운영체제 이미지로 원하는 운영체제를 선택합니다.

(저는 Amazon Linux(CentOs계열)을 선택했습니다.)

본인이 원하는 수요에 따라, 원하는 크기의 인스턴스를 선택합니다.

키페어는 키페어 없이 진행으로 선택합니다. 이후, 보안그룹 또한 보안 그룹 생성을 통해 새롭게 생성합니다.

스토리지(EBS) 구성은 30GB 볼륨을 부착합니다. 이로써, EBS(Elastic Block Store) 설정이 완료되었습니다.

  • 스팟 인스턴스 요청: 스팟 인스턴스 타입을 요청합니다. 지속적인 서비스 제공을 위한다면, 해당 옵션은 무시합니다.
  • 도메인 조인 디렉터리 - AD(Active Directory): Active Directory 설정입니다. 기존에 사용하던 권한 인증 시스템과 통합시 사용합니다.
  • IAM 인스턴스 프로파일: 생성하는 EC2에게 부여할 역할을 선택합니다. (ex. S3 FullAccess IAM 연결 시, EC2에서 S3에 대한 작업을 수행할 수 있게 됩니다.) 이번 설정에서는 무시했습니다.
  • 인스턴스 자동 복구: EC2의 상태를 지속적으로 확인하는 검사 실패시, 자동으로 복구를 진행합니다.
  • 종료 동작: OS에서 종료 시 수행하는 작업입니다. 인스턴스 중지/종료 중 하나이며, 종료 옵션 선택 시 OS에서 종료 시 인스턴스가 삭제됩니다.
  • 최대 절전 중지 방식: 인스턴스 중지 시, RAM에 있던 모든 내용을 볼륨에 저장합니다.
  • 종료 방지: 종료 버튼이 비활성화됩니다. 이후 종료를 원할 시, 옵션을 다시 해제하여야합니다.
  • 중지 방지: 위와 동일합니다.

  • 세부 CloudWatch 모니터링: CloudWatch 서비스를 이용합니다.
  • 크레딧 사양: T타입의 인스턴스에서만 사용할 수 있으며, 무제한 옵션 선택 시 언제든지 애플리케이션을 기준 이상으로 버스트할 수 있습니다.
  • 배치 그룹: 인스턴스를 시작할 클러스터 그룹을 선택합니다. 일부 타입 인스턴스에서만 작동합니다.
  • 용량 예약: T, M, G와 같은 타입의 인스턴스가 아닌 경우, 특정 가용영역에 본인이 원하는 인스턴스가 후에 고갈될 수 있다. 때문에, 이를 예약하는 것. 예약 시 사용한 만큼이 아닌, 예약한 개수에 따라 비용이 부과된다.
  • 테넌시: aws 데이터센터에 존재하는 하드웨어 자원을 다른 사용자와 나누어 사용하는 옵션이다. 별 차이는 없으므로, 공유 모드로 설정하여도 무관하다.
  • RAM 디스크 ID: 선택한 커널이 동작하기 위해 필요한 드라이버가 들어가있는 RAM 디스크 값을 지정한다. aws에서 제공하는 이미지를 사용할 경우, 관련없다.
  • 커널 ID: 인스턴스와 함께 사용할 수 있는 커널 값이다.

  • 라이선스 구성: 라이선스 구성이란 라이선스 규정 준수를 적용하기 위해 시작 시 인스턴스와 연결되는 AWS License Manager 규칙 세트입니다.
  • 메타데이터 엑세스 가능: 해당 EC2 인스턴스에 대한 메타 데이터를 확인할 수 있는 엔드포인트를 활성화합니다.
  • 메타데이터 버전: 메타데이터 버전 선택
  • 메타데이터 응답 홉 제한: 네트워크 RIP 홉 개수입니다. 기본 값은 1이며, 최대 64까지 지정할 수 있습니다.
  • 메타데이터에서 태그 허용: 말 그대로
  • 사용자 데이터: 인스턴스 시작 시 실행되는 스크립트를 입력할 수 있습니다. (ex. export SPRING_CONFIG_IMPORT=http://config-server:8888/)

위와 같이 인스턴스를 생성합니다.

EC2 ssh 설정


인스턴스에 연결합니다.

# MacOs
➜  ~ git:(master)cat ~/.ssh/id_rsa.pub
ssh-rsa (~ 인증 키 값 ~)

이후, 로컬에서 id_rsa.pub 값을 확인하고 해당 값을 복사한 뒤(만약, id_rsa.pub 값이 없다면, ssh-keygen 명령어를 통해 생성한 뒤 진행합니다.), EC2 인스턴스의 ~/.ssh/authorized_keys에 append합니다.

# EC2
$ vi ~/.ssh/authorized_keys

(복사한 키 값)
:wq!
#Macos
➜  keyPair git:(main)ssh ec2-user@(EC2 public IP Address)
Last login: Mon Jan  9 13:11:10 2023 from 211.36.140.109

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-172-31-41-54 ~]$

로컬에서 접속할 수 있게 됩니다.

EBS 볼륨 Swap Memory


[ec2-user@(~ip 주소~) ~]$ lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdb    202:16   0  30G  0 disk [SWAP]

[ec2-user@(~ip 주소~) ~]$ sudo mkswap /dev/xvdb
[ec2-user@(~ip 주소~) ~]$ sudo swapon /dev/xvdb
[ec2-user@(~ip 주소~) ~]$ sudo vi /etc/fstab
(~~)
/dev/xvdb none swap sw 0 0 # 추가

[ec2-user@(~ip 주소~) ~]$ sudo swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/xvdb partition  30G 3.3G   -2

보안 그룹 설정


EC2 Console로 돌아와서, 좌측 라인에서 보안그룹 섹션을 선택합니다.

우측 상단 “작업” 누르고, 인바운드 규칙 수정을 선택합니다.

  • 인바운드: 인스턴스로 들어오는 요청에 대한 방화벽 설정
  • 아웃바운드: 인스턴스에서 나가는 요청 방화벽 설정(디폴트는 모두 Open)

저는 EC2에서 zipkin, Kafdrop, SpringConfigServer, Grafana, Spring Eureka를 띄어놓았으므로, 해당 서비스들의 상태를 파악하기 위해 해당 포트들을 열어놓았습니다.

0개의 댓글