◈ AWS
◆ 운영 서버 환경 구성
먼저 https://jinlabs.signin.aws.amazon.com/console 로 접속하여 EC2 로 들어간다
그 후 본인의 인스턴스를 시작하여 준 후 생성된 퍼블릭 IPv4 주소를 복사하여 MobaXterm에 username : ec2-user로 접속하며, ssh 키로 이전에 다운받은 .pem 파일을 세팅하여 시작한다
ㄴ이전에 설치한 파일이 정상적으로 남아있는 지 확인한 후
ㄴ패스경로로서 제대로 등록되어 있는지 확인한다
해당 명령어를 입력한 후 Enter 누른 후 영어를 읽어보면서 스페이스바를 통해 Node.js만 체크한 후 엔터를 누른다
ㄴ체크사항이 안 보일 경우 !를 통해 화면 새로고침을 해준다
그렇게 하면 필요한 내용이 뜨는데 /swap이라고 하여 가상메모리가 필요함을 알 수 있기에 작업 후 다시 시도를 하기 위해 Ctrl + C를 입력하여 종료한 후 확인된 내용의 명령어를 실행한다
완료 한 후 다시 실행 하여 1번 즉 nginx를 설치한다를 누른 후 엔터를 계속 누른다
그 후 첫 명령어를 추가한 후 위의 세개의 명령어를 입력하여 주고 마지막에 명령어를 하나 더 입력하여 준다
이제 root 계정으로 다시 install 명령어를 입력하여 Node.js와 nginx를 설치하여 준다
ㄴ완료까지 오래걸림
※ 정리 : instance안에 asdf와 Node.js, ruby를 /var/www/passenger에 설치하여 nginx에 연결한 것
이제 root계정을 종료한 후 nginx의 설정의 내용을 변경하여 준다
이후 root권한인 sudo를 사용하여 nginx를 실행 한 후 대표 IP를 웹에 입력하면 app.js의 파일 내용을 볼 수 있다
완료 한 후 nginx를 서비스화 하기 위해 init.d디렉토리로 가서 nginx 파일을 생성하여 내용을 입력하여 주는 데
ㄴ내용을 https://git.io/JeMFD 의 내용을 전부 복사하여 붙여 넣는다
이렇게 내용을 입력하여 저장한 후 권한을 수정하면 정상적으로 서비스화가 된 것을 볼 수 있다
이후 시작서비스 관리 툴에 추가한 후 시작 서비스로 추가한다
여기까지 사용된 명령어
이제 인스턴스를 중지한 후 이때까지 만든 내용을 이미지화 하여 저장한다
(인스턴스 ID 클릭 후 작업 > 이미지 템플릿 > 이미지 생성)
저장이 끝났다면 인스턴스를 종료하여준다
ㄴ이미지 삭제 시 스냅샷도 삭제하여 준다
◆ 다중 서버 환경 구성
※Auto Scaling (p.45~48)
먼저 시작 템플릿을 생성하여 주고
ㄴ네트워크 설정의 시작템플릿은 Auto Scaling 그룹에 인스턴스를 넣기때문에 네트워크의 의미가 없음(만들어야 알 수 있기 때문)
생성이 완료되면 인스턴스 유형과 키페어, 보안그룹 이 제대로 적용되었는 지 한번더 확인한 후
Auto Scaling 그룹을 생성하여 준다 (그룹 이름의 영문을 전부 대문자로 입력)
ㄴ가용영역을 2a, 2c 둘다 체크 시 프로그램이 번갈아가면서 양쪽에 생성하는 형식이 되는 것이기에 더욱 효율적
ㄴ현재 로드밸런싱이 없기에 없음으로 설정
이렇게 생성을 한다
만들어진 Auto Scaling 그룹의 서비스 내용을 확인하려면 본인 그룹을 체크한 후 활동을 클릭 시 작업기록이 있는 데 해당내용을 통해 확인할 수 있다
완성이 완료되면 해당 Auto Scaling 그룹의 인스턴스의 IP로 웹 접속이 되는 것을 볼 수 있으며,
해당 IP로 MobaXterm으로 접속하여 내용을 확인해보면 이전에 만들었던 이미지의 내용임을 알 수 있다
이제 해당 명령어로 설치를 하여 cpu 사용량을 조절하여줄 명령어를 준비한다
이렇게 cpu에 과부하를 더하게 되면 5분동안 모니터링에서 점점 사용률이 증가하는 것을 볼 수 있으며, 60% 이상 시 더 추가되는 것을 볼 수 있다 (총 3대가 됨)
이렇게 3대가 만들어지고 과부하가 종료되면 점점 사용률이 감소하게 되면서 60%이하로 2분이 지나면
만들어졌던 인스턴스가 삭제되는 것을 볼 수 있으며, 만들어진지 오래된 인스턴스부터 지워진다
◆ 로드 밸런스
- 여기에 로드밸런싱은 하나로도 가능하며, 오토스케일링 별로 존재하여도 된다
- p.64의 로드 밸런서의 health를 통해 코드 200을 응답받아 상태검사를 실시하는 데 모든 인스턴스를 할 수 없기에
(프로그램에 따라 상태코드가 반환되는 값이 다르기에 주의 필요)
※주의: 로드밸런서는 설치만 해도 aws에서 금액을 요청
- L3 스위치에서 Application Load Balancer // L4 스위치로 Network Load Balancer 가 적용됨
이제 로드밸런서를 제작함에 있어서 ssh를 연결하지 않으며,
ㄴ이 로드밸런서를 생성하면서 대상그룹이 없기에 대상그룹을 생성하는 데 있어서 80포트로 연결될 경우 target으로 가게되고 해당 target의 대상에 오토스케일링 그룹을 지정한다
ㄴ이렇게 만들어진 대상그룹을 연결하여 리슨 등록 한 후 생성
생성이 완료되면 오토 스케일링 그룹에서 통합-새로만들기(바뀔수 있음) 에서 로드밸런서 편집으로 등록하게 되면
대상그룹으로 가서 오토스케일링 그룹이 등록된 것을 확인할 수 있다
이렇게 완료되면 로드밸런서의 DNS이름을 복사하여 웹에 입력하면 정상적으로 출력되는 것을 볼 수 있다
이제 Route 53으로 가서 호스팅영역 > jinlab.net > 레코드 생성 으로 새 도메인을 등록하게 되면 등록된 도메인으로 접속되는 것을 확인 할 수 있다
'AWS 교육 > Docker-AWS (월)' 카테고리의 다른 글
241230_AWS Jenkins-Docker, 로드 밸런스, 오토스케일링 그룹 (0) | 2024.12.30 |
---|---|
241223_AWS Network, VPC(게이트웨이, 서브넷, 라우팅 테이블) (0) | 2024.12.23 |
241209_클라우드 컴퓨팅, AWS 단체 접속 및 EC2(Instance) (0) | 2024.12.09 |
241202_Jenkins(jenkins, github, dockerhub) (0) | 2024.12.02 |
241125_Jenkins-Server(Target, SSH, Pipeline) (0) | 2024.11.25 |