웹 사이트 구축 전, 네트워크를 구축하는 리전이 어디인지를 확인한다.
앞으로 진행할 실습에서는 평촌 리전에서 진행한다.
위의 사진과 같은 시나리오로 네트워크를 구축하기
여기까지 하면 위와 같은 시나리오로 네트워크를 구축할 수 있다.
다음은 위의 사진과 같이 서브넷 마다 인스턴스를 설치하고 각 VPC를 피어링을 통해 통신시키고자 한다.
인스턴스 설치 후 피어링으로 VPC간 통신시키기
1. mgmt-server라는 이름의 인스턴스를 생성한다. 보안그룹에는 내 IP로 22번 포트에서 들어올 수 있도록 허용하는 규칙을 추가해 준다.
2. web1도 같은 방식으로 만들어 준다.
DB 서버 만들기
1. 인스턴스 만들기에서 공용이미지 > DBMS > MariaDB를 설정한 후 가장 위에 있는 이미지를 선택한다.
2. 가용성 영역은 KR-a로 선택한다.
3. Private_subnet에 만들 예정이기 때문에 해당 서브넷 네트워크를 선택한다.
4. db용 보안그룹을 추가해 준 뒤 인스턴스를 생성한다.
mgmt 서버에서 web1과 db 서버에 접속하기 위해서는 키페어를 mgmt 서버에 올려야 한다.
그리고 ssh -i [키페어] centos@[각 서버 IP 주소] 로 접속하는 것이다.
전송한 키는 chmod로 관리자만 접근할 수 있게 권한을 변경해야 한다.
mgmt 서버와 service 서버가 연결될 수 있는 피어링 게이트웨이를 생성한다.
각 VPC의 라우팅 테이블에 피어링 게이트웨이 정보를 추가한다.
[ mgmtVPC 라우팅 정보]
[ service-VPC 라우팅 정보]
이렇게 구성하면 mgmt 서버에서 ssh 명령으로 web1과 db서버에 접근해보자
먼저 각 보안그룹에 mgmt 서버의 IP 주소로 22번 포트에서 들어올 수 있도록 하는 규칙을 추가해야 한다.
이렇게 보안 그룹을 수정하면
다음과 같이 mgmt 서버에서 web1과 mydb에 접속할 수 있게 된다.
web1에서 DB서버로 접속하기
3306 포트로 web1에서 db서버로 접속을 할 것이다.
php 웹페이지에 자신의 DB 내로 데이터가 저장되도록 하기
1.web서버를 만들때 미리 돌린 사용자 스크립트로 만들어진 php파일을 찾는다 -> /var/www/html/process_create.php 에 있음
2. vi로 편집기를 열어 DB가 나의 db서버 IP로 연결될 수 있도록 db IP 정보를 수정해 준다.
이미지 생성하기
이미지를 만들 때는 이미지를 만들 인스턴스를 중지하고 진행해야 한다.
생성한 이미지로 KR-b 가용성 영역에 웹서버 하나 더 만들기
내가 생성한 이미지로 KR-b 영역에 똑같은 웹서버를 하나 더 만든다.
이렇게 하면 KR-a 영역에서 장애가 생겨도 KR-b 영역으로 옮겨가 안정적으로 서비스를 제공할 수 있게 된다.
Load Balancer 생성하기
로드 밸런서 : 대규모 트래픽을 분산시켜주는 기능
로드 밸런서를 사용하는 이유 :
상태 확인 주기 순서대로 트래픽을 점검하여 해당 서버의 장애와 비장애 여부를 판단한다.
LB 동작 프로세스를 알아야 트러블 슈팅하기에 좋다고 한다.
리스너 : 로드 밸런서로 유입되어 처리될 트래픽은 리스너에서 정의한다.
예를들어 tcp 80포트만 처리하도록 설정시 80번 포트만 처리될 수 있다.
로드 밸런서를 어느 곳에 설치할지를 정의한다.
예제에서는 service_VPC의 public_server(웹서버)와 연결될 수 있도록 설치하였다.
리스너 조건을 입력해 준다.
tcp 80번 포트의 트래픽만 상태 확인을 진행하고 30초씩 확인을 한다.
최대 응답 대기시간은 5초이고 최대 응답 재시도 횟수는 2번으로 하였다. 2번이 넘어가면 장애로 판단 후 더 이상 상태를 확인하지 않는다.
해당 로드벨런서에 플로팅 IP를 할당한다.
로드밸런서와 웹 서버들이 서로 연결 될 수 있도록 로드밸런서의 사설 ip를 web-sg 보안 그룹에 추가해 준다.
해당 로드밸런서를 KR-b 영역에 있는 웹서버와도 연결시켜준다.
로드 밸런서의 플로팅 IP로 접속하면 웹페이지가 뜬다.
해당 웹페이지에 데이터를 입력하면 연결된 db로 데이터가 저장되는 것을 볼 수 있다.
사용자 그룹을만들고 그 안의 알림 그룹을 통해 시스템에 생기는 이슈들에 대한 알림을 받을 수 있다.
ex. CPU의 임계값이 특정 범위를 특정 시간 동안 넘어서면 문자나 이메일로 알림을 보내라
Auto Scale : 인스턴스의 부하 또는 장애 등과 같은 상황을 대비해 지속적으로 모니터링하여
인스턴스를 확장하거나 축소할 수 있는 클라우드 핵심 기술
Scale Up은 서버의 크기 자체를 늘리는 것 ex. cpu1 2GB 메모리를 cpu8. 16GB 메모리로 늘리는 것
Scale Out은 서버의 규모를 늘리는 것 ex. 1대이던 서버를 20대로 늘린다.
Auto Scaling Group 만들기
스케일링을 할 인스턴스 템플릿을 정한 후
특정 임계치에 도달하면 추가될 인스턴스 개수를 정해준다.
그럼 임계치에 다다른 인스턴스는 scale out을 통해 서버가 증설되고
임계치에서 멀어지면 증설된 인스턴스는 오래사용된 것 순으로 사라진다.
스케일링은 각 인스턴스 사용량의 평균치를 계산하여 인스턴스 개수를 조절한다.
Stress로 부하 테스트
Stress 명령으로 강제로 부하를 주면
서버가 증설되어 웹페이지 새로고침시 다양한 경로의 IP로 웹페이지에 접근할 수 있는 것을 볼 수 있게된다.