다음 아키텍처는 bastion host로도 활용가능 할 것이다.
먼저 VPC를 생성해주자.
아래 사이트에서 Cidr의 사이즈 및 첫 ip와 마지막 ip 정보를 쉽게 볼 수 있다. 본인은 계산기가 귀찮을 때 애용 중이다.
Subnet을 생성해주자.
🤗Tip) 왼쪽 바에 위치한 VPC 필터링 후 작업 시 보다 편리합니다.
보통 퍼블릭 서브넷은 로드밸런서들이나 앞단 인프라와 연결되기 때문에 Subnet Size는 작을수록 좋다.
생성 된 서브넷를 살펴보자.
사용 가능한 IPv4 주소가 256개, 4096가 아니라 각각 251개, 4091개다. (5개씩 차감되어 있음)
이 5개는 다음과 같다.
라우팅 테이블을 설정해주자.
라우팅 테이블로 들어가보면 금방 생성된 VPC에 할당된 기본 라우팅 테이블이 1개 있다. 기본 라우팅 테이블은 기본적으로 명시적 연결이 되어있지 않다.
public / private 두 분류로 라우팅테이블을 추가로 만들어주자.
그리고 [ 서브넷 연결 ] 란 에서 서브넷을 퍼블릭/프라이빗에 맞게 라우팅테이블에 연결해준다.
추가로 하나 더 해줘야할 작업이 있는데
Public 라우팅테이블의 경우 인터넷 게이트웨이를 넣어야한다.
인터넷 게이트웨이(igw)를 만들어주자.
이후 만들어놓은 VPC에 부착까지 해준다.
다시 public 라우팅 테이블로 돌아간다.
[라우팅] 란에 들어가 라우팅 편집을 아래와 같이 해준다. (igw로 빠져나갈 수 있도록)
다음 EC2를 프리티어로 만들어보자.
키페어 하나만들어준다. (RSA/ pem형식으로 만들어보겠다.)
네트워크는 다음과 같이 만들어놓은 VPC 위주로 설정해준다.
서브넷은 Public으로 해준다
보안그룹은 ssh-22, http는 80포트로 잡아준다.
그리고 사용자 데이터에 내용을 채워준다.
우리는 리눅스를 사용하기로 했으니 쉘도 그에맞게 써준다
아래 내용은 아파치를 설치하고 index.html에 Hello world 내용을 echo명령어로 넣어서 접속이 성공하면 웹상에 보이게 해준다.
이제 그대로 생성하면 된다.
이후 http://Public IP로 접속시 아래와 같이 뜬다.
생성된 EC2의 퍼블릭 Ipv4 주소는 Ec2를 중지하고 다시 시작할 때 마다 변한다. 고정ip가 아니란 의미다. 이를 위해 Elastic Ip를 붙이거나 Alb로 바뀌는 ip를 잡아주거나,고정 ip가 필요하면 NLB를 쓰면 된다. 이번 실습에서는 Alb로 바로 붙여본다.
😵Ssh 접속 시 주의점
EC2에 ssh접속할 때 주의할 점이 있다. 흔히 Pem키 권한이 없다고 chmod 명령어로 pem키 권한을 600이나 400(read only)로 바꾸곤 하는데, 바꿔도 안먹힐 때가 있다.
이건 해당 경로에 놓여있는 폴더들도 권한을 바꿔줘야한다. 그래서 처음 실습이라면 좌절하지말고 pem키 경로를 최대한 홈 디렉토리에 가깝게 복사하거나 옮겨놓고 실습하는 것을 추천한다.
리눅스의 경우 요령껏 아래 명령어를 활용하면 편리할 것이다.
ALB를 만들기 전에 먼저 대상그룹(Target Group)부터 만든다.
타겟 유형은 인스턴스로 잡아준다.
헬스체크 Setting은 다음과 같이.
기존에 생성한 EC2를 타겟으로 등록해준다.
이제 ALB를 만들어보자.
내부가 아니라 인터넷 경계에 위치할 ALB이므로 Internet-facing으로 잡아준다.
만들어 놓은 VPC로 잡아주고 서브넷은 퍼블릭으로 잡아준다.
프라이빗으로 잡아두면 빨간글씨같은 경고가 뜨니 본인이 생각해도 뭔가 이상할거다.
그리고 ALB용 보안그룹하나 만들어주자
만든 보안그룹으로 잡아주고
리스너도 아까 만든 타겟그룹으로 잡아준다.
그리고 ALB생성하면 된다.
다시 타겟그룹에 들어가보면 healthy가 뜬다. 이 초록색은 볼 때 마다 은근 기분좋다.
ALB의 DNS NAME으로 https가 아닌 http 접속시도