nginx + keepalived 더 블 컴퓨터 열 준비
6181 단어 linux듀 플 렉 스 히트
keepalived 의 작업 원 리 는 VRRP - 가상 경로 중복 프로 토 콜 입 니 다.
테스트 환경 은 다음 과 같 습 니 다.
ip
vip
master
192.168.174.135
192.168.174.140
backup
192.168.174.137
192.168.174.140
상단 nginx 설치 로 돌아 가기
sudo apt - get install nginx 설정 파일 위치 찾기
sudo find / - name nginx. conf / etc / nginx / nginx. conf 설정 파일 수정 (nginx. conf)
user www-data;worker_processes 4;pid /run/nginx.pid;
events {worker_connections 1024;}
http {sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
server {
listen 80 default_server;
server_name test;
charset utf-8;
location / {
root html;
index index.html index.htm;
proxy_set_header X-Real_IP $remote_addr;
client_max_body_size 100m;
}
}
} 파일 / usr / share / nginx / html / index. html
192.168.174.135 에 Welcome to nginx!135
192.168.174.137 에 Welcome to nginx!137
시동 을 걸다
sudo service nginx start 닫 기
sudo service nginx stop 정상 으로 돌아 가기 keepalived 설치
keepalived - 1.2.19. tar. gz 다운로드
tar – zxvf keepalived - 1.2.19. tar. gzcd keepalived - 1.2.19. / configure -- prefix = / usr / local / keepalivedmakesudo make install 기간 에 문제 가 발생 할 수 있 습 니 다.
!!! OpenSSL is not properly installed on your system. !!!!!! Can not include OpenSSL headers files. !!!
해결 하 다.
sudo apt - get install libssl. dev 소프트 링크 만 들 기
sudo ln - s / usr / local / keepalived / sbin / keepalived / sbin / sudo ln - s / usr / local / keepalived / etc / rc. d / init. d / keepalived / etc / init. d / sudo ln - s / usr / local / keepalived / etc / sysconfig / keepalived / etc / sysconfig / 시작
sudo keepalived - D - f / usr / local / keepalived / etc / keepalived / keepalived. conf 닫 기
sudo killall keepalived 설정 (keepalived. conf):
global_defs {router_id NODEA}
vrrp_instance VI_1 {state MASTER interface eth 0 \ # 네트워크 인터페이스 virtual router id 50 을 모니터링 합 니 다 \ # 주, 준 비 는 똑 같이 priority 100 \ # 우선 순위: 주 > advert int 1 인증 {auth type PASS \ # VRRP 인증, 주 준 비 는 일치 auth pass 1111 \ # 비밀번호}
virtual ipaddress {192.168.140 / 24 \ # VRRP HA 가상 주소} 예비 노드 설정
global_defs {router_id NODEB}
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 50priority 90 advert_int 1authentication {auth_type PASSauth_pass 1111}
virtual ipaddress {192.168.174.140 / 24} 상단 으로 돌아 가 더 블 클릭 열 비 를 테스트 합 니 다.
두 대의 기 계 는 모두 nginx 와 keepalived 를 시작 하고 브 라 우 저 는 각각 방문 합 니 다.
브 라 우 저 접근:http://192.168.174.140/, MASTER 페이지 를 표시 합 니 다.
같은 ip appr 로 인증 할 수 있 습 니 다:
135 기계:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:39:d4:88 brd ff:ff:ff:ff:ff:ff
inet 192.168.174.135/24 brd 192.168.174.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.174.140/24 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe39:d488/64 scope link
valid_lft forever preferred_lft forever
137 기계:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 00:0c:29:cf:23:62 brd ff:ff:ff:ff:ff:ff
inet 192.168.174.137/24 brd 192.168.174.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fecf:2362/64 scope link
valid_lft forever preferred_lft forever
현재 135 기 계 를 끄 는 keepalived.
그러나 nginx 가 지연 되 거나 전체 기기 가 지연 되면 이런 상황 은 안 됩 니 다. 브 라 우 저 를 통 해 192.168.174.140 을 방문 하면 자원 에 접근 할 수 없습니다.
기계
이전 문 제 를 해결 하기 위해 서 는 스 크 립 트 를 이용 하여 nginx 프로 세 스 가 지연 되 었 음 을 감지 하면 keepalived 프로 세 스 를 자동 으로 닫 아 열 백업 을 실현 할 수 있 습 니 다.
주 노드 설정
global_defs {router_id NODEA}
vrrp_script chk_http_port {script "/home/jimite/keepalived/chk_nginx_pid.sh"interval 2weight 2}
vrrp_instance VI_1 {state MASTER interface eth0virtual router id 50priority 100 advert int 1authentication {auth type PASSauth pass 1111} track script {chk http port} virtual ipaddress {192.168.140 / 24} 예비 노드 설정
global_defs {router_id NODEB}
vrrp_script chk_http_port {script "/home/jihite/keepalived/chk_nginx_pid.sh"interval 2weight 2}
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 50priority 90 advert_int 1authentication {auth_type PASSauth_pass 1111}track_script {chk_http_port}
virtual_ipaddress {
192.168.174.140/24
}
} 그 중 / home / jimite / keepalived / chknginx_pid. sh
#!/bin / bashA =
ps -C nginx --no-header |wc -l
if [$A - eq 0] thenecho 'nginx server is died' sudo killall keepalivedfi 문제: keepalived 프로 세 스 를 죽 이면 vip 의 오프셋 을 실현 할 수 있 지만 원래 기계 의 vip 가 자동 으로 삭제 되 지 않 는 이유: VRRP 프로 토 콜 원 리 는 MASTER 만 대외 적 으로 메 시 지 를 보 내 는 것 입 니 다.각 BACKUP 은 메 시 지 를 받 아들 이 고, 메 시 지 를 받 지 못 할 경우 나머지 BACKUP 기기 에서 새로운 MASTER 를 선택한다.이전에 kill - 9 pid 또는 killall pid 로 keepalived 프로 세 스 를 죽 였 기 때문에 keepalived 를 설치 하여 메 시 지 를 보 낼 수 없습니다. BACKUP 은 메 시 지 를 받 지 못 하고 MASTER 로 업그레이드 되 었 으 나 프로 세 스 가 죽 임 [비정 상 종료] 되 어 keepalived 는 스스로 vip 를 삭제 할 능력 이 없습니다.솔 루 션: keepalived 를 닫 을 때 명령 service keepalived stop 또는 kill - 15 pid (주: 첫 번 째 프로 세 스 번호 만 삭제) 에 문제 가 있 습 니 다. keepalived 를 비정상적 으로 닫 습 니 다.kill - 9 또는 killall 을 사용 하여 keepalived 를 죽 이 는 것 을 금지 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.