로드발란서 (LB) 에 대한 정리
리눅스/OpenStack2018. 1. 25. 17:18
반응형
프로토콜 방식
1) TCP, HTTPS
- 클라이언트 IP 가 남지 않고, LB 서버의 사설IP 가 남게 됨
- round-robin 의 경우 IP 변경이 잘 안됨
- 헬스 체크 방식 : 포트 / 웹서버에 헬스체크 로그 남지 않음
2) HTTP
- 클라이언트 IP 가 서버 로그에 남게 됨 (아래 설정 필요)
- round-robin 의 경우 IP 변경이 잘 됨
- 헬스 체크 방식 : 모니터링 페이지 / 웹서버에 헬스체크 로그 남음
* HTTP 로 하였다 하더라도 아파치 웹서버에서 'X-Forwarded-For' 설정을 통해야 클라이언트 IP 로 남길 수 있습니다.
# vi /usr/local/apache/conf/httpd.conf
LoadModule remoteip_module modules/mod_remoteip.so LogFormat "%h %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" X-Forwarded-For CustomLog /usr/local/apache/logs/sysdocu.tistory.com-xforwarded.log X-Forwarded-For |
* %h 가 리모트 IP 입니다.
* SSL 을 사용하려면 TCP 를 이용해야 합니다.
(로드발란서에서 443 인증서를 설치하고, 웹서버의 80번 포트로 연결시키면 됩니다)
* 웹서버 로그에는 IP 가 잘 찍히는 데 소스상에서 출력되지 않는다면 두가지 방법중 하나를 사용하면 됩니다.
1) 웹서버에서 설정할 경우
httpd.conf 에 아래 옵션 추가
RemoteIPHeader X-Forwarded-For
2) 웹소스에서 설정할 경우
function get_client_ip() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR'); else $ipaddress = 'UNKNOWN'; return $ipaddress; } echo get_client_ip(); |
반응형
'리눅스 > OpenStack' 카테고리의 다른 글
[에러] Exception during message handling: Timed out during operation: cannot acquire state change lock (0) | 2018.02.20 |
---|---|
VM 사설 아이피 잡히지 않을 경우 (0) | 2018.02.12 |
qemu-img 명령으로 사용하는 이미지 원본 파일 확인 (0) | 2018.01.24 |
nova VM 또는 cinder Volume 상태를 임의로 변경하기 (0) | 2018.01.24 |
VM name 변경하기 (0) | 2018.01.15 |
댓글()