로드 밸런싱을 달성하기 위해 웹 서버를 구성하는 방법

네트워크 로드 밸런싱은 일부 도구를 사용하여 데이터 패킷을 실시간으로 분석하고 네트워크의 데이터 흐름 상태를 파악하여 합리적이고 균형 잡힌 방식으로 작업을 할당하는 동적 밸런싱 기술입니다. 이 기술은 기존 네트워크 구조를 기반으로 하며 서버 대역폭을 확장하고 서버 처리량을 늘리며 네트워크 데이터 처리 기능을 강화하고 네트워크 유연성과 가용성을 향상시키는 저렴하고 효과적인 방법을 제공합니다.

로드 밸런싱을 달성하기 위해 4개의 서버를 예로 들어 보겠습니다.

LVS 설치 및 구성

1. 설치 전 준비:

( 1) 우선, LVS는 클러스터 내의 서버들이 동일한 사양을 가질 것을 요구하지 않습니다. 반대로, 서버의 다양한 구성과 부하 조건에 따라 부하 분산 전략을 조정하여 각 서버를 최대한 활용할 수 있습니다. 클러스터 환경. 다음 표와 같습니다:

Srv Eth0 Eth0: 0 Eth1 Eth1: 0

vs1 10.0.0.1 10.0.0.2 192.168.10.1 192.168.10.254

vsbak 10.0.0.3 192.168.10.102

real1 192.168.10.100

real2 192.168.10.101

그 중 10.0.0.2는 사용자가 허용하는 IP입니다. 입장.

(2) 이 4개의 서버 중 vs1은 가상 서버(즉, 로드 밸런싱 서버) 역할을 하며 클러스터 내의 real1 및 real2에 사용자 액세스 요청을 전달한 후 real1에서 처리하는 역할을 담당합니다. 그리고 각각 real2입니다.

클라이언트는 모든 운영 체제가 될 수 있는 클라이언트 테스트 시스템입니다.

(3) 모든 OS는 redhat6.2이고 vs1 및 vsbak의 코어는 2.2.19이며 ipvs 패키지가 패치되었으며 모든 실제의 서브넷 마스크는

서버는 24비트, vs1의 10.0.0 및 vsbak입니다.

2. LVS의 관련 용어 이해

(1) ipvsadm: ipvsadm은 LVS의 사용자 인터페이스입니다. 로드 밸런서에서 ipvsadm을 컴파일하고 설치합니다.

(2) 스케줄링 알고리즘: LVS의 로드 밸런서는 다음과 같은 스케줄링 규칙을 갖습니다. rr로 참조되는 라운드 로빈

wrr로 참조되는 라운드 로빈; 각각의 새로운 연결은 각 물리적 서버에 차례로 할당됩니다. lc라고 하는 최소 연결

wlc라고 하는 최소 연결, 각각의 새 연결은 부담이 가장 적은 서버에 할당됩니다.

(3) 영구 클라이언트

pcc라고 하는 연결(영구 클라이언트 연결, 커널 버전 2.2.10 이후에만 지원됨). 동일한 IP의 모든 클라이언트는 항상 동일한 물리적 서버에 연결됩니다. 시간 초과는 360초로 설정됩니다. Pcc는

IP 주소가 동일할 수 있습니다.

(4) 영구 포트

연결 스케줄링 알고리즘: 커널 버전 2.2.12 이후에는 pcc 함수가 하나의 스케줄링 알고리즘에서 변경되었습니다(다른 스케줄링 알고리즘을 선택할 수 있습니다: rr, wrr) , lc, wlc, pcc)는 스위치 옵션으로 발전했습니다(rr,

wrr, lc, wlc에 pcc의 속성을 갖도록 만들 수 있음). 설정 중에 예약 알고리즘을 선택하지 않으면 ipvsadm은 기본적으로 wlc 알고리즘을 사용합니다. 영구 포트

연결(ppc) 알고리즘에서 연결 할당은 포트를 기반으로 합니다. 예를 들어 포트 80과 포트 443에서 동일한 터미널의 요청은 서로 다른 물리적 서버에 할당됩니다.

안타깝게도 웹사이트에서 쿠키를 사용해야 하는 경우 문제가 발생할 수 있습니다. /ipv4/ip_forward

# echo 1 > /proc/sys/net/ipv4/ip_always_defrag

# ipchains -P 전달 MASQ

c. 피라냐를 설정하고 X-window로 들어갑니다(/etc/lvs.cf를 직접 편집할 수도 있습니다)

a).

b) "전역 설정"을 설정합니다. 기본 LVS 서버 호스트 IP: 10.0.0.2, 네트워크 주소 변환 선택(기본값) NAT 경로 이름:

192.168.10.254, NAT 경로 장치 : eth1: 0

c) 가상 서버(Virtual Servers) 설정 가상 서버 섹션을 추가하고 편집합니다: (Virtual

Server) 이름: (임의의 이름을 지정합니다); :.

2. Telnet 테스트: 클라이언트에서 telnet 10.0.0.2를 실행합니다.

로그인 후 다음 출력이 표시되면 클러스터가 작동하기 시작했다는 의미입니다. 게스트 사용자로 로그인되어 있음)

[guest@real1 guest]$——real1 서버에 로그인했음을 나타냅니다.

다른 텔넷 창을 열면 로그인 후 시스템 프롬프트가 다음과 같이 변경됩니다.

[guest@real2 guest]$ - 서버에 로그인했음을 나타냅니다. 진짜2.

3. http 테스트: 클라이언트에서 iexplore http://10.0.0.2 실행

real1과 real2의 테스트 페이지가 다르기 때문에 여러 번 로그인하면 다음과 같습니다. 페이지도 다를 것입니다. 이는 실제 서버가 이미 정상적으로 작동하고 있음을 의미합니다.