Nginx 부하 균형 및 군집 실현
1 환경 준비
호스트 이름
ip
역할.
묘사 하 다.
hadoop101
192.168.88.101
주 Nginx
클 라 이언 트 요청 수신 에 사용
hadoop102
192.168.88.102
Nginx 에서
주 Nginx 가 끊 으 면 주 Nginx 가 클 라 이언 트 요청 을 처리 합 니 다.
hadoop103
192.168.88.103
웹 서버 1
nginx 를 웹 서버 프 록 시 정적 페이지 로 사용 하고 다른 웹 서버 (예 를 들 어 tomcat) 를 사용 할 수 있 습 니 다.
hadoop104
192.168.88.104
웹 서버 2
nginx 를 웹 서버 프 록 시 정적 페이지 로 사용 하고 다른 웹 서버 (예 를 들 어 tomcat) 를 사용 할 수 있 습 니 다.
2 Nginx 부하 균형
hadop 101 과 hadop 102 동작 이 같 습 니 다.
# ,gcc-c++ ,zlib gzip ,openssl ssl,devel
[root@hadoop101 software]# yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
#PCRE Nginx Rewrite
[root@hadoop101 software]# wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
[root@hadoop101 software]# tar -zxvf pcre-8.42.tar.gz
[root@hadoop101 software]# cd pcre-8.42
[root@hadoop101 pcre-8.42]# ./configure
[root@hadoop101 pcre-8.42]# make && make install
[root@hadoop101 pcre-8.42]# pcre-config --version
[root@hadoop101 software]# wget https://nginx.org/download/nginx-1.18.0.tar.gz
[root@hadoop101 software]# tar -xvf nginx-1.18.0.tar.gz
[root@hadoop101 software]# cd nginx-1.18.0
# , ,--with , , --with-
[root@hadoop101 nginx-1.18.0]# cat auto/options | grep YES
# ,prefix ,http_stub_status_module http_ssl_module http https ,with-stream stream ,with-pcre pcre
[root@hadoop101 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/software/pcre-8.42 --with-stream=dynamic
# ( objs ) (--prefix )
[root@hadoop101 nginx-1.18.0]# make && make install
# 、
[root@hadoop101 nginx-1.18.0]# /usr/local/nginx/sbin/nginx -V
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/software/pcre-8.42 --with-stream=dynamic
#
[root@hadoop101 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/opt/software/pcre-8.42 --with-stream=dynamic --with-http_gzip_static_module --with-http_auth_request_module --with-http_realip_module
#
[root@hadoop101 nginx-1.18.0]# make
# nginx copy
[root@hadoop101 nginx-1.18.0]# cp -r /opt/module/nginx-1.18.0/objs/nginx /usr/local/nginx/sbin/
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream web {
ip_hash;
server 192.168.88.103 max_fails=1 fail_timeout=10;
server 192.168.88.104 max_fails=1 fail_timeout=10;
# server 192.168.88.103 weight=1 max_fails=1 fail_timeout=10;
# server 192.168.88.104 weight=2 max_fails=1 fail_timeout=10 backup;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://web;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
부하 균형 프로 세 스: 1) 가상 호스트 가 사용자 요청 을 받 아들 입 니 다. 2) 가상 호스트 가 역방향 프 록 시 를 찾 습 니 다.사용자 요청 6) 데이터 서버 요청 수락 및 처리 요청 7) 데이터 서버 응답 요청 Nginx 8) Nginx 응답 요청 사용자
2.1 부하 균형 전략
nginx 의 upstream 은 현재 4 가지 방식 의 분 배 를 지원 합 니 다.
부하 균형 서버 파라미터
매개 변수
설명 하 다.
down
현재 server 가 부하 에 잠시 참여 하지 않 음 을 표시 합 니 다.
weight
기본 값 은 1 입 니 다. weight 가 클 수록 부하 가중치 가 큽 니 다. (폴 링 정책 에 사용 되 며, ip hash 는 사용 할 수 없습니다)
max_fails
요청 실패 횟수 는 기본적으로 1 이 며, 최대 횟수 를 초과 하면 proxy 로 되 돌아 갑 니 다.next_upstream 모듈 정의 오류
fail_timeout
시간 초과 실패, 서버 연결 시 시간 초과 시 maxfails 가 지정 한 실패 횟수 는 failtimeout 시간 내 에 서버 를 사용 할 수 없습니다. 기본 값 은 10s 입 니 다.
backup
다른 모든 비 백업 기기 다운 이나 바 쁠 때 만 백업 기 계 를 요청 합 니 다.그래서 이 기계 가 제일 가 벼 워 요.
2.2 예시
http://192.168.88.111:9030/bme-sso-server/swagger-ui.html ——》 http://192.168.88.103:9030/bme-sso-server/swagger-ui.html
worker_processes 1;
events {
worker_connections 1024;
}
#http
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream web {
ip_hash;
server 192.168.88.103 max_fails=1 fail_timeout=10;
server 192.168.88.104 max_fails=1 fail_timeout=10 down;
# server 192.168.88.103 weight=1 max_fails=1 fail_timeout=10;
# server 192.168.88.104 weight=2 max_fails=1 fail_timeout=10 backup;
}
upstream bme-sso-server {
ip_hash;
server 192.168.88.103:9030 max_fails=1 fail_timeout=10;
server 192.168.88.104:9030 max_fails=1 fail_timeout=10;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://web;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 9030;
server_name localhost;
location / {
proxy_pass http://bme-sso-server;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
#tcp
stream{
log_format proxy '[$time_local] $remote_addr->$upstream_addr '
'$protocol $status $bytes_sent $bytes_received '
'$session_time '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
access_log logs/tcp-access.log proxy ;
open_log_file_cache off;
upstream dns {
server 192.168.88.103:10086;
server 192.168.88.104:10086;
}
server{
listen 8597;
proxy_pass dns;
}
}
3 Nginx 군집 (Nginx + Keepalived)
[root@hadoop101 ~]# yum install keepalived -y
#
[root@hadoop101 ~]# systemctl start keepalived
#
[root@hadoop101 ~]# systemctl status keepalived
#
[root@hadoop101 ~]# systemctl stop keepalived
[root@hadoop101 ~]# vim /etc/keepalived/keepalived.conf
#
vrrp_script chk_http_port
{
# ,
script "/usr/local/src/check_ngx.sh" # , nginx
interval 5 #( , , , )
weight 2 #
}
#vrrp
vrrp_instance VI_1 {
state MASTER # keepalived ,MASTER ,BACKUP
interface ens33 # vrrp ( centos ) ifconfig/ip addr
virtual_router_id 51 # ,
priority 100 # , ,
advert_int 1 # , 1s(vrrp )
#
authentication {
auth_type PASS # ,MASTER BACKUP
auth_pass 1111
}
track_script {
chk_http_port #( )
}
virtual_ipaddress {
192.168.88.111 # ip(VIP), ,
}
}
[root@hadoop102 ~]# vim /etc/keepalived/keepalived.conf
#
vrrp_script chk_http_port {
script "/usr/local/src/check_ngx.sh" # , nginx
interval 5 #( , , , )
weight 2 #
}
#vrrp
vrrp_instance VI_1 {
state BACKUP # keepalived ,MASTER ,BACKUP
interface ens33 # vrrp ( centos ) ifconfig/ip addr
virtual_router_id 51 # ,
priority 99 # , ,
advert_int 1 # , 1s(vrrp )
#
authentication {
auth_type PASS # ,MASTER BACKUP
auth_pass 1111
}
track_script {
chk_http_port #( )
}
virtual_ipaddress {
192.168.88.111 # ip(VIP), ,
}
}
[root@hadoop101 ~]# vim /usr/local/src/check_ngx.sh
#!/bin/bash
COUNT1=`ss -anpt | grep nginx | wc -l `
if [ $COUNT1 -eq 0 ] ; then
/usr/local/nginx/sbin/nginx
sleep 2
COUNT2=`ss -anpt | grep nginx | wc -l`
if [ $COUNT2 -eq 0 ] ; then
systemctl stop keepalived
echo -e "keeplived is stoped"
exit 1
else
exit 0
fi
fi
[root@hadoop101 ~]# scp -r /usr/local/src/check_ngx.sh [email protected]:/usr/local/src/
# seLinux ,SELinux status enabled
[root@hadoop101 ~]# /usr/sbin/sestatus -v
#
[root@hadoop101 ~]# getenforce
# ( ),0:permissive 1:enforcing
[root@hadoop101 ~]# setenforce 0
# ( )
[root@hadoop101 ~]# vim /etc/selinux/config
SELINUX=disabled
[root@hadoop101 ~]# systemctl start keepalived
[root@hadoop102 ~]# systemctl start keepalived
# Master, ip addr ip
[root@hadoop101 ~]# systemctl stop keepalived
#hadoop101 vip
[root@hadoop101 ~]# systemctl start keepalived
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Azure EventHub, LogicApp 및 DataVerseKafka 메시지는 Microsoft Cloud for Financial Services(FSI)로 내보내고 가져올 수 있습니다. 통합 고객 프로필과 같은 다양한 구성 요소를 제공하여 고객 데이터를 관리하고 개인 식...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.