-
서버 이중화 (1) - 재난 복구 / 웹서버 이중화로 미러사이트 실습하기환경 구축 2024. 5. 11. 01:58
서버 이중화 / 부하 분산

위의 그림은 웹브라우저가 웹을 요청할 때의 구조이다.
웹 브라우저에서 주소(ip)를 입력하면 웹서버가 요청을 받고, 웹서버는 DB 서버에 데이터를 요청해 불러온다.
그런데, 웹서버를 요청하는 브라우저가 10개 20개 1000개로 늘어나면 어떤 일이 일어날까?
또는 요청한 서버에 문제가 생긴다면?
이런 문제에 대응하기 위해 똑같은 서버를 여러로 만드는 서버 '이중화'를 하고, 이를 통해 서버의 부하를 분산시켜 부담을 줄여준다.
서버 이중화 솔루션
재난복구
재난복구 솔루션에는 여러가지 방법이 있는데, 대표적인 두가지가 있다.
Active - Active (미러 사이트 시스템)
여러 서버를 모두 active(서비스 실행중인) 상태로 유지하고, 로드밸런서라고하는 장비가 앞단에서 트래픽을 받으면 그 트래픽을 2개의 서버에 균일하게 나누어주고, 2개의 서버가 전달받은 요청들을 처리하게 된다. 쉽게 말해 클라이언트는 로드밸런서에 요청을 하면, 로드밸런서는 관리하는 서버 중 부하가 적은 서버를 클라이언트에 연결해주는 중재자 역할을 하는 것이다.
Active - Standby (핫 사이트 시스템)
반면, "active-standby" 는 말 그대로 하나의 서버가 대기(standby) 상태에 있음을 뜻한다. 아키텍쳐 상 로드밸런서와 2개의 서버로 구성되는 것은 "active-active"와 동일하지만, 하나의 서버는 서비스 되지 않고 대기하며 하나의 서버로만 트래픽을 처리한다.
실습 - haproxy로 웹 서버 이중화(미러사이트) 실습해보기
하나의 로드밸런서와 두 개의 웹서버를 만들어, 미러 사이트 방식으로 브라우저가 웹서버를 요청했을 때 서버가 분산되는 것을 직접 확인해볼 것이다. 로드밸런서는 haproxy로, 웹서버는 nginx로 구현할 것이다.

1. 사전 준비 : 3대의 가상 컴퓨터를 만들고 ip 설정을 해준다.
ip 설정 후 모든 컴퓨터에서 방화벽 끄기
# 방화벽 끄는 법 setenforce 0 systemctl stop firewalld2. 웹 서버 2개 구축하기
1) nginx 설치
두 대의 컴퓨터에 ngingx를 설치
yum install -y nginx2) 서버가 분산되는 것을 쉽게 확인하기 위해 웹서버의 index.html을 수정한다.
vi /usr/share/nginx/html/index.html #안에 있는 내용 전부 삭제 #web1 또는 web2 라고 작성3) 웹서버 실행해보기
systemctl restart nginx=> 웹 브라우저에 [웹서버 주소]:80 입력해 접속하면 수정한 내용(web1, web2)이 보인다.
3. 로드 밸런서 구현
1) haproxy 설치
yum install -y haproxy2) haproxy 설정 파일
# 1. 해당 파일 편집모드로 들어가기 vi /etc/haproxy/haproxy.cfg # 2. 63번 밑에 내용은 전부 삭제하기 # 3. haproxy 설정 listen stats bind :9000 # haproxy 패널 프로그램을 9000번 포트에 연결 stats enable stats realm Haproxy\ Statistics stats uri /haproxy_stats # 4. 연결할 서버 설정 listen http bind :80 # 80번 포트로 들어오면 나한테 연결된 서버로 접속시켜줄게! mode http balance roundrobin # 라운드로빈 방식을 사용해 서버를 돌릴거야 option httpchk GET /index.html # 연결할 서버는 이거야! server web1 [웹서버1 ip 주소]:80 check server web2 [웹서버2 ip 주소]:80 check3) haproxy 실행 및 확인
# 항상 파일을 수정하면 해당 파일을 가지고 있는 프로그램을 재실행 해야 한다. systemctl restart haproxy #haproxy 실행 명령어=> 웹 브라우저에 [haproxy IP 주소]:9000/haproxy_stats 입력하면, haproxy 패널이 나온다.
4. 서버 분산 확인하기
브라우저에 [haproxy ip 주소]:80 를 입력하면 web1(또는 web2)이 나온다. 다른 브라우저창에서도 [haproxy ip 주소]:80 를 입력하면 web2(또는 web1)가 나온다.
'환경 구축' 카테고리의 다른 글
서버 이중화(6) - Clustering 클러스터링 / Galera (1) 2024.05.29 서버 이중화(5) - DB 서버에 HAproxy 연결하기 (2) 2024.05.28 서버 이중화(4) - DB서버로 핫사이트 실습해보기 / Keepalived / Virtual IP (3) 2024.05.16 서버 이중화(3) - 핫 사이트란? / master<->slave 데이터 동기화 (0) 2024.05.14 서버 이중화 (2) - 데이터 베이스 이중화 / Master-Slave (0) 2024.05.14