Nginx + Keepalived 부하 균형
부하 균형 (Load Balance) 은 분포 식 시스템 구조 디자인 에서 반드시 고려 해 야 할 요소 중 하나 로 요청 데 이 터 를 여러 작업 단원 에 나 누 어 집행 하 는 것 을 말한다. 부하 균형 의 관건 은 [균일] 에 있다.여기 서 저 는 nginx 를 부하 균형 으로 합 니 다. nginx 는 강력 한 웹 서버 일 뿐만 아니 라 역방향 프 록 시 서버 로 도 사용 할 수 있 습 니 다. 또한 nginx 는 스케줄 링 규칙 에 따라 동적, 정적 페이지 의 분 리 를 실현 할 수 있 습 니 다. 폴 링, ip 해시, 가중치 등 여러 방식 으로 백 엔 드 서버 에 부하 균형 을 이 룰 수 있 고 백 엔 드 서버 의 건강 검 사 를 지원 합 니 다.
keepalived 가 무엇 입 니까?
Keepalived 는 웹 서버 의 상 태 를 감지 하 는 역할 을 합 니 다. 웹 서버 가 다운 되 거나 작업 이 고장 나 면 Keepalived 가 감지 하고 고장 난 웹 서버 를 시스템 에서 제거 합 니 다. 웹 서버 가 정상적으로 작 동 하면 Keepalived 는 자동 으로 웹 서버 를 서버 그룹 에 추가 합 니 다. 이 작업 은 모두 자동 으로 완료 되 며 인공 간섭 이 필요 없습니다.인공 적 으로 해 야 할 것 은 고장 난 웹 서버 를 복구 하 는 것 뿐이다.
설정 환경:
서버 는 모두 CENTOS 7 의 시스템 192.168.1.162: 주 Keepalived, nginx 서버 192.168..163: keepalived, nginx 서버 192.168.1.164: 가상 IP 주소 192.168.1.147: tomcat 응용 서버 (백 엔 드 응용 서버)
방화벽 을 닫 고 시동 을 끄 기:
systemctl stop firewalld.service systemctl disable firewalld.service
SELinux 보안 메커니즘 닫 기 (번 거 로 움 이 발생 하지 않도록):
1. 임시 종료: setenforce 0 \ # (SELinux 를 permissive 모드 로 설정) \ # \ # (setenforce 1 은 SELinux 를 enforcing 모드 로 설정) 2. 영구 종료 (설정 파일 을 수정 하려 면 기 계 를 다시 시작 해 야 합 니 다): 수정 / etc / selinux / config 파일 은 SELINUX = enforcing 을 SELINUX = disabled 로 변경 하여 기 계 를 다시 시작 하면 됩 니 다.
각각 162, 163 서버 에 keepalived, nginx 를 설치 합 니 다.
설치 keepalived:
yum –y install keepalived
프로필 수정:
주 keepalived 설정: cp / etc / keepalived / keepalived. conf / etc / keepalived / keepalived. conf. bak \ # (원래 설정 파일 을 백업 하여 오 류 를 방지 합 니 다.) vi / etc / keepalived / keepalived. conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server mail.smtp.163.com
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script check_nginx {
script "/home/nginx_pid.sh" ##( NGINX shell )
interval 2 ##( 2 )
weight -15 ##( nginx , -15)
}
vrrp_instance VI_1 {
state MASTER ##( MASTER, BACKUP)
interface eth0 ##( )
virtual_router_id 51 ##( virtual_router_id ,MASTRE/BACKUP )
priority 200 ##( , , , Conf , priority MASTRE )
advert_int 1 ##(#MASTER BACKUP , )
authentication {
auth_type PASS
auth_pass 1111 ##( , , )
}
track_script {
check_nginx ##( , check_nginx)
}
virtual_ipaddress {
192.168.1.164 ##(# IP, , , 。)
}
}
여 기 는 LVS 를 하지 않 고 뒤에 있 는 virtual 을 삭제 합 니 다.서버 내용 부분
위 nginxpid. sh 스 크 립 트 내용:
#!/bin/bash
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
then
/usr/local/nginx/sbin/nginx
sleep 5
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
then
killall keepalived
fi
fi
keeplived 에서 설정 파일:
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server mail.smtp.163.com
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script check_nginx {
script "/home/nginx_pid.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_nginx
}
virtual_ipaddress {
192.168.1.164
}
}
keeplived 가 적용 되 는 지 확인 하기: Master: keeplived 를 시작 하기 전에 IP addr 를 봅 니 다.
[root@zabbix162 ~]# ip addr list
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
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 qlen 1000
link/ether 00:15:5d:01:13:0f brd ff:ff:ff:ff:ff:ff
inet 192.168.1.162/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe01:130f/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
keepalived 시작:
[root@zabbix162 ~]# ip addr list
1: lo: mtu 65536 qdisc noqueue state UNKNOWN
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 qlen 1000
link/ether 00:15:5d:01:13:0f brd ff:ff:ff:ff:ff:ff
inet 192.168.1.162/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.1.164/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe01:130f/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
가상 IP 가 하나 더 보 입 니 다:
inet 192.168.1.164/32 scope global eth0
MASTER 의 keepalived 를 멈 추고 BACKUP 서버 의 keepalived 를 시작 하여 192.168.1.64 의 가상 IP 를 인수 할 지 여 부 를 확인 하 는 방식 으로 테스트 합 니 다.
keepalived 부팅 설정:
systemctl enable keepalived.service
참고 사이트:http://linux.blog.163.com/blog/static/9297023201099102637777/ http://www.cnblogs.com/liuquan/p/5583816.html http://www.linuxde.net/2013/04/13381.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.