38/120

김건호·2022년 4월 5일
0

ssh -J

점프 옵션, 점프 호스트

  • 윈도우에서 ssh-keygen으로 키를 생성하여 인스턴스 생성 -> 윈도우 .ssh 폴더에 id~에 키가 생성 됨 -> aws에서 생성한 키와 다르게 윈도우에서 id~ 파일의 내용을 먼저 확인하기 때문에 -i옵션 불필요

  • 클라이언트에서 퍼블릭 인스턴스와 프라이빗 인스턴스의 키를 동시에 가지고있다면 -J 옵션을 통해 바로 프라이빗 인스턴스로 접속 가능

ssh –J ec2-user@퍼블릭 아이피 ec2-user@프라이빗 아이피

윈도우에서 ssh-keygen으로 생성한 키를 이용해 aws에서 키가져오기 실행 시, 아무 반응이 없는 경우 -> 공개키에 한글(윈도우의 사용자 이름)이 들어가 있기 때문 -> 계정@시스템이름 내용을 삭제하면 가능

윈도우> ssh -i .\access-ssh.pem ec2-user@ip
The authenticity of host 'ip' can't be established.
ECDSA key fingerprint is SHA256:지문값.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

SHA256시 AWS에서 보여주는 지문과 같은 지 질의하는 과정, AWS에서 보이는 내용은 MD5이기때문에 다를 수 밖에 없음, yse라고 하게되면 known_hosts에 저장 됨
-> 알려진 호스트에 저장된 ip를 aws에서 제공하게 되는 경우 ip는 같은데 지문이 다르기 때문에 중간자 공격을 받은 것 같다는 내용과 함께 접속이 불가능 함-> known_host 파일에서 해당 ip부분 삭제하면 해결

인증에 필요한 공개키는 authorized_keys에 저장 됨

Auto Scaling

CPU, 메모리, 디스크, 네트워크 트래픽과 같은 시스템 자원들의 메트릭(Metric) 값을 모니터링하여 서버 사이즈를 자동으로 조절

Auto Scaling 설계

인스턴스 이미지 생성

  • 인스턴스 이미지를 위한 인스턴스 시작

    사용자 데이터 설정
#!/bin/sh
yum install -y httpd
systemctl start httpd
systemctl enable httpd
HOSTNAME=`hostname`
echo "<h1> ${HOSTNAME} </h1>" > /var/www/html/index.html

userdata는 cloud-init에서 처리
$ systemctl status cloud-init
제공한 유저데이터가 /var/lib/cloud/instance/user-data.txt가 있음
결론적으로 cloud-init 패키지, 서비스는 /var/lib/cloud/instance에 저장
디버깅 /var/log/cloud-init-output.log => 유저데이터 스크립트가 어떻게 실행되었는지 제대로 되었는지 확인 가능

shebang #!로 sh파일 안에서 #! 아래 문장은 해당하는 명령어로 실행하게 하는 기능
예시)

# vi test.sh
---
#!/user/bin/python3
print("hi")
---
./test.sh
hi
  • 스케일 아웃에 사용할 인스턴스 이미지 생성


  • 기존 인스턴스 종료

시작 템플릿 생성

시작 템플릿은 시작 구성의 업그레이드 버전, 시작 구성이 남아있는 이유는 기존에 시작 구성을 사용하여 구성한 사람들이 있기 때문에

  • 시작 템플릿 구성

  • 생성한 이미지 선택
  • 인스턴스 유형은 프리티어 가능한 t2.micro
  • 키, 보안그룹 기존에 생성한 것 이용
  • 서브넷은 따로 만들었다면 설정
  • 시작 템플릿 생성

Auto Scaling 그룹 생성


추후에 템플릿을 더 생성할 경우, 버전으로 관리 가능

  • 네트워크 생성한 VPC나 디폴트로 설정

  • 서브넷은 스케이링을 어디까지 할 것인가에 따라 지정

  • 가용성을 위해 로드 밸런서 설정

    웹서버이기때문에 어플리케이션 로드밸런서

  • 외부와 연결을 위해 internet-facing 설정

    internal은 외부에 노출되지 않는 로드밸런서

  • 유예 기간 설정

  • 모니터링 설정

    스케일링 시 모니터링은 필수적

  • 그룹 크기 선택

    원하는 용량 (desire) 필요한 용량, 최소와 최대의 중간정도나 최소와 맞춰주기
    최소 크기와 최대 크기에 맞춰 자동으로 스케일링

  • 스케일링 자동화를 위한 조정 정책 설정

    없음으로 설정시 수동으로 값을 지정하여 스케일링

인스턴스 요구상항은 설정한 threshold를 넘을 경우 지정한 시간 경과 후 스케일링 진행
필요한 이유 : threshold가 50이고, 지정한 시간이 0이면 49와 51을 넘나드는 경우 계속해서 스케일링을 하기 때문에 오히려 성능이 저하될 수 있음.

  • Auto Scaling 그룹 생성

Auto Scaling 확인

  • 자동으로 지정한 원하는 용량만큼의 인스턴스 생성 됨
  • 인스턴스 접속하여 임의로 CPU 사용량을 늘림
# sha256sum /dev/zero

해시를 계산하는 명령어로 아무것도 없는장치인 zero에 암호화를 명령 -> 빈내용에 해시를 돌리면 무한대가 걸림 -> CPU 사용량 증가 => 암호화 어플이 대체로 CPU를 많이 차지

  • threshold(50)이 넘어가면 스케일 아웃, 낮아지면 스케일 인을 자동으로 수행

    Launching 은 새 인스턴스 생성 중, Treminating은 사용하지 않는 인스턴스 종료 중
    나중에 만들어진 인스턴스부터 삭제

더 이상 인스턴스가 생성이 안되는 경우 -> 인스턴스 유형에 따라 모든 가용영역에 배포가 안되는 경우가 있을 수 있음

profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽

0개의 댓글