도입부
오늘도 2주차에 오게 되었습니다.
비가 추적추적 너무 많이 와서 양말이 다 젖었을 정도입니다.
그래도 새로운걸 배운다는 즐거운 마인드로 참여하려고 합니다!
저번주에는 재밌는걸 배웠었는데 ,오늘은 실무에서 중요한 부분을 배운다고 하네요.
2주차
AWS 고가용성 환경 구축 - ASG, ELB, Multi-AZ, Global Region 구성 실습
-
저번주 상기
-
EC2
- COMPUTE 환경 cpu 메모리 제공
-
VPC
- 보안을 위해 private한 클라우드 환경 제공
- 구글의 클라우드 플랫폼에도 있고 에저에도 있다.
- 프로토콜을 규약을 맞추는 것처럼 다 있다.
-
EBS
-
AMI
-
위을 잘 이해하면 어떤 클라우드 환경으로 가도 쉽게 된다.
-
오픈스택을 쓸수도 있다.
-
스토리지 백업 , 복사 , 스냅샷 다른 리전으로 옮긴다.
-
패스워드를 잃어버렸을때 (key pair) 인스턴스가 물고 있는 저장하는 스토리지를 접근 할 수가 없다. 인스턴스키가없어서
- EC2는 껍데기에 불과 , 뺏다가 끼는 방식 AWS측에서도 하라고 제공
-
- 오늘 할 부분
- 루트 사용자로서 다른 직원들이나 동료들에게 내 계정 안에서 아이디와 패스워드를 만들고 권한같은게 있어서 줄 수 있도록 한다.
- CLI라고 해서 리눅스베이스에서 사용 EC2 , VPC , AMI EBS 콘솔에서 사용하는것이 아니라 CLI 방식으로 한다.
- CLI를 활용하는 이유는 자동화 때문에 엔서블
- 자동화의 말에 대부분 스크립트 이다. 순차적으로 명령어를 통해서 할것. yml ,json으로 스크립트 사용
- 급한대로 사용할 수 있는 윈도우 환경의 AWS환경
IAM(Identity and Access Management)
-
서비스에 대한 엑세스를 안전하게 제어하는 웹 서비스
-
사용자, 엑세스 키와 같은 보안 자격증명, 사용자와 어플리케이션이 어떤 AWS 리소스에 엑세스 할 수 있는지 제어하는 권한을 한곳에서 관리
-
오늘 만들것
-
USER
-
GROUP
-
서비스 어떤 범위까지 사용할 수 있는지(ROLE)
-
크리덴셜 - Key
-
CLI 접근을 통해서 계정을 만듬
-
-
녹색 V자가 좋은거고
-
느낌표를 녹색으로 만든다 그럼 보안상태가 좋아진다.
-
MFA
- 다요소 인증 (Multi-factor Authentication MFA)
- 지식 (가장 자주 사용하는것 password)
- 소유 (갖고 있는거 홍채 , 신체 , 지문)
- 속성 (보안카드 , OTP)
- 세가지 요소를 이용해서 2가지 이상을 이용해서 로그인 하면 다요소 인증이다.
-
개별 IAM 사용자 생성 이유
- 보편적으로 루트 계정을 사용하지 않는다.
- 아이디 하나 더만들고 루트 계정처럼 만들고 사용한다.
-
1단계
- 접근 방법이 2개
- CLI SDK API 도구에 대해 엑세스 키 ID 비밀 엑세스키 활성화
- ManagementConsole
- 자동 생성된 패스워드를 한번 사용하고 자기가 원하는 패스워드를 바꾸는 방식
- 접근 방법이 2개
-
2단계
- 그룹에 사용자 추가
- 기존 사용자에서 권한 복사
- 기존 정책 직접 연결
- AdministratorAccess
- 하나의 유저를 원하는 API에 엑세스를 할수 있는 권한을 준다.
-
csv 내용
- user name
- password
- Access key ID
- Secret access key
- Console login link
-
IAM 비밀 번호 정책 적용
AWS CLI 환경 구축
-
credential 적용
- aws configure
-
VPC와 서브넷 만들기
- aws ec2 create-vpc --cidr-block 10.0.0.0/16 --output table
- aws ec2 describe-vpcs
- MY_VPC = vpc-0dda8e0965ac6cf5e
- aws ec2 create-subnet --vpc-id vpc-0dda8e0965ac6cf5e --cidr-block 10.0.0.0/20 --availability-zone ap-northeast-2a --output table
- aws ec2 create-subnet --vpc-id vpc-0dda8e0965ac6cf5e --cidr-block 10.0.16.0/20 --availability-zone ap-northeast-2b --output table
- aws ec2 create-subnet --vpc-id vpc-0dda8e0965ac6cf5e --cidr-block 10.0.32.0/20 --availability-zone ap-northeast-2c --output table
- aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-0dda8e0965ac6cf5e" --query 'Subnets[*].{AZ:AvailablilityZone,CIDR:CidrBlock}' --output table
-
서브넷을 퍼블릿 서브넷으로 만들기
- aws ec2 create-internet-gateway
- MY_IGW = igw-0dde7573e17a32bcb
- aws ec2 attach-internet-gateway --vpc-id vpc-0dda8e0965ac6cf5e --internet-gateway-id igw-0dde7573e17a32bcb
- aws ec2 describe-internet-gateways
- aws ec2 create-route-table --vpc-id vpc-0dda8e0965ac6cf5e
- aws ec2 describe-route-tables
- MY_RTB = rtb-02f38665dad67d267
- aws ec2 create-route --route-table-id rtb-02f38665dad67d267 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-0dde7573e17a32bcb
- aws ec2 describe-route-tables --route-table-id rtb-02f38665dad67d267
- aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-0dda8e0965ac6cf5e" --query 'Subnets[*].{ID:SubnetId,CIDR:CidrBlock}'
- aws ec2 associate-route-table --subnet-id subnet-01f79f36672a79ba4 --route-table-id rtb-02f38665dad67d267
- aws ec2 associate-route-table --subnet-id subnet-0cffd56e316220c35 --route-table-id rtb-02f38665dad67d267
- aws ec2 associate-route-table --subnet-id subnet-039d676652d8d1a33 --route-table-id rtb-02f38665dad67d267
- aws ec2 modify-subnet-attribute --subnet-id subnet-01f79f36672a79ba4 --map-public-ip-on-launch
- aws ec2 modify-subnet-attribute --subnet-id subnet-0cffd56e316220c35 --map-public-ip-on-launch
- aws ec2 modify-subnet-attribute --subnet-id subnet-039d676652d8d1a33 --map-public-ip-on-launch
- aws ec2 modify-vpc-attribute --vpc-id vpc-0dda8e0965ac6cf5e --enable-dns-hostnames
-
키페어, 보안그룹 만들기
- aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem
- chmod 400 MyKeyPair.pem
- aws ec2 create-security-group --group-name HTTP_SSHAccess --description "Security group for HTTP_SSH access" --vpc-id vpc-0dda8e0965ac6cf5e
- MY_SG = sg-0cc77ae059bad1d82
- aws ec2 describe-security-groups
- MY_IP=$(curl http://checkip.amazonaws.com) //59.9.140.136
- aws ec2 authorize-security-group-ingress --group-id sg-0cc77ae059bad1d82 --protocol tcp --port 22 --cidr 59.9.140.136/32
- aws ec2 authorize-security-group-ingress --group-id sg-0cc77ae059bad1d82 --protocol tcp --port 80 --cidr 0.0.0.0/0
-
볼륨 및 인스턴스 만들기
-
aws ec2 run-instances --image-id ami-0e92198843e11ccee --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-0cc77ae059bad1d82 --subnet-id subnet-01f79f36672a79ba4 --block-device-mappings file://mapping.json
-
MY_IID=i
-
aws ec2 describe-instances --instance-id $MY_IID
-
ssh -i "MyKeyPair.pem" ec2-user@
-
- 정리
- aws ec2 terminate-instances --instance-id $MY_IID
- aws ec2 delete-security-group --group-id $MY_SG
- aws ec2 delete-subnet --subnet-id $MY_SID1
- aws ec2 delete-subnet --subnet-id $MY_SID2
- aws ec2 delete-subnet --subnet-id $MY_SID3
- aws ec2 delete-route-table --route-table-id $MY_RTB
- aws ec2 detach-internet-gateway --internet-gateway-id $MY_IGW --vpc-id $MY_VPC
- aws ec2 delete-internet-gateway --internet-gateway-id $MY_IGW
- aws ec2 delete-vpc --vpc-id $MY_VPC
[
{
"DeviceName": "/dev/xvda",
"Ebs": {
"VolumeSize": 10
}
},
{
"DeviceName": "/dev/sdh",
"Ebs": {
"VolumeSize": 10
}
}
]
RDS(Relational Database Service)
-
원래 고가용성을 사용할수 있는 오픈소스가 있다
-
우리 인스턴스로 만드면 3~4개 인스턴스로 서로 백업 하거나 할 수 있다.
-
프로덕션 : 고가용성 및 빠르고 일관된 성능을 위해 기본값을 사용하십시오.
-
VPC 외부의 Amazon EC2 인스턴스 및 디바이스는 데이터베이스에 연결할 수 있습니다. 데이터베이스에 연결할 수 있는 VPC 내부의 EC2 인스턴스 및 디바이스를 지정하는 하나 이상의 VPC 보안 그룹을 선택하십시오.
-
퍼블릭 액세스 기능
- 예 : 어디서든 접속 가능
- 아니오 : 허용된 VPC내 EC2인스턴스로만 접속이 가능
-
자동 백업 활성화
- 자동 백업 장치들이 있다.
- 백업 보존 기간
- 백업기간
- 모니터링
- 로그내보내기
-
초기 생성에 백업을 한번 해둠, 세팅 하는 시간이 조금 걸린다.
-
2C에 데이터 베이스가 있으니까 웹서버는 인스턴스를 만든다
-
2a로 인스턴스를 만든다.
-
예전에는 리얼타임으로 적용되지 않는다 . 도메인이랑 아이피랑,
-
예전보다 나아졌지만 그래도 느리다.
-
네임서버 변경을 해야한다. ->
-
도메인과 ip를 매핑하는게 유형 A : 탄력적 IP 넣기
-
CNAME 도메인과 도메인을 매핑 : 도메인 넣기
- 로드밸런싱을 할때 사용한다.
- hostnamectl
- xen이라는 버츄얼머신을 만든다.
-
보안 그룹을 잘 이해하는것이 중요
- web이라는 보안그룹이라는 소스로 허용해서 그곳에서 들어오는 트래픽만 허용하겠다는 뜻임
-
ELB
- L4
- 2,3개의 같은 서버를 두고 부하 분산을 시켜줌 서비스를 멈추지 않게함.
- 헬스체크를 계속하다가 다른쪽으로 몰아줌
- failover 부하분산 로드밸런싱
- 피지컬, 데이터링크, 트랜스포트레이어, 네트워크레이어가 로드밸런싱 해준다.
- L7
- 애플리케이션단에서 로드밸런싱 해주는 기능을 제공해준다.
- L4
-
오토스케일링 : 수평적
- 현실적으로 기계적으로 바꿔야 하기때문에 불가능함 클라우드의 장점
- 스케일 아웃 :똑같은 인스턴스를 늘리는것 맥시멈 몇개까지 셋팅 그 사양을 못넘음 임계치에 따라서 3대의 그룹을 맺어서 CPU사용량의 평균을 낸다. 어느 선을 넘으면 하나를 더 만들게 되고, 그러면 또 하나 만든다.
- 스케일 인 : 시간이 지나서 CPU 쉬는게 늘어나면 인스턴스를 삭제
-
리소스 업그레이드 하는것 : 수직적
- 스케일 업
- 스케일 다운
-
aws elb
-
aws elb -> 쿱에서는 elb를 k8s ingress
- nginx 프록시
- application loadbalancer url 따라 api단에 요청을 한다.
- pc로 따지면 최상위 레이어 패킷을 따져서 분석을해서 보낸다.
- nginx 프록시
-
alb -> 패킷을 분석 -> 크롬 사용자가 가는 서버(인스턴스)로 보내버린다 , IE는 IE
- content switch 라고도 부름
- f5.com
- 하지만 엔진엑스는 못한다.
- 그래서 쿱은 못한다.
-
프론트엔드 : 익스터널
-
백엔드 : 인터널
-
로드밸런서가 만들어질때 백엔드쪽에 헬스체크 한다. HTTP 경우 실제로 경로에 체크를 계속 한다. 200OK가 떨어져야 한다. 그래야 살아있다고 느낀다,.
-
TCP같은 경우 PING같은거라고 치면 인스턴스 받아서 준다. 핑에대한 센토스 에 대한 TCP가 살아있어서 준다. PING은 응답을 줬기때문에 살아있지만 웹서비스가 죽어있을 경우 잘된다고 판단 할 수 있다.
주기적으로 HTTP로 접속을 해보는 것이다.
기본적으로 HTTP로 한다. -
응답시간 초과 5초안에 안오면 실패다.
-
30초 간격으로 보낸다.
-
2번동안 없으면 죽은거라고 생각한다.
-
죽은 다음에도 30초 간격으로 신호를 준다.
-
신호가 10번이 성공해야 한다.
-
디폴트값은 보통 안건들인다.
'AWS' 카테고리의 다른 글
AWS IAM Role 이란? (0) | 2021.03.04 |
---|---|
우리는 인프라 환경을 어떻게 구축해야 하는가? - AWS 상담편 (0) | 2020.11.23 |
AWS완전관리형서비스를 이용한 도커 및 쿠버네티스 개발환경구축과정 - 4주차 (0) | 2020.08.29 |
AWS완전관리형서비스를 이용한 도커 및 쿠버네티스 개발환경구축과정 - 3주차 (0) | 2020.08.22 |
AWS완전관리형서비스를 이용한 도커 및 쿠버네티스 개발환경구축과정 - 1주차 (0) | 2020.08.08 |