부하 균형 Nginx + keepalive
10263 단어 Nginx 학습 기록nginx부하 이퀄 라이저
동일 하 게 설 정 된 웹 용도 IP MASTER 192.168.1.100 BACKUP 192.1681.101
2 설치
두 대의 접속 서버 에 각각 NginX 와 keepalived 를 설치 합 니 다. 의존 패키지 준비:
yum -y install gcc pcre-devel zlib-devel openssl-devel
yum -y install popt-devel
다운로드 하 다.
wget http://nginx.org/download/nginx-1.2.4.tar.gz
wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
NginX 설치 keepalive 설치
tar zxvf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure
make
make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
시작 서비스 가입
echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
echo "/etc/init.d/keepalived start" >> /etc/rc.local
3 설정
3.1 서버 에 접속 하 는 NginX 두 대 를 설정 하 는 NginX 의 설정 은 똑 같 습 니 다. 주로 설정 / usr / local / nginx / conf / nginx. conf 의 http 입 니 다.그 중에서 도 메 인 이름 은 가상 호스트 (http 아래 server 설정) 를 통 해 이 루어 집 니 다.같은 도 메 인 이름 의 서로 다른 가상 디 렉 터 리 는 각 server 아래 의 서로 다른 location 을 통 해 이 루어 집 니 다.백 엔 드 에 있 는 서버 는 http 아래 upstream 을 설정 한 다음 server 나 location 에서 proxypass 를 통 해 참조 합 니 다.앞에서 계획 한 접속 방식 을 실현 하려 면 http 의 설정 은 다음 과 같 습 니 다.
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
upstream dev.hysec.com {
server 50.1.1.21:80;
}
upstream opslinux.com {
ip_hash;
server 192.168.1.102:80
server 192.168.1.103:80
server 192.168.1.104:80
}
server {
listen 80;
server_name opslinux.com;
location / {
proxy_pass http://opslinux.com;
}
}
인증 방법: 먼저 IP 로 전 표 에 있 는 각 응용 서버 의 url 에 접근 한 다음 에 도 메 인 이름과 경로 로 전 표 에 있 는 각 응용 시스템 의 도 메 인 이름 / 가상 경로 3.2 설정 keepalived 는 위의 설치 방법 에 따라 keepalived 의 설정 파일 은 / etc / keepalived / keepalived. conf 에 있 습 니 다.주, 서버 설정 과 관련 이 있 지만 다 릅 니 다.다음 과 같다.
Master:
! Configuration File for keepalived
global_defs {
router_id NGINX_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
Backup:
! Configuration File for keepalived
global_defs {
router_id NGINX_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
인증: 홈, 서버 에서 keepalived 를 시작 합 니 다. / etc / init. d / keepalived start 는 홈 서버 에서 가상 IP 가 연결 되 어 있 는 지 확인 합 니 다. ip addr 는 홈 서버 의 keepalived: / etc / init. d / keepalived stop 을 중단 하고 서버 에서 가상 IP 가 연결 되 어 있 는 지 확인 합 니 다. 홈 서버 의 keepalived 를 시작 합 니 다.메 인 서버 가 가상 IP 3.3 을 다시 연결 할 수 있 는 지 확인 하고 keepalived 가 NginX 의 상 태 를 감시 하도록 앞의 설정 을 거 쳐 메 인 서버 의 keepalived 가 서 비 스 를 중단 하면 서버 에서 VIP 대외 서 비 스 를 자동 으로 연결 합 니 다.홈 서버 의 keepalived 가 복구 되면 VIP 를 다시 인수 합 니 다.그러나 이것 은 우리 가 필요 로 하 는 것 이 아니다. 우리 가 필요 로 하 는 것 은 NginX 가 서 비 스 를 중단 할 때 자동 으로 전환 할 수 있다 는 것 이다.keepalived 는 모니터링 스 크 립 트 설정 을 지원 합 니 다. 우 리 는 스 크 립 트 를 통 해 NginX 의 상 태 를 모니터링 할 수 있 습 니 다. 상태 가 정상 적 이지 않 으 면 일련의 작업 을 할 수 있 습 니 다. 결국 NginX 를 복원 하지 못 하면 keepalived 를 죽여 서버 에서 서 비 스 를 받 을 수 있 습 니 다.NginX 의 상 태 를 어떻게 감시 하 는 지 가장 간단 한 방법 은 NginX 프로 세 스 를 감시 하 는 것 입 니 다. 더욱 확실한 방법 은 NginX 포트 를 검사 하 는 것 입 니 다. 가장 확실한 방법 은 여러 url 이 페이지 를 가 져 올 수 있 는 지 검사 하 는 것 입 니 다.서비스 복 구 를 시도 하 는 방법 NginX 가 정상 이 아 닌 것 을 발견 하면 다시 시작 합 니 다.3 초 를 기 다 렸 다가 다시 검사 합 니 다. 실패 하면 시도 하지 않 습 니 다.위 정책 에 따라 감시 스 크 립 트 를 쉽게 작성 할 수 있 습 니 다.여 기 는 nmap 검사 nginx 포트 를 사용 하여 nginx 의 상 태 를 판단 합 니 다. nmap 를 먼저 설치 해 야 합 니 다.모니터링 스 크 립 트 는 다음 과 같 습 니 다:
#!/bin/bash
# check nginx server status
NGINX=/usr/local/nginx/sbin/nginx
PORT=8080
nmap localhost -p $PORT | grep "$PORT/tcp open"
#echo $?
if [ $? -ne 0 ];then
$NGINX -s stop
$NGINX
sleep 3
nmap localhost -p $PORT | grep "$PORT/tcp open"
[ $? -ne 0 ] && /etc/init.d/keepalived stop
fi
스 크 립 트 의 실행 권한 을 설정 하 는 것 을 잊 지 마 세 요. 그렇지 않 으 면 효과 가 없습니다.위 스 크 립 트 를 / opt / chk 에 두 었 다 고 가정 합 니 다.nginx. sh, keepalived. conf 에 다음 설정 이 추 가 됩 니 다: 주 keepalived
vrrp_script chk_http_port {
script "/opt/chk_nginx.sh"
interval 1
weight -2
}
track_script {
chk_http_port
}
:
! Configuration File for keepalived
global_defs {
router_id NGINX_UPSTEAM
}
vrrp_script chk_http_port {
script "/opt/chk_nginx.sh"
interval 1
weight -2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
track_script {
chk_http_port
}
}
더 나 아가 keepalived 를 시작 하기 전에 nginx 를 시작 하지 않도록 / etc / init. d / keepalived 의 start 에서 먼저 nginx 를 시작 할 수 있 습 니 다.
start() {
/usr/local/nginx/sbin/nginx
sleep 3
echo -n $"Starting $prog: "
daemon keepalived ${KEEPALIVED_OPTIONS}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【CoreOS】이중화 구성 Keepalived+NginxLB+NginxWEB(1)(1) IP 주소 192.168.0.50의 VIP (virtual ip)를 가진 서버에 액세스 (2)Docker-Nginx 80번 포트에 착신 (3) 80번 포트 착신 후 Docker-Nignx-Proxy가 Dock...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.