기 록
현재 네트워크에 대한 이해도가 필요.
목적은 private ec2에 대한 접근과 필요한 상황의 소프트웨어 업데이트, 트래픽 분산.
VPC 설정
2개의 AZ에 각각 public, private subnet을 만들고
public subnet은 IGW를 바로 타고 나감
2개의 private subnet은 각각의 라우팅테이블을 설정하여 각각의 NAT GW를 타고 나감 (AZ당 NET GW 1개)
/*
AZ를 2a, 2c 로 하는 이유는
2b, 2d에서 ec2 Instance type 't2.micro'를 지원하지 않기 때문이다.
지원가능한 인스턴스타입은 직접 AWS에서 검색하면 나온다.
*/
이제 환경을 설정했으니 무언가 서비스를 할 객체들을 설정해주어야한다.
Bastion 서버를 하나 만들고 AMI 생성
ec2를 먼저 생성
AMI - Amazon Linux 2
키페어는 자신이 사용중인거로 or 지금 생성
public 2a 에 설정, 공인 ip - Enable, Security Groups - default
가장 아래에 시작시 구동되는 명령어
단순 http 실행
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd.service
systemctl enable httpd.service
echo "Hello World" > /var/www/html/index.html
ec2 인스턴스 생성!
이제 AMI를 생성할건데 그냥 귀찮아서 방금만든거로 한다. 인스턴스에서 오른쪽 클릭으로 AMI 생성
AMI 생성을 기다려야 다음 인스턴스를 생성 가능
private에 자신이 생성한 AMI를 기반으로 ec2를 생성
이제 2개의 private EC2 생성
방금 등록해준 AMI로 네트워크 구성만 각각 챙겨서 넣어주면 된다.(혹시 몰라 키페어도 함)
3개인스턴스생성
OS 업데이트 라던지 yum update, apt update 등등 인터넷상의 서비스를 업데이트/다운로드 해야 할 모델일경우 NAT GW를 설정하여 인터넷에 접속이 가능하도록 설정. (인터넷 되니까 다 붙여버려~ 하면 NAT GW 요금이 나가기 때문에 웬만한건 다운받고 AMI로 등록해둡시다.) 단, 내부망 NAT GW가 아닐경우 EIP를 가져와서 붙여주어야 한다.(private 공인IP 대용)
ALB를 생성해 private에 연결
ELB 중에서 ALB를 생성
하고 ALB 타겟 설정
create target을 하고 private instance 2개를 타켓으로 설정하거나, 기존에 생성을 했으면 private인지 확인
다시 로드밸런서로 돌아와서
생성!
후에 타겟그룹에서 건강한지 체크
Auto Scaling Group 생성 하고 기존 ALB에 연동
auto scaling 먼저 만들어도 상관없을듯.
auto scaling에 필요한 Launch templete을 먼저 생성
template이기 때문에 트래픽을 받아줄 인스턴스를 생성한다고 생각하면된다.
* 여기서 한글 번역쓰면 튕김;;
요종도?
Auto Scaling Group으로 가서
private subnet 2개 잡아주고
방금 로드밸런서 만들었으면 연결 Attach to an existing load balancer
최소 갯수와 최대 갯수는 알아서지정 (최소 갯수 즉시 생성)
3개를 하니까 만들어졌다. (2a 1개, 2c 2개)
테스트
- bastion 서버에 접속해 private EC2에 ping/ssh접속을 한다.
- private EC2에 접속하고 ping 8.8.8.8이나 패키지 설치툴 업데이트를 진행.
- Auto Scaling으로 생성된 EC2에도 앞선 테스트를 해준다.
혹시 뭐가 안된다 하면 인바운드 규칙 설정
기존 instance 성공
Auto Scaling으로 생성된 instance 성공
index.html은 좀 gpt에게 수정을 부탁했다
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Private Instance 소개</title>
</head>
<body>
<header>
<h1>Private Instance 소개 페이지</h1>
</header>
<section>
<h2>환영합니다!</h2>
<p>이 페이지는 Private Instance에 관한 정보를 제공합니다.</p>
</section>
<section>
<h2>Private Instance란?</h2>
<p>Private Instance는 개인이나 특정 그룹을 위한 독립적인 인스턴스로, 보안과 개인 정보 보호에 중점을 둡니다.</p>
<p>Private Instance를 사용하면 더 안전하게 데이터를 관리하고 협업할 수 있습니다.</p>
</section>
<section>
<h2>주요 특징</h2>
<ul>
<li>보안 강화</li>
<li>개인 정보 보호</li>
<li>사용자 지정 가능</li>
</ul>
</section>
<footer>
<p>© 2024 Private Instance 소개 페이지</p>
</footer>
</body>
</html>
오 편해
IP
bastion - 10.0.14.65
private - 10.0.137.148
private - 10.0.153.14
private auto - 10.0.136.60
private auto - 10.0.158.25
private auto - 10.0.144.138
'Amazon Web Services > Architecture' 카테고리의 다른 글
졸.업.작.품. (0) | 2024.10.10 |
---|---|
얼굴 포켓몬 (0) | 2024.05.13 |
2주면 완성하는 웹 크롤링 아키텍처 (0) | 2024.03.28 |
Kurby Project (0) | 2024.02.13 |
Amazon S3에서 VPC Endpoint를 통해 Private EC2배포 아키텍처 (0) | 2024.02.05 |