다음 서비스를 알아보자.
ELB (탄력적인 로드밸런서)
Route53
1
L7, L4 장비 이다.
SSL Termination 기능 ?
ELB의 SSL Termination 기능을 사용하게 되면 개별 인스턴스에 SSL 인증서를 직접 설치할 필요가 없다.
ELB에 공인 인증서 등록하여, SSL 인증서를 이용해 HTTPS 활용 트래픽 암호화 및 복호화를 지원한다.
리스너 (80,443등)-------------------------대상그룹 (서버들)로 구성된다.
웹서버는 LB를 통해서만 접속되도록 사설IP만 가지도록 한다.
2
종류 4가지 ?
Application Load Balancer 는 L7
Network Load Balancer 는 L4
Gateway Load Balancer
Classic Load Balancer 는 L4 (구 LB , 사용하지 않도록 한다)
3
External-ELB와 Internal-ELB가 있다.
인터넷에서 오는 요청을 받는 External-ELB
VPC Subnet 내부의 요청을 받는 Internal-ELB가 있다.
4
단점?
워밍업이 필요하다.
그래서 갑작스러운 부하 증가에 대해 확장이 늦어질수 있다.
미리 증가 시켜 놓도록 하자.
5
Idle Session ?
클라이언트,서버 쪽도 통신이 없는 상태에서 커넥션 타임아웃을 60초로 설정한다.
시간이 걸리는 작업의 경우는 기본 값을 변경할수 있다.
부하를 줄이기 위해 웹서버에서도 KeepAlive on, keppalive timeout 를 설정이 필요한 경우도 있다.
https://httpd.apache.org/docs/2.2/mod/core.html#keepalivetimeout
https://aws.amazon.com/ko/premiumsupport/knowledge-center/apache-backend-elb/
6
ELB Accesslog저장 ?
S3에 저장할수 있다.
어플리케이션 로드밸런서
기본 설정법
1. EC2 > ALB 설정한다.
ALB설정후 DNS name을 반드시 확인한다.
ALB-407199
2
Route53에 등록한다.
testalb.seokkk.ml 로 한다.
리전 선택한다.
ALB 선택한다.
3
테스트 해본다!!
4
분산 확인
[root@ip-10-2-1-128 ~]# more 5.sh
ALB=My-ALB-407199315.us-east-2.elb.amazonaws.com
for i in {1..20}; do curl $ALB -s -q ; done | sort | uniq -c | sort -nr
[root@ip-10-2-1-128 ~]# chmod 700 5.sh
[root@ip-10-2-1-128 ~]# ./5.sh
// ALB, NLB의 차이는?
1
HTTP, HTTPS
ALB는 라운드 로빈 방식으로 서버에 접속한다.
2대면 50% 50% 접속 함
AWS에서는 ELB Stick 사용하지 않도록 한다.
ELB ---WEB ---ELB--------WAS 구성인 경우
세션에 관한 정보들은 Redis, Memcached 사용 권장한다.
2
ALB, NLB 타켓을 외부서버로 지정 가능하다.
VPC Peering으로 설정된 다른 리전의 서버로도 지정가능하다.
3
외부 방화벽에서 특정 IP만 허용이 필요할떄 ALB 앞단에 NLB를 구축한다.
NLB만 IP를 고정할수 있다.
아키텍처)
사용자---------방화벽 ----------> NLB----------- ALB---------EC2
https://aws.amazon.com/ko/blogs/korea/using-static-ip-addresses-for-application-load-balancers/
4
ALB 보안 그룹을 적용할수 있다.
ALB 세팅시 보안그룹을 지정하도록 되어 있다.
리스너는 사용자가 접속하는 포트이다.
보통 웹서버라 80포트로 지정한다.
5
보안 그룹을 설정한다.
80 , ssh 포함된 보안 그룹을 지정한다.
6
디폴트 라운드 로빈이다.
ALB는 ALB 자신 IP를 전달한다.
웹서버는 ALB 내부 IP가 찍힌다.
요청자 IP를 보내지 않는다.
서버 입장에서 어떤 IP로 접근 했는지 알수 없다.
EC2 서버의 Apache 기본 로그 설정에서 X-Forwarded-For 를 추가하여, 요청자 IP를 확인한다.
https://aws.amazon.com/ko/premiumsupport/knowledge-center/elb-capture-client-ip-addresses/
ALB 자체에는 X-Forwarded-For enable 되어 있다.
7
ALB는 IP가 변한다.
8
타켓 유형이 인스턴스, ip, lambd함수도 가능
9
규칙 편집을 통해 L7기능 구현이 가능하다.
규칙 삽입
10
LOR 알고리즘도 지원
새로운 요청이 수신될 때 로드 밸런서는 미처리 요청이 가장 적은 대상에 해당 요청을 보냅니다
11
요청에 따라 대상그룹에 특정 서버로 가게 할수 있다.
https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/application/introduction.html
12
ALB 실습
1. VPC를 만든다.
2. Public Subnet, Private Sunet을 만든다.
3. ALB는 Public Subnet에 놓는다.
4. EC2는 Private Subnet에 놓는다.
로드 밸런서는 EC2 서비스에 있다.
EC2 > Load Balancers
참고
https://brunch.co.kr/@topasvga/745
https://brunch.co.kr/@topasvga/770
네트워크 로드 밸런서
1
TCP, TLS , UDP
2
짧은 지연시간 -
L4라 좀 빠르다~
대규모 트래픽 처리에 적합하다.
IP가 변하지 않는다.
이를 이용해 IP가 고정되어야 하는 경우 사용한다.
EIP 2개를 받는다.
가용 영역에서 탄력적 IP 선택으로 해서 IP를 지정할수 있다.
AWS에서 할당 대신 , 받은 EIP2개로 매칭해 사용할수 있다.
3
NLB는 보안 그룹 설정하는것이 없다.
보안그룹 적용은 안된다.
따라서, 설정 단계에서 보안그룹 설정은 없다.
4
상태검사는 TCP, HTTP, HTTPS만 지원한다.
5
NLB에서 대상을 인스턴스로 지정하면 요청자 IP 확인가능하다.
tcpdump로 서버에서 확인하면 된다.
6
NLB에서 대상 IP로 등록시 NLB 내부 IP를 찍는다.
클라이언트 IP 확인이 안된다.
NLB는 L4라 안되는 것이다.
가능한 방법은?
Proxy Protocol 활성화해서 사용한다.
웹서버에서 Proxy Protocol 활성화 설정해 확인 가능하다.
7
NLB 속성에서 Crose Zone LB 활성화가 가능하다.
활성화 하면 질의시 Zone을 넘어가서 2개 IP가 질의 된다.
8
https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/network/introduction.html
9
NLB는 IPV6를 지원하기 시작했다.
10
NLB 실습 ?
로드 밸런서는 EC2 서비스에 있다.
EC2 > Load Balancers
인터넷용 internet 로드 밸런서와 Internal 로드 밸런서가 있다.
내부용 Internal 로드 밸런서는 WAS서버에서 DB로 접속 할때 많이 사용한다.
1
DNS 네임서비스 이다.
GSLB 서비스를 한다.
Global Server LoadBlancer 이다.
Route53의 53의 DNS 사용 포트가 53이라 이름이 지정된거 같다 ^^
2
무료 도메인 등록
https://my.freenom.com/domains.php
3
AWS Route53에 가서 해당 도메인 설정을 한다.
4
AWS route53에서 설정후 나온 ns정보를 무료 도메인 등록기관 네임서버로 등록한다.
5
A 레코드 등록후 사용해 본다.
6
Route53 실습
https://brunch.co.kr/@topasvga/89
5주차
https://brunch.co.kr/@topasvga/1336
감사합니다.