본문 바로가기

AWS 교육/Docker-AWS (월)

241216_AWS Instance, Auto Scaling, Load Balancer

728x90

◈ 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 의 내용을 전부 복사하여 붙여 넣는다

  이렇게 내용을 입력하여 저장한 후 권한을 수정하면 정상적으로 서비스화가 된 것을 볼 수 있다

  이후 시작서비스 관리 툴에 추가한 후 시작 서비스로 추가한다

LibreNMS_1216-1.txt
0.37MB

여기까지 사용된 명령어

 

  이제 인스턴스를 중지한 후 이때까지 만든 내용을 이미지화 하여 저장한다

   (인스턴스 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  >  레코드 생성 으로 새 도메인을 등록하게 되면 등록된 도메인으로 접속되는 것을 확인 할 수 있다

728x90