[2] AWS 인프라 구축 (apache2, ALB, Private subnet)
A W S
[ Amazone Web Service ]
2022.08.17
AWS의 서버를 구축하기 위한 두번째 게시글이다.
1편을 보고싶다면 클릭!
이번 편에서는 지난번에 이어서
아파치 서버 설치, 어플리케이션 로드 벨런싱, 프라이빗 서브넷 생성과 ALB, 그리고 프라이빗에서 DB구축과 php환경을 만들었다.
아키텍처 구상도
각각 접속한 리눅스 서버에 아파치 서버를 설치해준다.
sudo apt update
sudo apt install apache2
그 다음 /var/www/html 경로로 이동하여 설치한 아파치 서버의 첫 화면인 index.html 파일을 수정해준다.
일부를 수정하는 것보다 삭제후 동일한 이름으로 다시 생성하면 편하다.
이렇게 해주는 이유는 나중에 대상그룹을 이어서 로드밸런싱을 해주는데 각 두개의 서버가 서로 바뀌어가며 접속되는지 확인하기 위해서 이다.
cd /var/www/html
ls
sudo rm -rf index.html
sudo vim index.html
vim index.html로 새로 생성한 index 파일의 내용을 각각 Web Server 01, Web Server02로 수정한다.
<h1>Web Server 01</h1>
<h1>Web Server 02</h1>
각 대역의 IP로 접속을 하면 위에서 수정한 Web Server 01, 02가 나오는것을 확인 할 수 있다.
NAT 게이트웨이를 생성한다. VPC, subnet을 지정하고 프라이빗 IP를 CIDR 10.0.0.0/24로 지정
그리고 탄력적 IP설정을 활성화 한다.
CIDR에 대해 잘 모르겠다면?
위 주소에서 VPC생성 밑에 CIDR에 대해 설명해 놓았다.
NAT 게이트웨이를 생성하는 이유는 뒤이어 생성할 Private_subnet을 연결하기 위함인데 프라이빗 영역은 퍼블릭영역처럼 외부의 네트워크와 직접적으로 연결되어서는 안되기에 프라이빗은 NAT 게이트웨이를 사용하여 퍼블릭영역처럼 외부 인터넷망을 이용할 수 있도록 하는 것이다.
NAT 게이트웨이의 이름은 Cloud_Private_GW_01로 지정한다.
그 다음 Private_subnet을 생성한다.
IPv4 CIDR는 10.0.50.0/24로 지정. 가용영역은 2a로 지정하였다.
기존 Public_subnet과는 겹쳐도 무관하다. 어차피 subnet자체가 서로 다른 기능을 하기 위함이니 로드벨런싱을 위한 문제에도 영향이 없다.
라우팅 테이블은 조금전 생성한 NAT 게이트웨이로 지정한다. Cloud_Private_Infra_RW
Private_subnet을 생성할때 pem키도 새로 받아 칼리에 그대로 복사해 두자.
이제 관리 및 접속가능한 서버가 web01, web02, pri01 까지 총 3개가 생겼다.
지금까지는 각각 명령어를 통해서 접속을 해야 했는데 이때 접속할때마다 긴 명령줄을 계속 입력하고 있어야 했다.
1,2개라면 모르겠지만 앞으로 서버를 몇개 더 만들 수 있으니 config파일을 생성하여 편리하게 관리하자.
칼리에서 터미널을 열면 첫번째 기본 화면에서 명령어를 이용하여 ssh config를 만들어준다.
명령어를 이용하여 생성한다.
sudo mkdir ssh
./ssh
sudo vim config
위와 같이 config파일을 셋팅 및 생성하여 나중에는 간단한 명령어만으로 ssh 접속이 가능하게 만든다.
Host web01
Hostname 3.142.55.172 #IP주소
User ubuntu #지정된 User이름
IdentityFile /home/kali/ec2_web.pem #pem키 경로 지정
Host web02
Hostname 18.222.103.134 #IP주소
User ubuntu #지정된 User이름
IdentityFile /home/kali/ec2_web.pem #pem키 경로 지정
Host pri01
Hostname 10.0.30.40 #IP주소
User ec2-user #지정된 User이름
IdentityFile /home/kali/private01.pem #pem키 경로 지정
Proxycommand ssh web01 -W %h:%p
다음은 로드벨런싱을 위한 대상 그룹을 생성한다. 타겟 그룹 이름은 LB-Target001로, VPC는 Public_VPC로 생성한다.
사진과 동일하게 설정한다.
특히 Health check path부분에는 /index.html로 작성한다.
/index.html
생성이 완료되었다면 대상 그룹을 지정하는데 위처럼 Public_web01과 Public_web02를 선택하고
Include as pending below를 선택하며 마무리.
로드 벨런서의 생성 옵션에서 가용영역을 조금전 우리가 대상그룹 지정해둔 영역으로 선택한다.
web01, web02가 번갈아나오게 하도록 어떤 것을 만들지 지정하는 것이다.
여기서 가용영역이 겹쳐져있다면 제대로 나오지 않을 것이다.
이제 로드벨런싱까지 마무리가 되었다.
그리고나서 DNS이름이라고 되어있는 A레코드를 복사하여 주소창에 붙여 접속한다.
새로고침을 반복하면 Web Server01과 Web Server02가 번갈아 나오는것을 확인 할 수 있다.
다음은 아마존 자원 RDS를 이용한다.
RDS > 파라미터 그룹 에서 파라미터 그룹 생성을 해주고 위 사진과 같이 설정을 지정한다.
이제 mysql의 인바운드 규칙을 편집해준다.
182.224.183.136/32에 대한 접속 허가와 더불어 10.0.0.0/16에 대해 인바운드 규칙을 편집해준다.
칼리로 돌아와서 pri01로 접속하고 위와 같이 명령어를 통해 mysql에 접속한다.
ssh web01
sudo apt install mysql-client
sudo mysql -u admin -p -h mysql-db.ctcfj4odiban.us-east-2.rds.amazonaws.com
데이터베이스의 목록을 확인한다.
show databases;
다음으로는 wordpress라는 폴더를 db안에 생성한다.
create database wordpress;
show databases;
이제 php환경을 구축한다.
기존에 apache2가 php이지만 DB환경에 아무것도 구축되어있지 않으니 php환경을 구축해본다.
sudo apt install php libapache2-mod-php php-mysql
명령어를 통해 다운받은 php에서 redis에 연동, 압축파일을 해제 한다.
sudo apt-cache search php | grep php
sudo apt install php redis php-zip
해당경로로 들어가 info.php파일 환경을 저장
sudo vim /var/www/html/info.php
<?php
phpinfo();
?>
이제 인스턴스로 돌아가서 Public_web01의 퍼블릭IP주소를 확인하고 주소창에서 접속한다.
주소창에 ip주소/info.php로 접속하면 php환경이 잘 구축되었는지 확인 할 수 있다.
마 치 며
기존에 해놨던것에 대한 연장선이라 사진이 몇개 꼬인것 같다.
오늘은 기존 진행보다 조금 더 많이 나갈 수 있었다.
apache설치부터 프라이빗에서의 mysql과 php환경 구축 까지..
오늘은 교육에 대해 별다르게 복습하지 않아서 남은 시간에 무엇을 해볼까 복습해볼까 하다가 지난번에 이어서 AWS를 이어서 하기로 했다.
AWS가 생각보다 복잡하지만 기능들이 재밌는것도 많고 더불어 리눅스까지 이해가 되어가는것같다.
'Cloud System > AWS' 카테고리의 다른 글
[3] AWS 인프라 구축(WP,IAM,S3,CloudWatch) (0) | 2022.08.23 |
---|---|
[1] AWS 인프라 구축 (VPC, subnet, 인스턴스, 보안그룹) (0) | 2022.08.05 |
댓글
이 글 공유하기
다른 글
-
[3] AWS 인프라 구축(WP,IAM,S3,CloudWatch)
[3] AWS 인프라 구축(WP,IAM,S3,CloudWatch)
2022.08.23 -
[1] AWS 인프라 구축 (VPC, subnet, 인스턴스, 보안그룹)
[1] AWS 인프라 구축 (VPC, subnet, 인스턴스, 보안그룹)
2022.08.05