인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링과 같은 컴퓨팅 서비스를 의미합니다.
개발자가 만든 서비스를 외부에서 이용하려면 작동중인 서버가 필요합니다. 이용자가 언제 서비스를 이용할지 모르기 때문에 24시간 작동하는 서버가 필요합니다. 개개인이 24시간 작동하는 서버를 보유하기 힘든 점과 모니터링, 네트워크 관리와 같은 개발자의 일을 대신해 주는 서비스를 제공해주는 것이 클라우드 서비스입니다. 해당 서비스는 다음과 같은 몇 가지 형태가 있습니다.
1. IaaS (Infrastructure as a Service)
2. PaaS (Platform as a Service)
3. SaaS (Software as a Service)
AMS EC2 서비스를 이용하기 위해 인스턴스를 생성하여야합니다. 인스턴스는 EC2 서비스에 생성된 가상머신을 의미합니다.
1. AMI(Amazon Machine Image) 생성
AMI는 EC2 인스턴스를 시작하는데 필요한 정보를 이미지로 만들어 둔 것입니다. 인스턴스라는 가상머신에 필요한 것들을 설치할 수 있도록 하는 역할입니다.
다른 이미지도 있지만 AMI인 이유는 아마존에서 개발하고 있기 때문에 지원받기가 쉬우며, AWS의 서비스와의 상성이 좋기 때문입니다.
2. 인스턴스 유형 설정
사용할 t2.micro를 예로 들어 설명하면 t2는 AWS을 사용하는 요금 타입, micro는 사양을 의미합니다. 서비스의 규모와 목적에 따라 선택할 수 있습니다.
t2는 T 시리즈의 종류중 하나로 크레딧 개념이 있습니다. 크레딧은 CPU를 사용할 때 소모되며, 사용하지 않는 경우 크레딧이 축적됩니다. 모두 소모되는 경우 EC2를 사용하지 못하기 때문에 규모에 맞게 요금을 선택해야 합니다. 일반적으로 1인 개발의 경우 t2를 사용합니다.
3. 스토리지 설정
서버의 용량을 의미하며 8~30GB까지 프리티어로 가능합니다. 기본값은 8GB로 되어 있지만 할당된 용량을 벗어나면 비용이 발생하니 30GB로 설정하는 것이 좋습니다.
4. 키 페어 설정
키 페어 이름을 설정하고 pem 키를 생성합니다. 해당 키는 마스터키의 개념이기 때문에 유출이 되면 안됩니다. 기존에 있는 pem키가 있다면 해당키로 선택합니다.
인스턴스가 생성되면 IP와 도메인이 할당 됩니다. 인스턴스 생성시에 항상 새 IP를 할당하게 됩니다. 이 때 인스턴스를 중지하고 다시 시작할 때 역시 새 IP가 할당되기 됩니다. 비용을 절약하기 위해 인스턴스를 중지하고 다시 시작하는 경우 새로운 IP가 할당되어 IP주소를 매번 확인해야 합니다.이러한 번거로움을 덜기 위해 AWS의 고정 IP를 탄력적 IP EIP(Elastic IP)라고 합니다.
생성한 EIP는 바로 EC2에 연결하지 않으면 비용이 발생하므로 주의해야하며, 사용할 인스턴스가 없는 경우 EIP를 삭제해야 합니다.
AWS와 같은 외부 서버로 ssh 접속을 하기 위해 ssh 실행시 pem키 파일을 자동으로 읽어 접속을 해야합니다. pem파일을 ssh 디렉터리로 옮겨 접속을 하면 키 위치를 지정하지 않고 접속이 가능합니다.
1. ssh접속 및 설정
ssh -i pem키의 위치 EIP의 주소
cp pem키의 위치 ~/.ssh/
2. 권한 설정
pem키는 아주 중요하기 때문에 소유자에게만 읽기쓰기 권한을 주도록 설정해줍니다.
chmod 600 ~/.ssh/pem키의 이름
pem키가 위치한 .ssh 디렉터리에 config 파일을 만들어 앞으로 지정된 EC2로 접속할 수 있게 설정해줍니다.
HOST '서비스 이름'
HostName 'EIP주소'
User ec2-user
IdentityFile ~/.ssh/'pem키 이름'
생성 후 실행 권한이 필요하므로 권한 설정해줍니다.
chmod 700 ~/.ssh/config
3. EC2 설정
sudo yum install java-11-amazon-corretto
초기에 설정된 값은 미국시간이기 때문에 한국 시간으로 변경해야 합니다. 초기 설정을 제거하고 다시 설정해주는 명령어를 실행해야합니다.
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
초기에 ec2-user@ip~~로 설정되어 있습니다. ip로는 어떤 서비스인지 구분하지 못하여 어느 서비스인지 확인하기 위해 호스트 네임을 알맞게 설정해 주어야 합니다.
hostnamectl set-hostname `이름`
해당 작업을 마친 뒤 reboot 해주어 /etc/hosts에 변경한 내용을 등록하면 됩니다.
좋은 글 감사합니다. 자주 방문할게요 :)