LVS / DR + keepalived 부하 균형 클 러 스 터 구축

5659 단어 keedpalivedLinux
앞의 lvs 는 설정 에 성 공 했 지만 부하 균형 을 이 루 었 습 니 다. 그러나 테스트 를 할 때 한 real server 가 nginx 프로 세 스 를 멈 추 면 director 는 요청 을 전송 합 니 다. 그러면 일부 요청 이 정상 적 이지 않 습 니 다.그래서 real server 의 상 태 를 검사 하 는 메커니즘 이 필요 합 니 다. 이것 이 바로 keepalived 입 니 다.그것 의 역할 은 rs 상 태 를 검사 할 수 있 을 뿐만 아니 라 예비 director 의 상 태 를 검사 할 수 있다. 즉, keepalived 는 ha 군집 의 기능 을 실현 할 수 있 고 물론 예비 director 도 필요 하 다.
예비 director 도 keepalived 소프트웨어, ipvsadm 를 설치 해 야 합 니 다.
keepalived 는 lvs 를 호출 하여 자신의 규칙 을 실현 합 니 다.
yum install -y keepalived ipvsadm
환경 구축 작업:
주 디 렉 터   192.168.11.30    eth 1 네트워크 카드
director 에서   192.168.11.40    eth 1 네트워크 카드
real server1:    192.168.11.100    eth 0 네트워크 카드
real server2:    192.168.11.101    eth 0 네트워크 카드
curl 테스트 에 사용 되 는 Liux 호스트 192.168.11.0 네트워크 를 사용 하면 됩 니 다.
주 dr 와 예비 dr 는 keepalived, ipvsadm 를 설치 해 야 합 니 다.
rs 두 대 설치 nginx;
설치 후 주 director 설정 파일
vim /etc/keepalived/keepalived.conf   //아래 와 같이 가입:
vrrp_instance VI_1 {
    state MASTER   #        BACKUP
    interface eth1
    virtual_router_id 51
    priority 100  #   ,         ;       90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.11.110
    }
}
virtual_server 192.168.11.110 80 {
    delay_loop 6                  #(  6   realserver  ,    )
    lb_algo wlc                  #(    )
    lb_kind DR                  #(Direct Route)
    persistence_timeout 0    #(  IP              realserver,0     )
    protocol TCP                #( TCP    realserver  )
    real_server 192.168.11.100 80 {
        weight 100               #(  )
        TCP_CHECK {
        connect_timeout 10       #(10      )
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
real_server 192.168.11.101 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

director 의 프로필 에서 다음 두 가지 만 수정 하면 됩 니 다:
state MASTER  -> state BACKUP
priority 100 -> priority 90
keepalived 를 설정 한 후 포트 리 트 윗 을 켜 야 합 니 다 (주 dr 에서 모두 해 야 합 니 다):
echo 1 > /proc/sys/net/ipv4/ip_forward
그리고 두 rs 에서 / usr / local / sbin / lvs 를 실행 합 니 다.dr_rs. sh 스 크 립 트, nginx 서비스 시작
# /etc/init.d/nginx start

마지막 으로 두 director 에서 keepalived 서 비 스 를 시작 합 니 다.
# /etc/init.d/keepalived start

또한, keepalived 서 비 스 를 시작 하면 vip 와 ipvsadm 규칙 이 자동 으로 생 성 됩 니 다.
명령 사용 \ # ip addr   dr 의 가상 ip 주소 보기;가상 ip 을 표시 하지 않 고 ifconfig 를 직접 사용 합 니 다.
[root@dr1 keepalived]# ip addr
eth1:  mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:97:c3:f6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.30/24 brd 192.168.11.255 scope global eth1
  
    inet 192.168.11.110/32 scope global eth1
    inet6 fe80::20c:29ff:fe97:c3f6/64 scope link 
    valid_lft forever preferred_lft forever

다른 기계 curl 테스트 에서 rs1 과 rs2 횟수 가 비슷 하도록 요청 합 니 다.
[root@localhost ~]# curl 192.168.11.110
rs1rs1
[root@localhost ~]# curl 192.168.11.110
rs2rs2
[root@localhost ~]# curl 192.168.11.110
rs1rs1
[root@localhost ~]# curl 192.168.11.110
rs2rs2

rs2 위 stop nginx, 그리고 curl 테스트 를 통 해 모든 요청 이 rs1 위 에 있 음 을 발견 합 니 다.
로그 에 도 remove rs2 가 기록 되 어 있 습 니 다.로그 파일: / var / log / messages
[root@rs2 ~]# /etc/init.d/nginx stop
[root@localhost ~]# curl 192.168.11.110
rs1rs1
[root@localhost ~]# curl 192.168.11.110
rs1rs1
[root@localhost ~]# curl 192.168.11.110
rs1rs1
[root@localhost ~]# curl 192.168.11.110
rs1rs1
[root@dr1 ~]# tail -2 /var/log/messages
Jun  9 23:27:19 localhost Keepalived_healthcheckers[1572]: TCP connection to [192.168.11.101]:80 failed !!!
Jun  9 23:27:19 localhost Keepalived_healthcheckers[1572]: Removing service [192.168.11.101]:80 from VS [192.168.11.110]:80

rs2 시작 nginx, 로그 파일 기록 adding rs2;curl 테스트, 요청 이 평균 rs1 과 rs2 에 배 치 된 것 을 발견 하 였 습 니 다.
[root@rs2 ~]# /etc/init.d/nginx start
[root@dr1 ~]# tail -2 /var/log/messages
Jun  9 23:31:38 localhost Keepalived_healthcheckers[1572]: TCP connection to [192.168.11.101]:80 success.
Jun  9 23:31:38 localhost Keepalived_healthcheckers[1572]: Adding service [192.168.11.101]:80 to VS [192.168.11.110]:80
[root@localhost ~]# curl 192.168.11.110
rs1rs1
[root@localhost ~]# curl 192.168.11.110
rs2rs2
[root@localhost ~]# curl 192.168.11.110
rs1rs1
[root@localhost ~]# curl 192.168.11.110
rs2rs2

dr2 예비 dircetor 기 계 를 추가 합 니 다.
주 상 은 keepalive 서 비 스 를 중단 합 니 다.stop 이후 위 ip addr 에서 바 인 딩 가상 ip 을 보면 서 서 비 스 를 받 았 음 을 설명 합 니 다.전환 속도 가 빠르다;
주 상에 서 keepalived 서 비 스 를 시작 한 후 가상 ip 을 연결 하고 서 비 스 를 인수 합 니 다.
[root@dr2 keepalived]# ip addr
eth1:  mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:af:73:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.40/24 brd 192.168.11.255 scope global eth1
    inet 192.168.11.110/32 scope global eth1

nc 명령 은 포트 가 열 렸 는 지 검사 할 수 있 습 니 다:
다른 기계 에서 11.100 과 11.101, 11.110 의 80 포트 가 열 렸 는 지 스 캔 합 니 다.
#nc -z -w2 192.168.11.110 80
[root@localhost ~]# nc -z -w2 192.168.11.100 80
Connection to 192.168.11.100 80 port [tcp/http] succeeded!
[root@localhost ~]# nc -z -w2 192.168.11.101 80
Connection to 192.168.11.101 80 port [tcp/http] succeeded!
[root@localhost ~]# nc -z -w2 192.168.11.110 80
Connection to 192.168.11.110 80 port [tcp/http] succeeded!

좋은 웹페이지 즐겨찾기