Nginx + Keepalived 부하 균형

5855 단어
부하 균형 이란 무엇 인가:
부하 균형 (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

좋은 웹페이지 즐겨찾기