0. 구현 순서
1. Openstack On-premise 환경 구축
2. 오픈스택 퍼블릭클라우드 VPN 연결
3. AWS RDS
4. AWS EFS
5. 온프레미스 환경에서 S3로 Private 접근
1. Openstack On-premise 환경 구축과 VPN 연결
1.1 On-premise 아키텍처
- WEB server
- 웹 서버는 사내 사용자들에게 정적인 컨텐츠나 동적인 데이터를 응답하는 서비스로써의 역할을 한다. 또한, AWS의 EFS, S3와 연결되어 필요한 파일이나 컨텐츠를 제공받을 수 있다.
- Database server
- 데이터베이스 서버는 AWS RDS와의 연동을 통해 RDS의 데이터 백업과 온프레미스 내에서 자체적으로 사용할 수 있는 데이터를 저장한다.
- Router
- 외부망과의 연결을 위해 사용되며, VPN 연결 시 정적 경로 추가 설정이 필요하다.
2. 오픈스택과 퍼블릭클라우드 VPN 연결
2.1 고객 게이트웨이 생성
- VPN 연결을 위해 고객 게이트웨이를 만들고 IP 주소를 강의장 IP로 설정한다.
2.2 가상 프라이빗 게이트웨이 생성
- 가상 프라이빗 생성과 동시에 VPN연결을 위한 VPC를 선택한다.
2.3 site-to-site VPN 생성
- site-to-site를 생성하면 가상 프라이빗 게이트웨이(VGW)와 온프레미스 측 고객 게이트웨이(CGW) 사이에 두개의 VPN 터널을 생성
- 두 개의 터널은 각각 다른 가용 영역에 터널 엔드 포인트를 가진다.
2.4 Libreswan
- /etc/sysctl.conf 수정
# net.ipv4.ip_forward = 1
# net.ipv4.conf.default.rp_filter = 0
# net.ipv4.conf.default.accept_source_route
- 터널링
# vi /etc/ipsec.d/aws.conf
- 터널의 키설정
# vi /etc/ipsec.d/aws/secrets
- ipsec 재시작
# systemctl restart ipsec
# systemctl status ipsec
2.3 Router와 Routing table 수정
- 오픈스택 라우터 정적 경로 추가
- 대상 CIDR을 10.37.0.0/16 대역대의 AWS VPC 대역대로 설정
- 다음 홉을 Libreswan이 설치되어 있는 오픈스택 private 주소(192.168.1.92)로 설정
- AWS VPC 라우팅 테이블 수정
- 목적지 네트워크 대역대를 192.168.0.0/21으로 설정한다
- 목적지 대역대를 찾아가기 위해서 길을 묻는 대상으로 가상 프라이빗 게이트웨이(vgw)를 설정한다.
3. AWS RDS
3.1 RDS 읽기 전용 복제본 만들기
- 보안그룹 수정
- RDS DB 읽기 전용 복제
- VPC와 보안 그룹 선택
- 오픈스택에서 복제본 RDS로 접근
# mysql -h my-db-read-only.cghdvtao1swe.ap-northeast-2.rds.amazonaws.com -u yunhyeong -p
- 데이터 삽입 시도
3.2 mysqldump
- 백업 파일 만들기
# mysqldump -h my-db.cghdvtao1swe.ap-northeast-2.rds.amazonaws.com -u yunhyeong -p wordpress > wordpress.sql
- 오픈스택 db에서 데이터베이스 확인
- 백업 파일 복원
# mysql -u root -p
# create database wordpress
# mysql -u root -p wordpress < wordpress.sql
4. AWS EFS
- EFS 보안 그룹 생성
- NFS 유형의 보안 그룹을 생성하고
- VPN Gateway를 통해 들어오는 모든 트래픽을 허용하기 위해서 인바운드를 0.0.0.0/0으로 설정한다.
- EFS 생성
- EFS 생성시 적용할 VPC와 서브넷을 선택한다.
- 각 서브넷에 EFS 전용 보안그룹을 넣어준다.
- 마운트 방법 선택
- DNS 호스트가 가능한 인스턴스면 DNS를 통한 탑재가 가능하다.
- ec2 인스턴스에서는 DNS를 통한 탑재가 가능하기 때문에 해당 항목을 선택한다
- 그리고 마운트 명령어를 복사한다
- EC2 인스턴스에서 EFS 마운트
- efs 디렉토리를 만들고
- efs 경로에 DNS 주소로 마운트를 진행한다.
- df -h로 마운트 목록 확인
- efs 안에서 test.txt 파일 생성
- 오픈스택 webserver에 마운트
- efs 경로를 만들고
- efs 디렉토리에 IP를 탑재한 마운트를 한다.
- 오픈스택 환경은 DNS 호스트 이름이 비활성화된 환경이기 때문에 IP로 마운트를 진행
- 마운트 결과
- df -h로 마운트 목록 확인
- efs 디렉토리 안에서 test.txt 파일을 확인한다
5. 온프레미스 환경에서 S3로 Private 접근
5.1 VPC endpoint
- 일반적인 상황에서는 VPC안의 리소스들이 S3에 접근하기 위해서는 외부 인터넷을 경유해야한다.
- 따라서 Private Subnet에 있는 리소스들이 S3에 접근하기 위해서는 중간 경로인 NAT Gateway를 반드시 거쳐야한다.
- 이는 결국 내부 리소스와 S3가 통신시 외부에 트래픽이 노출됨을 의미하며 보안상 좋지 않은 구조를 갖는다.
- VPC 엔드포인트를 만든다면, private 영역에 있는 리소스들이 S3에 접근할 때 NAT Gateway를 거치지 않고 바로 S3에 접근할 수 있다.
- 이때 생성되는 VPC 엔드포인트는 게이트웨이 엔드포인트이며, subnet에서는 자동으로 이 게이트웨이 엔드포인트로 routing table을 추가하고 게이트웨이이는 S3로 트래픽을 보낸다.
5.2 IAM 역할 만들기
- S3를 이용하기에 앞서 먼저 EC2에서 S3로 접근하는 역할(Role)을 IAM에서 생성한다.
- EC2 역할 부여
- Private subnet 안에 있는 인스턴스에 이전에 생성한 S3 역할을 부여한다.
5.3 게이트웨이 엔드포인트
- Gateway 엔드포인트 선택
- 엔드포인트 생성시 Gateway를 지원하는 서비스로 선택한다.
- VPC와 private subnet의 라우팅 테이블을 선택한다.
- 라우팅 테이블 확인
- Private subnet안의 라우팅 테이블이 Gateway endpoint와 S3로 연결되어 있는 것을 볼 수 있다.
5.4 IAM 사용자 추가
- IAM 사용자 추가
- AmazonS3FullAccess를 가진 사용자를 만든다.
- 이 사용자로 aws-cli에서 S3 접근 예정
- 엑세스 키 만들기
- 엑세스키를 만들어 Key ID와 Access Key 두가지를 발급 받는다.
5.5 aws-cli
# curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# unzip awscliv2.zip
# sudo ./aws/install
- 온프레미스 환경 aws-cli 설치
- 온프레미스 환경에 위치한 Web server에 접속
- 명령어를 순서대로 입력하여 오픈스택 환경에서 aws-cli를 설치한다.
- CLI 자격 증명
- aws configure 명령어를 입력하고 앞서 발급 받은 엑세스 키로 s3 사용자에 로그인 한다.
- aws s3 ls 명령어를 입력하여 정상적으로 S3가 나타나는지 확인한다.
- VPN 연결로 인해 외부 경로가 아닌, private 경로로 이동해 VPC Gateway 엔드포인트에서 S3로 접근할 수 있음을 확인한다.
'Cloud Solution Architect > AWS' 카테고리의 다른 글
AWS-CloudFormation (0) | 2023.05.16 |
---|---|
AWS-CLI (0) | 2023.05.15 |
AWS - Amazon Inspector, CloudWatchLog, NAT Instance (0) | 2023.05.02 |
AWS - CloudFront, Cloud 보안, ACM을 활용한 HTTPS 프로토콜 접속 (0) | 2023.05.01 |
AWS - Autoscaling Group, Bastion host (0) | 2023.04.27 |