728x90
클라이언트는 서버와 전달하는 것이 아니라 중간에 대리자와 대화하는 것을 프록시
클라이언트 - 프록시 - 서버
프록시가 서버가 여러개 있을 때 포트번호로 포트번호에 맞게 전달해줌
이전 시간
\ → \.(jsp)$
정규표현식에 문제가 생겼기 때문이다.
.을 제대로 표현하기 위해서는 \를 붙혀주어야함. → \.
$ : .jsp로 끝나는 것
※index.jsp 호출시 web2의 /user/share/tomcat/webapps/ROOT/index.jsp가 호출됨
따라서 원하는 내용을 첫 화면으로 보여주고 싶다면 위의 파일 수정 또는 교
0105 - [ AWS EC2(nginx)를 활용한 Reverse-Proxy ].txt
0.01MB
haproxy를 통한 로드밸런싱
로드(load) : 부하 = 일을 얼마만큼 많이하는지
로드밸런싱 : 부하가 하는 일을 맞춰준다.
AWS에서는 ELB라는 로드밸런싱을 지원
ELB는 논리적인 가상의 로드밸런서이고, 물리적으로 동작 시에는 L4 스위치를 사용
L4 스위치 대신 물리적인 서버를 이용해서 로드밸런싱을 구현할 수 있다.
사용되는 서비스는 haproxy(고가용성 프록시).
필요 요소
HAProxy
web1(apache)
web2(tomcat)
HAProxy
- 인스턴스 생성(기억안나면 앞 내용 참고)
- 원격 터미널 접속(MobaXterm)
- haproxy 패키지 설치
sudo yum update -y (업데이트 확인)
sudo yum install -y haproxy (haproxy 패키지 설치) - 설정 파일 백업
sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.org
(기존 haproxy.cfg 파일을 haproxy.cfg.org 이름으로 같은 디렉토리 내에 복사)
sudo ls /etc/haproxy/
haproxy.cfg haproxy.cfg.org - 설정 파일 수정
sudo vi /etc/haproxy/haproxy.cfg
========================================================
#전역 설정 세션, 로깅, 최대 연결 수, 사용자 및 그룹 설정 등을 할 수 있음
:set nu
26번 라인 log 127.0.0.1 local2 info
#Severity Level(심각도)
# emerg -> alert -> cirt -> err -> warning -> notice -> info -> debug
#haproxy 프로세스의 root 디렉토리를 지정 : 28번라인
#haproxy 프로세스의 PID 파일 위치를 지정 : 29번 라인
#최대 연결 수를 지정(4000) : 30번 라인
#haproxy 프로세스가 사용할 사용자 및 그룹을 설정 : 31~32번 라인
#백그라운드(데몬)에서 실행되도록 설정 : 33번 라인
#기본 설정, 섹션, 기본적인 행동 및 타임아웃 등을 정의 : 43번 라인
#전역 로그 설정을 사용 : 44번 라인
#HTTP 요청 및 응답에 대한 로그를 사용 : 45번 라인
#빈 요청은 로깅하지 않도록 설정 : 46번 라인
#클라이언트와 서버 간 연결 종료 관리 : 47번 라인
#127.0.0/8을 제외한 주소에서는 X-Forwarded-For 헤더를 추가 : 48번 라인
※8의 의미는 127
#서버 장애 시 다른 서버로 트래픽을 재분배함 : 49번 라인
#기본 타임아웃 설정, 재시도 횟수를 3으로 설정 : 50~51번 라인
#여러 상황에서의 타임아웃 설정(HTTP 요청, 연결대기, 클라이언트 서버, HTTP Keep-Alive, 체크 등) :
52번 라인~57번 라인
#기본 최대 연결 수 설정(3000) : 58번 라인
#main이라는 이름의 프론트엔드를 정의하고 포트 5000번에서 들어오는 모든 트래픽을 처리 : 61번 라인 이후
64번 라인 bind *:80 (기본적으로 80번은 listen한다.)
#URL경로가 -i 뒤의 단어로 시작하는지 학인하는 ACL을 정의 : 65번 라인
#URL 경로가 여러 확장자로 끝나는지 확인하는 ACL을 정의 : 66번 라인
#ACL에 따라 정적 컨텐츠를 처리하는 백엔드 'static'을 사용 : 68번 라인
#그렇지 않은 모든 경우에는 'app' 백엔드를 기본값으로 사용 : 69번 라인
70번 라인 option forwardfor
#정적 컨텐츠를 처리하기 위한 백엔드 정의 : 72번 라인 이후
#서버 간 부하 분산 방식을 순환(Round Robin) 방식으로 설정 : 75번 라인
#이름이 'static'인 서버를 127.0.0.1의 4331 포트에서 실행되고 있는 것으로 설정, 상태 체크를 위해 'check'를 사용
: 76번 라인
인스턴스 생성(web1, web2)
#애플리케이션 처리하기 위한 백엔드를 정의 : 80번 라인 이후
server app1 → server www1 web1의 IPv4주소 check
server app2 → server www2 web2의 IPv4주소 check
server app3, serverapp4 삭제
82 backend app
83 balance roundrobin
84 server www1 15.164.230.90:80 check
85 server www2 3.39.239.64:80 check
======================================================== - haproxy 동작
sudo systemctl start haproxy - haproxy enable 설정
sudo systemctl enable haproxy - rsyslog 에 haproxy log 설정
sudo vi /etc/rsyslog.conf
========================================================
15번 라인 주석 해제 : $ModLoad imudp
16번 라인 주석 해제 : $UDPServerRun 514
17번 라인 추가 : $AllowedSender UDP, 127.0.0.1
54번 라인 수정 : *.info;mail.none;authpriv.none;cron.none,local2.none /var/log/messages
75번 라인 추가 : local2.* /var/log/haproxy.log
========================================================
esc :wq - rsyslog 재시작
sudo systemctl restart rsyslog - web1, web2 인스턴스 설정
web1, web2 서버에 아파치 설치 및 설정
sudo yum update -y
sudo yum install httpd -y
sudo systemctl start httpd
sudo systemctl enable httpd
sudo vi /etc/httpd/conf/httpd.conf
========================================================
196번 라인
LogFormat "\"%{X-Forwarded-For}i\" %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent} i\"" combined
========================================================
esc :wq
sudo systemctl restart httpd
sudo vi /var/www/html/index.html
========================================================
web1 - web1 test page
web2 - web2 test page
========================================================
esc :wq - haproxy 서버 frontend 추가 설정
sudo vi /etc/haproxy/haproxy.cfg
========================================================
64번 라인 엔터 후 65번 라인 이후에
stats enable
stats auth admin:adminpassword
stats hide-version
stats show-node
stats refresh 30s
stats uri /haproxy?stats
추가
========================================================
esc :wq - haproxy 재시작
sudo systemctl restart haproxy
========================================================
Message from syslogd@localhost at Jan 12 07:32:16 ...
haproxy[32615]: backend static has no server available!
======================================================== - 윈도우 웹 브라우저에서 haproxy IPv4 입력
새로고침 → web1, web2 내용이 변경되는 것이 반복
Client -> HAProxy -> virtual Switch-www1, www2, www3
여유로운 쪽에 로드를 보내준다.
HAProxy가 어디로 보내줄지 정해준다.proxy 대시보드 보기 - haproxy주소/haproxy?stats
haproxy IP/haproxy?stats
->로그인 admin/adminpassword
-> Statistics(통계) report 대시보드가 보
여기서 판단을 해서 보내줌
728x90
'KDT > Cloud' 카테고리의 다른 글
240124 Cloud (0) | 2024.01.24 |
---|---|
240119 Cloud (0) | 2024.01.19 |
240105 Cloud (0) | 2024.01.05 |
231229 Cloud (0) | 2023.12.29 |
231222 Cloud (0) | 2023.12.22 |