IAM(Identity and Access Management)
IAM 이란?
AWS 서버스에 대한 액세스를 안전하게 제어하는 웹 서비스이다.
IAM을 통해 사용자, 액세스 키와 같은 보안 자격 증명, 사용자와 애플리케이션이 어떤 AWS 리소스에 액세스할 수 있는지 제어하는 권한을 한 곳에서 관리할 수 있다.
사용자 그룹 생성





사용자 추가



'직접 정책 연결'은 root 사용자가 본인이 사용할 관리자 사용자를 생성할 때 주로 사용



이제 설정해준 'ReadOnly' 권한이 잘 적용되는지 확인해본다.



권한 수정





별칭 수정
IAM으로 로그인 할때, 계정 이름을 외우기 힘들다. 하지만, IAM 계정의 별칭을 변경할 수 있다.


이제 IAM 사용자로 로그인할 때 별칭을 이용해서 로그인 할 수 있다.
RDS (Relational Database Service)
RDS란?
AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스이다.
이 서비스는 산업 표준 관계형 데이터베이스를 위한 경제적이고 크기 조절이 가능한 용량을 제공하고 공통 데이터베이스 관리 작업을 관리한다.
DB 인스턴스는 AWS 클라우드에 있는 격리된 데이터베이스 환경이다. DB 인스턴스에 사용자가 만든 여러개의 데이터베이스가 포함될 수 있다.
독립 실행형 데이터베이스 인스턴스와 함께 사용하는 것과 동일한 도구 및 애플리케이션을 사용하여 DB 인스턴스에 액세스 할 수 있다.
RDS 생성









Route 53



Route 53 생성



ELB (Elastic Load Balancing)
ELB란?
EC2 인스턴스, 컨테이너 및 IP 주소와 같은 여러 대상에 대해 수신 애플리케이션 또는 네트워크 트래픽을 여러 가용 영역에 배포한다. 애플리케이션에 대한 트래픽이 시간이 지남에 따라 변경되므로 Elastic Load Balancing가 로드 밸런서를 확장하고, 대다수의 워크로드에 맞게 자동으로 조정할 수 있다.
로드 밸런서는 워크로드를 가상 서버와 같은 다수의 컴퓨팅 리소스로 분산합니다. 로드밸런서를 사용하면 애플리케이션의 가용성(High Availaility)과 내결함성(Fault Tolerant)이 높아진다.
사전 준비

# index.html 파일 수정
sudo vi /var/www/html/index.html




# tar파일 해제
sudo tar xvf food.tar -C /var/www/html
# index.html 수정
sudo vi /var/www/html/index.html


편한 실습을 위해 'user'가 속한 'admin' 그룹에 모든 권한을 부여한다.


# 메타 데이터 목록 확인
curl http://169.254.169.254/latest/meta-data
# 메타 데이터의 항목 확인
curl http://169.254.169.254/latest/meta-data/(보고싶은 항목)
해당 명령어를 통해 해당 서버의 메타 데이터를 확인할 수 있다.


NLB 생성









다시 돌아와서,





대상 그룹에 있는 웹 서버들에 연결된다. 최소 접속 알고리즘으로 로드 밸런싱한다.
Route53에 레코드로 NLB 주소 추가
하지만 DNS 주소 이름이 너무 길다. 이를 Route53을 이용하여 간단하게 만들 것이다.



워드프레스
워드프레스 서버 생성



#!/bin/bash
yum install -y httpd php php-mysql php-gd php-mbstring wget unzip
cd /tmp
wget https://ko.wordpress.org/wordpress-4.8.2-ko_KR.zip
cd /var/www/html
unzip /tmp/wordpress-4.8.2-ko_KR.zip
mv ./wordpress/* .
chown -R apache:apache /var/www/*
systemctl enable --now httpd


# web01에 mysql 설치
sudo yum install -y mysql




# RDS 접속
mysql -h (rds 엔드포인트 주소) -u (아이디) -p

# 유저, 데이터베이스 생성, 권한 부여
CREATE USER 'wpuser'@'%' IDENTIFIED BY 'wppass';
CREATE DATABASE IF NOT EXISTS wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'%';
quit
ALB 생성
워드프레스의 가용성을 높이기 위한 ALB를 생성한다.
ALB는 CLB와 비슷하며, NLB가 최소 접속 알고리즘을 써서 로드 밸런싱을 하는것과 다르게 'Round-Robin'방식을 사용한다.

















# 경로 변경
cd /var/www/html
# index.html 수정을 통한 생성
sudo vi index.html

이렇게 하면 이제 html 파일이 응답하여 ALB에 '정상' 응답이 될 것이다.

하지만, 우리가 원하는 것은 접속할 때 index.php파일을 여는 것인데, html이 php보다 우선순위가 높으므로 index.html이 의도치 않게 열릴 것이다. 그러므로 우선순위를 수정하여 php이 먼저 열리도록 해야한다.
# 경로 변경
cd /etc/httpd/conf
# httpd 설정 파일 수정
sudo vi httpd.conf
//
DirectoryIndex index.php index.html
//

하지만, 이러면 또 헬스 체크를 php파일로 진행한다. 그러므로 상태 검사 경로를 변경할 것이다



굳이 php가 아닌 html로 응답을 하려는 이유는, 상태 코드 '200'을 html 파일만이 줄 수 있기 때문이다.
Route 53에 ALB
하지만 ALB의 엔드포인트 주소로 접속하기엔 민감한 여러 정보들이 하드코딩 되어있으므로 보안상 좋지 않다. 그러므로 Route 53을 이용해서 다른 주소로 접속해야한다.

워드프레스 설치





워드프레스 이미지 생성




워드프레스 시작 템플릿 생성






시작 템플릿으로 인스턴스 생성
AWS는 Azure때와 다르게 인스턴스의 퍼블릭 IP를 분리할 수 없다. 이렇게 되면 ALB가 아닌 다른 경로로 외부에서 접근 가능하므로 이는 좋지 않다.





같은 방법을 반복하여 인스턴스 'wp02'도 생성한다.

마지막으로 인스턴스 'wp03'도 똑같이 생성


이제 다시, 대상 그룹에 위의 세 개의 서버를 추가한다.




이처럼 인스턴스를 생성하고 꾸밀 때는 접근이 쉽게 하기 위해 퍼블릭 서브넷을 이용한 뒤, 보안을 위해 만들어진 인스턴스를 이미지로 생성하고, 그 이미지로 프라이빗 서브넷을 사용한 인스턴스로 생성하는 방식을 사용할 수 있다.
'메가존 클라우드 2기 교육 > AWS' 카테고리의 다른 글
AWS - 클라우드 보안(공인인증서 발급 및 HTTPS 보안 연결), 아마존 Inspector, CloudWatchLog (0) | 2023.05.02 |
---|---|
AWS - CloudFront, Certificate Manager, 클라우드 보안(키 유출 대책) (0) | 2023.05.01 |
AWS - EFS, NAT 게이트웨이 , S3 (0) | 2023.04.28 |
AWS - Auto Scaling (0) | 2023.04.27 |
AWS - 비용, VPC, EC2, VPC Peering, EBS, EBS Snapshot (0) | 2023.04.25 |