안녕하세요 이웃님들 ^.^
좋은 아침 입니다.
오늘은 간만에 클라우드 관련된 글을 포스팅해 보려고 합니다.
위의 다이어 그램처럼 Amazon WEB서비스를 이용해서
퍼블릭 서브넷 1개와 프라이빗 서브넷 2개로, 총 3개의 서브넷이 있는 VPC를 생성을 해보겠습니다. 웹 서버는 퍼블릿 인터넷에 연결할 수 있도록 퍼블릿 서브넷에서 호스팅을 하고
MySQL RDS(데이터베이스) 인스턴스는 프라이빗 서브넷에서 호스팅을 시킵니다. VPC에서 DB 인스턴스( MySQL RDS)를 사용하려면 VPC에 서브넷이 2개 이상 있어야 합니다.
이런 서브넷은 DB 인스턴스를 배포하려는 AWS 리전의 서로 다른 AZ(Available zone)에 위치 되어야 합니다..
VPC 생성 하기.
그럼 아래의 과정을 따라서 진행을 해보겠습니다.
- aws에 로그인을 한 후 검색창에서 VPC를 입력 하면 아래의 VPC를 클릭 합니다.
2. Create VPC를 클릭 하고 각 항목에 아래 내용을 입력 합니다.
생성할리소스: VPN만 선택
이름태그: my-vpc
IPV4_CIDR : 10.0.0.0/16
위의 3가지 값을 입력 후 VPC생성 버튼을 클릭 합니다.
Public Subnet 생성 하기
아래의 절차에 따라서 VPC안에 들어갈 Public Subnet을 생성 합니다.
1.왼쪽 메뉴에서 '서브넷'을 선택 하고 '서브넷 생성' 버튼을 클릭 합니다.
2. 서브넷 생성 화면에서 아래의 값들을 입력 후 '서브넷 생성'버튼을 클릭 합니다.
VPC ID : 드랍 다운 버튼을 클릭 하여 앞에서 생성한 VPC를 선택 합니다.
서브넷 이름: Public 1을 입력 합니다.
가용영억(az): 드랍 다운 버튼을 클릭 하여 첫번째 가용영역을 선택 합니다.
CIDR: 10.0.1.0/24를 입력 합니다. (CIDR은 VPC의 CIDR보다 적은 범위로 입력 되어야 합니다)
Internet Gateway 생성하기
이제 인터넷에서 위에서 만든 Public subnet에 접근 가능 하도록 Internet gateway를 생성 합니다.
- 왼쪽 메뉴창에서 Internet gateway를 선택을 하고 인터넷 게이트웨이 생성 버튼을 클릭 합니다.
2. 아래의 값을 입력 하고 인터넷 게이트웨이 생성을 클릭 합니다.
이름테그: Internetgw
3. 아래의 화면에서 '작업' 버튼을 클릭 후 VPC에 연결을 클릭 합니다.
4. 아래의 화면에서 사용 가능한 vpc에서 앞에서 생성한 VPC를 선택하고 인터넷 게이트 웨이 연결을 클릭 합니다.
5. 이제 인터넷 게이트웨이가 vpc에 연결이 아래의 화면과 같이 연결이 되었습니다.
라우팅 테이블 생성, 경로 추가 및 퍼블릭 서브넷 연결
이재 만들어진 VPC(내 VPC)와 연결된 기본 라우팅 테이블이 하나 있는데 이 테이블은 트래픽을 기본적으로 로컬로 라우팅합니다. 인터넷 게이트웨이로 퍼블릭 트래픽을 라우팅하는 추가 라우팅 테이블을 생성하기 위해 아래의 절차를 진행 합니다.
- 왼쪽 메뉴에서 '라우팅 테이블' 메뉴를 클릭 합니다.
2.아래의 화면에서 아래의 값을 입력 후 '라우팅 테이블 생성'을 클릭 합니다.
이름 : Public Route Table
VPC: 앞에서 만든 VPC 선택
3. 라우팅 테이블을 생성하면, 아래 그림과 같이 트래픽을 로컬로 전달하는 라우팅 테이블이 하나 있습니다. 이제 인터넷 게이트 웨이로의 라우팅을 위하여 라우팅 편집 버튼을 클릭 합니다.
4.라우팅 추가 버튼을 클릭 하고 아래의 값을 입력 합니다.
대상 : 0.0.0.0/0 입력
두번째 대상에 :Internet gateway를 선택 하면, 우리가 만든 gw가 보입니다. 그러면 해당 gw를 클릭 하고 변경사항 저장을 누릅니다.
5. 이제 '서브넷 연결' tab을 클릭 하고, Public subenet을 선택 후 '연결 저장' 버튼을 누릅니다.
이제 Public Subnet으로 만든 서브넷은 Integet gateway와 연결이 되었으므로, Public으로 동작을 하게 됩니다.
웹 서버용 보안 그룹 생성
이제 보안 그룹을 생성을 해야 되는데, 보안그룹(Security Group)은 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할을 하고. VPC에서 인스턴스를 시작할 때 최대 5개의 보안 그룹을 인스턴스에 할당할 수 있습니다.
보안 그룹은 서브넷 수준이 아니라 인스턴스 수준에서 작동하므로 VPC에 있는 서브넷의 각 인스턴스를 서로 다른 보안 그룹 세트에 할당할 수가 있고, 인스턴스가 시작할 때 특정 그룹을 지정하지 않으면 인스턴스가 자동으로 VPC의 기본 보안 그룹에 할당됩니다.
그럼 이제 아래 절차에 따라 보안 그룹을 생성해 보도록 하겠습니다.
- 왼쪽 메뉴에서 '보안그룹' 메뉴를 선택 하고, 보안 그룹 생성을 누른 후 아래 값을 입력 합니다.
- Security group name(보안 그룹 이름): Web server
- Description(설명): My Web Server Security Group
- VPC: 내 VPC를 선택
2. 인바운드 규칙에서 규칙추가 버튼을 클릭 하고 아래의 정보를 입력 후 보안그룹 생성을 클릭 합니다.
유형: http
소스: ANYWHERE- IPV4
퍼블릭 서브넷에서 웹 서버 시작하기
이제 주소록 애플리케이션을 실행하는 웹 서버를 시작만들고 시작 하겠습니다.
이 블로그의 마지막 부분에 이 주소록 애플리케이션을 Amazon RDS for MySQL 인스턴스에
연결합니다.
- AWS Service 검색 창에 EC2를 입력 하고 선택을 합니다.
2. 인스턴스 시작을 누르고 아래의 값들을 입력 합니다.
3. Name and tags(이름 및 태그) 섹션에 Web Server를 입력합니다.
4. Key pair (login)(키 페어(로그인)) 섹션에서 Proceed without a key pair(키 페어 없이 진행)를 선택합니다.
Network settings(네트워크 설정) 섹션에서 Edit(편집)
- VPC, My VPC를 선택합니다. 참고 - Public 1은 서브넷 섹션 아래에 채워짐
- Firewall(Security groups)(방화벽(보안 그룹)) 아래에서 Select an existing security group(기존 보안 그룹 선택)
- Common security groups(일반 보안 그룹)을 선택하고 Web server(웹 서버)를 선택합니다.
5. Advanced Details(고급 세부 정보)를 확장합니다(페이지 하단).
6. 확장을 하고 나서 아래 화면의 사용자 데이터 부분에 아래의 스크립트를 복사 후 붙여 넣습니다.
스크립트 내용
#!/bin/bash -ex
yum -y update
yum -y install httpd php mysql php-mysql
chkconfig httpd on
service httpd start
cd /var/www/html
wget https://us-west-2-aws-training.s3.amazonaws.com/courses/spl-13/v4.2.27.prod-ce5abbb0/scripts/app.tgz
tar xvfz app.tgz
chown apache:root /var/www/html/rds.conf.php
7. 인스턴스 시작 버튼을 클릭 하고 모든 인스턴스 보기 버튼을 클릭 합니다.
8. 인스턴스의 상태가 실행중 으로 표시 될때가지 기다렸다가 web-server를 클릭 합니다.
9. 그럼 아래와 같이 해당 인스턴스의 세부 정보가 나오고 그중 Public IP를 복사를 합니다.
10. 로컬 컴퓨터의 웹 브라우저를 열고 해당 ip를 주소창에 입력 후 엔터를 입력 합니다.
그럼 아래와 같이 주소록 입력창이 나타나는것을 확인 할 수 있습니다.
DB서버용 프라이빗 서브넷 생성
- 서비스 검색창에서 VPC를 입력 합니다.
2. 왼쪽 메뉴에서 서브넷을 선택 합니다.
3. 아래의 값들을 선택 후 생성을 클릭 합니다.
vpcid : 기존 생성한 VPC선택
가용영역:첫번째 AZ 선택
IPV4 CIDR: 10.0.2.0/24
4. 두번째 서브넷 생성을 위해 '서브넷 생성' 버튼을 클릭 후 아래의 값을 입력 후 생성 버튼을 클릭 합니다.
VPC ID :기존 VPC
서브넷 이름 : Private 2
가용용역 : 두번째 AZ선택
IPV4 CIDR :10.0.3.0/24
DB용 보안 그룹 생성
- 왼쪽 메뉴에서 보안 그룹을 선택 하고 기존에 생성된 web server 보안 그룹을 클릭 하고
별도의 메모장에 보안 그룹 ID값을 복사해 둡니다.
2. 왼쪽 메뉴에서 보안 그룹을 선택 후 생성하기를 클릭 하고 아래의 값들을 입력합니다.
- Security group name(보안 그룹 이름): Database
- Description(설명): My Database Security Group
- VPC: 내 VPC 선택
3. 인바운드 규칙에서 규칙 추가 버튼을 클릭 하고 아래의 값들을 입력 하고 생성을 클릭 합니다.
- Type(유형): MySQL/Aurora
- 참고: MSSQL이 아닌 MySQL를 선택하십시오.
- Source(소스):
- Custom(사용자 지정)
- 텍스트 편집기에 복사한 웹 서버 보안 그룹 ID를 붙여 넣습니다
이제부터 Web server와 DB가 통신할 수 있는 환경이 되었습니다.
데이터베이스 서브넷 그룹 생성
Amazon RDS 인스턴스에는 데이터베이스 서브넷 그룹이 필요합니다. 이 서브넷을 생성 하도록 하겠습니다.
- service 검색창에서 RDS를 입력 하여 서비스를 검색 합니다.
2. 왼쪽 메뉴창에서 서브넷 그룹을 선택 합니다.
3. 서브넷 그룹 생성하기를 클릭 후 아래의 값들을 입력 하고 생성을 클릭 합니다.
- Name(이름): My Subnet Group
- Description(설명): My Subnet Group
- VPC: 내 VPC
- Availability zone(가용 영역): 목록에서 첫 번째 및 두 번째 가용 영역을 선택합니다.
- Subnets(서브넷) 섹션에서 다음을 선택합니다.
- 10.0.2.0/24
- 10.0.3.0/24
Amazon RDS 데이터베이스 생성
이제 생성된 서브넷에 RDS DB를 생성을 하겠습니다.
- 왼쪽 메뉴에서 데이터베이스를 클릭 합니다.
2. 데이터 베이스 생성에서 아래의 값과 같이 선택 합니다.
- Engine options(엔진 옵션): MySQL
- Version(버전): MySQL 5.7
3. 텝플릿과 인스턴스 설정에서 아래와 같이 설정을 합니다.
- Templates(템플릿) 섹션에서 Dev/Test(개발 및 테스트)를 선택합니다.
- Settings(설정) 섹션에서 다음을 구성합니다.
- DB instance identifier(DB 인스턴스 식별자): myDB
- Master username(마스터 사용자 이름): admin
- Master password(마스터 암호): lab-password
- Confirm password(암호 확인): lab-password
4 인스턴스 구성과 스토리지에서 아래와 같이 선택을 합니다.
5. 연결 부분을 아래와 같이 선택을 합니다.
- Virtual Private Cloud(VPC): 내 VPC
- Publicly access(공개적으로 액세스 가능): No(아니요)
- Existing VPC security groups(기존 VPC 보안 그룹):
- Database(데이터베이스) 보안 그룹을 추가합니다.
- default(기본) 보안 그룹을 제거합니다.
6. Monitoring(모니터링) 섹션에서 Enable Enhanced monitoring(확장 모니터링 사용)을 선택 취소합니다
7. Additional configuration(추가 구성) 섹션(하단 근처에 있음)에서 Additional configuration(
추가 구성)을 선택하고 다음을 입력 후 데이터베이스 생성을 클릭 합니다.
- Initial database name(초기 데이터베이스 이름): myDB
- Enable automatic backups(자동 백업 사용)를 선택 취소합니다. 이렇게 하면 백업이 꺼지고 실습에서 데이터베이스가 조금 더 빨리 시작됩니다.
- Enable auto minor version upgrade(자동 부 버전 업그레이드 사용)를 선택 취소합니다
주소록 애플리케이션을 데이터베이스에 연결
이제 web과 db를 연결하는 작업을 진행해 보도록 하겠습니다.
- 위의 화면에서 mydb 인스턴스를 클릭 하고 엔드 포인트값을 복사해 둡니다.
2. 인터넷 브라우저에서 web server의 Public IP를 입력 후 엔터를 치고 아래의 값들을 입력 하고 SUMMIT를 클릭하면 연결이 완료 됩니다.
- Endpoint(엔드포인트): MySQL 엔드포인트를 붙여 넣습니다.
- Database(데이터베이스): myDB
- Username(사용자 이름): admin
- Password(암호): lab-password
'아마존 클라우드' 카테고리의 다른 글
[클라우드] 아마존 로드 발란서 NLB 사용하기 (117) | 2023.07.14 |
---|---|
[클라우드] 아마존 EKS Auto scaling 사용하기. (116) | 2023.06.24 |
[클라우드] AWS CI/CD 사용하기 -3 EKS를 사용하여 클러스터 구성 및 배포하기 (156) | 2023.05.11 |
[클라우드] AWS CI/CD 사용하기 -2 Codepipeline 사용하기. (48) | 2023.05.09 |
[클라우드] AWS EKS CI/CD 설정하기-1 레포지토리 생성 (60) | 2023.05.09 |