시스템 아키텍처
아키텍처 : 서버들을 어떻게 구성하고 서버들 간의 관계를 설명하는 설계도
3계층 아키텍처 (3 tier 아키텍처)
웹 서버 (프론트엔드)
- 웹 서비스를 제공하는 프로그램
- 서버 컴퓨터에 저장된 파일을 클라이언트가 다운로드할 수 있게 해준다.
- 웹 서버에 있던 코드는 웹 서버에서 실행되지 않고, 그냥 웹으로 보내기만 함
웹 어플리케이션 서버 (WAS, 백엔드)
- 웹으로 동작하긴 하는데(http 프로토콜을 사용하는데), 어플리케이션 서버다.
- 서버 컴퓨터에 저장된 파일을 클라이언트가 요청하면 파일을 실행하고 실행된 결과만 보내준다.
DB 서버
웹 클라이언트(웹 브라우저)
- URL을 이용해서 서버에게 특정 파일을 달라고 요청하고 서버로부터 받은 파일을 화면에 보여준다.
프론트와 백을 나누는 기준
: 누구의 컴퓨터에서 코드가 실행되는가
- 프론트엔드 : 클라이언트 컴퓨터에서 실행되는 코드
- 백엔드 : 서버 컴퓨터에서 실행되는 코드
부하 분산 실습 (HAProxy)
0. 관리자 로그인sudo su - root
1. IP 설정
vi /etc/netplan/00-installer-config.yaml
network:
renderer: networkd
ethernets:
ens33:
addresses:
- 10.10.10.100/24
nameservers:
addresses: \[8.8.8.8\]
routes:
- to: default
via: 10.10.10.2
version: 2
2. IP 설정 적용netplan apply
3. 레포지토리 목록 갱신apt update
4. HAProxy 설치apt install haproxy
5. HAProxy 실행systemctl restart haproxy
6. HAProxy 설정vi /etc/haproxy/haproxy.cfg
맨 마지막 줄에 다음 내용 추가
listen stats
bind \*:9000
mode http
option dontlog-normal
stats enable
stats realm Haproxy\\ Statistics
stats uri /stats
7. HAProxy 설정 적용systemctl restart haproxy
8. HAProxy 실행 확인systemctl status haproxy
apt install -y net-tools
netstat -anlp | grep :9000
윈도우에서 웹 브라우저로 HAProxy 서버의 IP에 9000 포트의 /stats로 접속
http://10.10.10.100:9000/stats
9. HAProxy에 웹 서버 부하분산 설정 추가vi /etc/haproxy/haproxy.cfg
맨 마지막 줄에 다음 내용 추가
frontend webserver
bind \*:80
mode http
default\_backend nginx-server
backend nginx-server
mode http
balance roundrobin
option httpchk GET /
server nginx1 10.10.10.10:80 check
server nginx2 10.10.10.20:80 check
bind => 80 포트로 연결 (nginx가 80포트 사용하기 때문에 만약 nginx 실행 중이라면 systemctl stop nginx 로 꺼주기)
server nginx1 => 웹 서버 1의 IP 주소
server nginx2 => 웹 서버 2의 IP 주소
10. HAProxy 설정 적용systemctl restart haproxy
11. HAProxy 실행 확인systemctl status haproxy
netstat -anlp | grep :9000
윈도우에서 웹 브라우저로 HAProxy 서버의 IP에 9000 포트의 /stats로 접속
http://10.10.10.100:9000/stats
각 nginx 서버에 html 파일을 만들고,
http://10.10.10.100:80/abc.html
하면 새로고침 할 때마다 왔다갔다 하면서 서버 두 개가 실행됨
'CS' 카테고리의 다른 글
형상관리 (0) | 2024.11.25 |
---|---|
웹 서버, 웹 어플리케이션 서버(WAS), DB 서버 연동 실습 (0) | 2024.11.25 |
[네트워크] HTTP 프로토콜 / 암호화, 복호화 (2) | 2024.11.22 |
[네트워크] DNS 서버, 포트 포워딩, 웹 서버 nginx (0) | 2024.11.21 |
[네트워크] IP 주소, 서브넷 마스크 / 네트워크 설정 (0) | 2024.11.21 |