[AWS] EC2 로드밸런스 서버 설정
ELB에 EC2 부하분산 설정하기
EC2 부하분산의 설정의 순서는 다음과 같습니다.
- 대상을 설정한다 (EC2 > 로드 밸런싱 > 대상그룹)
- 로드밸런스를 설정 한다. (EC2 > 로드 밸런싱 > 로드밸런서)
대상 그룹이 하는일
기본 구성에 대한 헬스체크(장애확인)를 하기 위한 것입니다.
1단계(설정: 세부 정보 지정)
- 기본구성: 인스턴스, 람다, IP 주소등이 있는데. 일반적인 EC2를 위한 것이면 '인스턴스' 선택
- "대상그룹 이름"을 정해줄때는 알기 쉽도록 서비스-프로토콜과 관련된것을 사용합니다.
- VPC 선택은 대상이 되는 장비와 같은것을 선택
- 프로토콜 버전은 HTTP의 경우는 HTTP1을 선택, SSL 이면 HTTP2를 선택
(위에서 SSL은 https를 말하며 웹서버 설정이 되어 있어야 합니다.) - 상태검사 경로: 웹서버의 디폴트 호스트로 접속을 하게 됩니다.
그리고 경로는 루트로 해도 되지만. 일반적으로 아주 작은 사이즈의 이미지를 사용 합니다.
이유는 "200 OK" 결과만 나오면 되기 때문 입니다.
예를 들면: /elbcheck/chk.png
2 단계(대상 인스턴스 추가)
- 위쪽에 사용가능 인스턴스 목록이 뜨는데 이곳에 있는것을 선택 하여 추가
- 아래쪽에 추가 잘 되었는지 확인 하고 "대상 그룹 생성" 버튼을 클릭 합니다.
로드밸런서 추가
일반적인 웹사이트는 80,443 포트만 있으면 되기 때문에 "Application Load Balancer"를 선택 합니다.
- "로드 밸런서 이름"은 서비스와 관련된 것을 사용 합니다.
- 외부에서 접속이 되어야 하면 "인터넷 경계"를 선택
- IP유형은 현재 "IPv4" 입니다. 6버전을 사용하시는 분은 해당 하는것 선택
- 네트워크 매핑에서 VPC는 "대상 그룹"에 등록된것과 같은것을 선택 합니다.
- 매핑 부분은 선택 하는것 모두 선택 하고 서브넷을 외부에서 접속해야 한다면 public 선택 합니다.
- "리스너 및 라우팅"에서 위에 먼저 등록한 "대상 그룹"의 것을 선택 합니다.
X-Forwarded-For 허용
아파치 웹서버의 경우 아래 파일에서 로그 포맷을 변경해 줄 수 있습니다.
아래 경로는 AL2(아마존리눅스2) 설치 했을때 이며 설치 방법에 따라 위치는 약간 달라 질 수 있습니다.
/etc/httpd/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{Host}i\" %T \"%{X-Forwarded-For}i\"" newformat
위 포맷은 아래와 같이 남게 됩니다.
두번째 라인은 SSL로 접속을 하였을 경우
3.23.31.21 - - [31/Aug/2023:21:21:28 +0900] "GET / HTTP/1.1" 200 1211 "Referer" "UserAgent" "15.165.201.218:80" 0 "test.com" "오리진IP"
3.23.31.21 - - [31/Aug/2023:21:21:28 +0900] "GET / HTTP/2.0" 200 1211 "Referer" "UserAgent" "15.165.201.218:80" 0 "test.com" "오리진IP"
* 클라우드프론트(CDN) + ELB 연동시 유저IP
- [AWS] 클라우드프론트 + 로드밸런스 + EC2 연동시 사용자IP > AWS.클라우드