nginx + keepalived 높 은 부하 균형 사용 가능
8860 단어 nginxkeepalived부하 균형고가 용성
1. 시스템 환경
:CentOS release 5.9 (Final) x86 32
nginx : 1.2.8
keepalived : 1.2.4
keepalived:192.168.207.130
keepalived:192.168.207.131
VIP:192.168.207.140
WEB_1:192.168.207.129 80
WEB_2:192.168.207.130 8080
WEB_3:192.168.207.131 8080
2. nginx 설정 파일 사용자 정의
192.168.207.130 과 192.168.207.131 에서 작 동 합 니 다.
useradd nginx
vi /usr/local/nginx/conf/nginx.conf
내용 은 다음 과 같다.
#
user nginx nginx;
#
worker_processes 2;
# PID
error_log logs/error.log notice;
pid logs/nginx.pid;
#
events {
use epoll;
worker_connections 1024; # nginx worker_processes * worker_connections
}
# http ,
http {
# mime
include mime.types; # nginx , conf/mime.types
default_type application/octet-stream; #
#
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
#
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
# gzip
#gzip on;
#gzip_min_length 1100;
#gzip_buffers 4 8k;
#gzip_types text/plain;
#output_buffers 1 32k;
#postpone_output 1460;
# access log
access_log logs/access.log main;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
#
upstream mysvr {
#weigth ,
server 192.168.207.129:80 weight=5;
server 192.168.207.130:8080 weight=5;
server 192.168.207.131:8080 weight=5;
}
server { # web , 8080
listen 8080;
server_name 192.168.207.131; # ip
index index.html index.htm;
root /var/www/html;
#error_page 500 502 503 504 /50x.html;
#location = /50x.html {
# root html;
#}
}
#
server {
listen 80;
server_name 192.168.207.140; # VIP
#charset gb2312;
#
access_log logs/three.web.access.log main;
# /img/*, /js/*, /css/* , , squid
# , , squid
#location ~ ^/(img|js|css)/{
# root /data3/Html;
# expires 24h;
#}
# "/"
location / {
proxy_pass http://mysvr; # web
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
# Nginx , --with-http_stub_status_module
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd; # ,htpasswd -bc filename username password
}
}
}
3. keepalived 설정 파일 사용자 정의
vi /etc/keepalived/keepalived.conf
내용 은 다음 과 같다.
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/etc/keepalived/check_nginx.sh" ###
interval 2 ###
weight 2 ###
}
vrrp_instance VI_1 {
state MASTER ###
interface eth0 ###
virtual_router_id 51 ###
priority 101 ### MASTRE BAUCKUP
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port ###
}
virtual_ipaddress {
192.168.207.140 ### VIP
}
}
4. 사용자 정의 스 크 립 트 쓰기
vi /etc/keepalived/check_nginx.sh
내용 은 다음 과 같다.
!/bin/bash
A=`ps -C nginx --no-header |wc -l` ## nginx A
if [ $A -eq 0 ];then ##
/usr/local/nginx/sbin/nginx
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop ## keepalived
fi
fi
nginx 가 시작 되 었 는 지 확인 하 는 것 입 니 다. 시작 하지 않 으 면 nginx 를 먼저 시작 합 니 다. 3 초 후에 시작 되 지 않 으 면 keepalived 프로 세 스 도 닫 습 니 다. 그러면 keepalived 에서 넘 어 갈 수 있 고 높 은 가용성 을 제공 합 니 다. 여기 서 keepalived 서 비 스 는 높 은 가용성 을 제공 합 니 다. nginx 는 백 엔 드 웹 서버 의 부하 균형 을 제공 합 니 다.
여기에 스 크 립 트 에 실행 권한 을 더 해 야 합 니 다. 다음 과 같 습 니 다.
chmod +x /etc/keepalived/check_nginx.sh
5. 서비스 시작 및 테스트
여기 서 먼저 말씀 해 주세요. WEB 에서...1. 저 는 시스템 자체 가 가지 고 있 는 apache 를 사 용 했 습 니 다. 어젯밤 에 웹 서버 를 사용 하 는 것 이 비교적 편리 합 니 다. 그러면 저 는 keepalived 를 잘 시작 하면 ok 입 니 다. 왜냐하면 check 를 이용 할 수 있 기 때 문 입 니 다.nginx. sh 스 크 립 트 는 nginx 를 자동 으로 시작 합 니 다.시동 걸 었 어.방문 하 다.http://192.168.207.140백 엔 드 에 있 는 세 대의 웹 서버 콘 텐 츠 를 교대로 방문 할 수 있 습 니 다. 여기 서 메 인 keepalived 서 비 스 를 끄 고 높 은 가용성 을 테스트 한 다음 keepalived 서버 에 있 는 / var / log / messages 에서 이러한 로 그 를 볼 수 있 습 니 다.
Apr 19 17:42:44 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Apr 19 17:42:45 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Apr 19 17:42:45 localhost Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Apr 19 17:42:45 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.207.140
Apr 19 17:42:45 localhost Keepalived_vrrp: Netlink reflector reports IP 192.168.207.140 added
Apr 19 17:42:45 localhost Keepalived_healthcheckers: Netlink reflector reports IP 192.168.207.140 added
Apr 19 17:42:45 localhost avahi-daemon[4204]: Registering new address record for 192.168.207.140 on eth0.
계속 방문http://192.168.207.140백 엔 드 웹 서버 세 대 에 접근 할 수 있 습 니 다.
그리고 원주 keepalived 를 열 면 keepalived 서버 에서 로그 디 스 플레이 를 관찰 할 수 있 습 니 다.
Apr 19 17:42:50 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.207.140
Apr 19 17:44:06 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Received higher prio advert
Apr 19 17:44:06 localhost Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
Apr 19 17:44:06 localhost Keepalived_vrrp: VRRP_Instance(VI_1) removing protocol VIPs.
Apr 19 17:44:06 localhost Keepalived_vrrp: Netlink reflector reports IP 192.168.207.140 removed
Apr 19 17:44:06 localhost Keepalived_healthcheckers: Netlink reflector reports IP 192.168.207.140 removed
Apr 19 17:44:06 localhost avahi-daemon[4204]: Withdrawing address record for 192.168.207.140 on eth0.
원래 의 주종 을 회복 한 결과 가 있다 는 뜻 이다.
생산 환경 에서 백 엔 드 기기 도 끊 을 수 있 습 니 다. 하지만 신경 쓰 지 마 세 요. nginx 는 자동 으로 session 을 좋 은 백 엔 드 웹 서버 에 배정 합 니 다.
ok, 여기까지 모두 끝 났 습 니 다. 친 측 실천, 성공 을 기원 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.