기술나눔

Haproxy는 웹 클러스터를 구축합니다.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1: 사례 분석

1: 사례 개요

2: 사전 사례 지식

3: 케이스 환경

2: 사례 구현

1: nginx 서버 컴파일 및 설치(두 nginx 웹사이트의 단계는 정확히 동일하며 테스트 페이지만 다릅니다)

[root@localhost ~]# yum -y pcre-devel zlib-devel gcc*를 설치하세요

[root@localhost ~]# useradd -M -s /sbin/nologin nginx

[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz

[루트@로컬호스트 ~]# cd nginx-1.12.0/

[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[root@localhost nginx-1.12.0]# make && make install

[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html/0

[root@localhost html]# echo "test web01" > test.html

[root@localhost ~]# systemctl 방화벽 중지

[root@localhost ~]# nginx -t

[root@localhost ~]# nginx ##nginx 프로세스 시작

[root@localhost ~]# netstat -anpt | grep nginx

2: Haproxy 컴파일 및 설치

[root@localhost ~]# systemctl 방화벽 중지

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y 설치 pcre-devel bzip2-devel gcc*

[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz

[루트@로컬호스트 ~]# cd haproxy-1.5.19/

[root@localhost haproxy-1.5.19]# TARGET=linux26을 만듭니다.

[root@localhost haproxy-1.5.19]# 설치하기

메모:

리눅스 2.2용 linux22

Linux 2.4 이상의 경우 linux24(기본값)

Linux 2.4용 linux24e는 작동 중인 epoll을 지원합니다(> 0.21)

Linux 2.6 이상용 linux26

Solaris 8 또는 10용 solaris(기타는 테스트되지 않음)

FreeBSD 5~8.0용 freebsd(기타는 테스트되지 않음)

OpenBSD 3.1~4.6용 openbsd(기타는 테스트되지 않음)

Cygwin을 위한 cygwin

다른 모든 OS에서는 일반적입니다.

모든 설정을 수동으로 조정하는 사용자 정의

3: Haproxy 서버 구성

(1) haproxy 구성 파일 생성

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy

[root@localhost haproxy-1.5.19]# cp 예제/haproxy.cfg /etc/haproxy/

(2) 서비스 스크립트 생성

[root@localhost haproxy-1.5.19]# cp 예제/haproxy.init /etc/init.d/haproxy

[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy

[root@localhost ~]# chkconfig --haproxy 추가

(3) Haproxy 구성 소개

[root@localhost haproxy-1.5.19]# vi /etc/haproxy/haproxy.cfg

글로벌

로그 127.0.0.1 local0

log 127.0.0.1 local1 알림

#log loghost local0 정보

맥스콘 4096

유 이드 99

기드 99

악마

#디버그

#조용한

기본값

글로벌 로그

모드 http

옵션 httplog

옵션 dontlognull

재시도 3

# 재발송

맥스콘 2000

컨타임아웃 5000

클라이타임아웃 50000

srv타임아웃 50000

듣기 웹클러스터 0.0.0.0:80

옵션 httpchk GET /index.html

밸런스 라운드 로빈

서버 inst1 192.168.1.61:80 inter 2000 fall 3 확인

서버 inst2 192.168.1.62:80 inter 2000 fall 3 확인

각 서버 뒤에 가중치를 추가하여 가중치 값을 설정할 수 있습니다.

서버 inst1 192.168.1.61:80 inter 2000 fall 3 확인무게 1

서버 inst2 192.168.1.62:80 inter 2000 fall 3 확인무게 2

각 진술에 대한 설명

글로벌

로그 127.0.0.1 local0 \로깅 구성,로컬0로그 장치이며 기본값은 시스템 로그입니다.

log 127.0.0.1 local1 알림 \로그 수준은알아채다

#log loghost local0 정보

맥스콘 4096 \최대 연결 수

UID 99 \사용자액체

기드 99 \사용자기드

데몬 \데몬 프로세스로 실행

#디버그 \디버그 모드, 시작 정보를 표준 출력으로 출력

#조용한 \자동 모드, 시작 시 출력 없음

기본값

로그 글로벌 \사용글로블다음에 정의된 로그

모드 http \모드는http

옵션 httplog \사용http로깅 형식

옵션 dontlognull \보장하다하프록시상태 데이터를 감지하기 위해 상위 로드 밸런서가 보낸 하트비트 패킷을 기록하지 마세요.

재시도 3 \초과된 노드 연결 실패 횟수를 확인합니다.3노드를 사용할 수 없는 것으로 간주됩니다.

  # 재발송\로드할 때값이 매우 높으면 현재 대기열에서 오랫동안 처리된 연결이 자동으로 종료됩니다.

맥스콘 2000 \최대 연결 수

시간 초과 5000 \접속 시간 초과미시시피

클라이타임아웃 50000클라이언트 시간 초과미시시피

srv타임아웃 50000서버 시간 초과미시시피

듣기 웹클러스터 0.0.0.0:80 \클러스터 및 수신 포트 번호 정의

옵션 httpchk GET /index.html \서버의 상태를 확인하세요인덱스.html문서,하트비트 감지 URL 설정

밸런스 라운드 로빈 \로드 밸런싱 스케줄링 알고리즘은 라운드 로빈입니다.

서버 inst1 192.168.1.61:80 inter 2000 fall 3 확인 \온라인 노드 정의

서버 inst2 192.168.1.62:80 inter 2000 fall 3 확인

인터2000 체크심장 박동 빈도를 감지하는 것입니다(매2000밀리초한 번 감지됨),가을 33장애 발생 시 서버를 사용할 수 없는 것으로 간주됩니다.

새 버전에서는 시간 초과 설정이 다음과 같이 조정되었습니다.

contimeout은 timeout connect로 대체됩니다.haproxy가 클라이언트 요청을 백엔드 서버로 전달할 때까지 기다리는 시간 초과 기간을 정의합니다.

clitimeout은 timeout 클라이언트로 대체됩니다.클라이언트 비활성에 대한 시간 초과 기간은 앱이 haproxy에 연결하는 데 걸리는 시간입니다.

srvtimeout은 시간 초과 서버로 대체됩니다.클라이언트가 서버와 연결을 설정한 후 서버를 기다리는 시간 초과 기간은 haproxy가 백엔드 웹 서버에 연결하는 데 걸리는 시간입니다.

메모:

하프록시8개의 스케줄링 알고리즘이 있습니다

    1. 균형 최소콘최소 연결 수
    2. 밸런스 라운드 로빈투표
    3. 균형 소스클라이언트에 따르면아이피(IP)해싱을 수행하는 방법
    4. 정적-rr무게에 따라
    5. 우리요청에 따라우리말
    6. url_매개변수요청에 따라우르매개변수
    7. hdr(이름)~에 따르면HTTP매번 헤더를 잠그도록 요청HTTP묻다
    8. rdp-쿠키(이름)~에 따르면쿠키(이름)매번 잠그고 해시하려면티에스테르묻다

루트 /usr/share/haproxy \즉, 프로그램 실행 시 참조되는 루트 디렉터리 위치를 변경하는 것입니다. 이 코드가 있으면 이 디렉터리를 생성해야 합니다.

로그 수준 정보

정적 레벨 DEBUG

DEBUG Level은 세분화된 정보 이벤트가 애플리케이션 디버깅에 매우 유용하다고 지적합니다.

정적 레벨 INFO

INFO 수준은 메시지가 대략적인 수준에서 애플리케이션의 실행 프로세스를 강조한다는 것을 나타냅니다.

정적 레벨 WARN

WARN 수준은 잠재적인 오류 상황을 나타냅니다.

정적 레벨 오류

ERROR 레벨은 오류 이벤트가 발생하더라도 시스템의 지속적인 작동에 영향을 미치지 않음을 나타냅니다.

정적 레벨 치명적

FATAL 수준은 심각한 오류가 발생할 때마다 애플리케이션이 종료됨을 나타냅니다.

또한 다음과 같은 두 가지 특수 로깅 수준을 사용할 수 있습니다.

정적 레벨 ALL

ALL 레벨은 가장 낮은 레벨로 모든 로깅을 활성화하는 데 사용됩니다.

정적 레벨 OFF

OFF 레벨은 ​​가장 높은 레벨로 모든 로깅을 끄는 데 사용됩니다.

4: 시작

[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy 시작

5: 웹 클러스터 테스트

http://192.168.1.60/테스트.html

테스트하려면 페이지를 새로 고치세요.

또는 스크립트를 사용하여 테스트

[root@localhost ~]# for i in $(seq 10); do curl http://192.168.1.60/test.html ;done

6: 하프록시 로그

Haproxy는 기본적으로 로그를 기록하지 않습니다. haproxy.conf의 전역 섹션에 로그 출력을 지정하는 것 외에도 시스템 로그 구성 파일도 구성해야 합니다.

방법 1:

[root@localhost haproxy-1.4.24]# vi /etc/haproxy/haproxy.cfg

글로벌

# 로그 127.0.0.1 local0

# log 127.0.0.1 local1 알림

#log loghost local0 정보

맥스콘 4096

chroot /usr/share/haproxy

유 이드 99

기드 99

악마

#디버그

#조용한

log /dev/log local0 정보

log /dev/log local0 알림

[root@localhost haproxy-1.4.24]# /etc/rsyslog.d/haproxy.conf를 터치하세요.

[root@localhost haproxy-1.4.24]# vi /etc/rsyslog.d/haproxy.conf

if ($programname == 'haproxy' and $syslogseverity-text == 'info') then -/var/log/haproxy/haproxy-info.log

& ~

if ($programname == 'haproxy' and $syslogseverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log

& ~

[root@localhost haproxy-1.4.24]# 서비스 rsyslog 재시작

[root@localhost ~]#/etc/init.d/haproxy 재시작

[root@localhost ~]# cat /var/log/haproxy/haproxy-info.log

방법 2:

(1) /etc/haproxy/haproxy.conf를 편집합니다.

[root@localhost ~]# vi /etc/haproxy/haproxy.cfg

글로벌

로그 127.0.0.1 local3

#local3은 /etc/rsyslog.conf의 구성에 해당하는 장치이며, info의 로그 수준은 기본적으로 재활용됩니다.

(2) haproxy 로그 파일 작성

[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf

$ModLoad imudp

UDP서버 실행 514

로컬3.* /var/log/haproxy.log

&~

메모:

$ModLoad imudp로그 수집을 위한 프로토콜 UDP

UDP서버 실행 514로그 수집에 사용되는 포트 번호를 지정합니다.

로컬3.* /var/log/haproxy.log로그 저장 위치 지정

(3) rsyslog의 기본 구성 파일을 구성하고 원격 로깅을 활성화합니다(선택 사항).

[root@localhost ~]# vim /etc/sysconfig/rsyslog

SYSLOGD_OPTIONS=”-c 2 -r -m 0″

#-c 2 호환 모드를 사용합니다. 기본값은 -c 5입니다.

#-r 원격 로깅 활성화

#-m 0 마크 타임스탬프.단위는 분입니다. 0일 경우 해당 기능이 비활성화됨을 의미합니다.

(4) haproxy 및 rsyslog 서비스를 다시 시작합니다.

[root@localhost ~]# systemctl 재시작 rsyslog

[root@localhost ~]# systemctl 재시작 haproxy

(5) 홈페이지 접속 후 로그 확인

[root@localhost ~]# cat /var/log/haproxy.log

확장: 프록시 mysql

듣기 mysql 0.0.0.0:3306

서버 mysql1 192.168.10.205:3306 포트 3306 확인 maxconn 300