AWS 인프라 구축 2 : RDS, S3 버킷, DNS
이전 글
https://hiheey.tistory.com/150
RDS 생성
파라미터 그룹
옵션 그룹
서브넷 그룹
private 에 연결
데이터베이스 생성
엔진 유형 : MYSQL
템플릿 : 프리티어
인스턴스 구성 : db.t2.micro
보안그룹 : default
가용 용역 : 설정 없음
데이터베이스 인증 : 암호 인증
web01 과 web02에 mysql 설치
$ sudo yum install -y mysql
엔드포인트로 CMD 연결
web01 및 web02 데이터베이스 연결 확인
$ mysqladmin ping -u admin -p -h [엔드포인트 주소]
스토리지 S3
모든 퍼블릭 엑세스 차단으로 지정하고 생성
IAM 역할 생성
EC2에 S3 버킷에 접근할 수 있도록 역할을 생성하여 적용
IAM 역할 적용
web01 과 web02에 둘 다 적용
접근 확인
web01 과 web02 둘 다 실행
$ echo "hello" > test.txt => s3 버킷에 보낼 파일 생성
$ sudo aws s3 cp test.txt s3://bucketforkang
하기와 같이 txt 파일이 전송된 것을 확인할 수 있다.
퍼블릭 DNS에 리소스 정보 추가
도메인은 하기의 도메인으로 설정
레코드 생성
bastion용과 load balancer 용 2개 생성
bastion 용
라우팅 정책: 단순 라우팅 (해당 창이 안 보이면 마법사로 전환하면 해당 창 출력)
값에 bastion의 public IP 입력
로드밸런서용
nslookup 도메인 접속
프라이빗 DNS
프라이빗 DNS 를 사용하기 위하여 VPC 내 DNS 설정 부분을 하기와 같이 수정
프라이빗 DNS 호스팅 영역 생성
프라이빗 DNS 는 퍼블릭 DNS와 중복이 되면 안되기 때문에 중복되지 않은 도메인 이름으로 설정 필수
프라이빗 DNS 의 레코드 생성
bastion, web01, web02, db 총 4개 생성
라우팅 정책 : 단순 라우팅
IP에는 인스턴스의 프라이빗 IP를 기재
bastion, web01, web02는 레코드 이름 및 IP 주소만 수정하여 하기와 같이 작성
db용
RDS 는 고정 IP 주소 사용이 불가하기 때문에 엔드포인트로 레코드를 추가한다.
프라이빗 DNS 작동 확인
> ssh bastion => bastion 접속
$ nslookup web01.home
$ nslookup web02.home
$ nslookup db.home
위의 주어진 DNS 설정으로 config 파일 수정
bastion server는 외부에서 접근을 해야하는 퍼블릭 DNS 주소 입력
Host bastion
Hostname bastion.kanggroup.link
User ec2-user
IdentityFile ~\.ssh\JumpServer_KeyPair.pem
Host web01
Hostname web01.home
User ec2-user
IdentityFile ~\.ssh\JumpServer_KeyPair.pem
ProxyCommand ssh.exe bastion -W %h:%p
Host web02
Hostname web02.home
User ec2-user
IdentityFile ~\.ssh\JumpServer_KeyPair.pem
ProxyCommand ssh.exe bastion -W %h:%p
인증서 요청
load balancer 주소로 인증
퍼블릭 인정서 요청 후, route 53에서 레코드 생성까지 해야 인증서가 발급된다.
발급 확인
인증서를 발급하였으니 위에서 언급했던 로드밸런서 리스너에 HTTPS 추가
설정 후, web01 과 web02에서 httpd 재시작
$ sudo systemctl restart httpd
인터넷창에서 https://www.[도메인 이름] 으로 접속
하기와 같이 https 로 접속이 가능하며 SSL 서버 인증서가 이용되고 있는 것을 볼 수 있다.