Linux 클러스터, 고가용 keepalived

7337 단어
18.1- 18.5 클러스터 소개, 고가용,keepalived 설정
서버 설정 집단의 목적은 군더더기 고가용성과 부하 균형 두 가지 작용으로 나뉜다.고가용은highavailablity를 가리킨다. 즉, 한 서버가 다운된 후에 다른 서버가 인수하여 사용자에게 계속 서비스를 제공할 수 있다는 것이다.
부하 균형은loadbalance로 일반적인 작은 사이트의 사용자 수가 적을 때 두 대의 서버, 한 대의 메인 서버를 직접 사용할 수 있다.그러나 사용자의 방문량이 많은 후에 텐센트와 타오바오 징동 같은 경우 한 대의 서버가 이런 방문량을 감당할 수 없기 때문에 여러 대의 서버가 사용자의 방문을 분산시켜야 한다.그 중에서 서버의 맨 앞부분에 부하 균형 서버가 사용자의 접근을 분배해야 한다.
고가용 소프트웨어는keepalived와heartbeat가 있고 부하 균형을 실현하는 소프트웨어는LVS,nginx,haproxy,keepalived가 있으며 비즈니스는F5와netscaler가 있다.하지만 상업 제품의 가격은 비싸다.

keepalived 고가용


고가용을 할 때 부하 균형의 수요가 있을 수도 있다.반면nginx는 http 서버를 하든 부하 균형 서버를 하든 모두 좋은 선택이다.그래서 우리는keepalived+nginx를 예로 들자.
이 목적을 실현하는 핵심은 가상 IP,virtual IP, 약칭vip를 만드는 것이다.사용된 프로토콜은 VRRP이며 가상 라우팅 중복 프로토콜입니다.
환경 준비: master: 192.168.27.128 keepalived+nginx backup: 192.168.27.129 keepalived+nginx VIP: 192.168.27.100
 
[root@cent03 ~]# curl 192.168.27.128
default_server
[root@cent03 ~]# curl 192.168.27.129
rs 02

master 작업
yum install -y keepalived

[root@cent01 ~]# vim /etc/keepalived/keepalived.conf 
// 
global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.27.100
    }
    track_script {
        chk_nginx
    }
}


[root@cent01 ~]# vim /usr/local/sbin/check_ng.sh
// 
#!/bin/bash
# , 
d=`date --date today +%Y%m%d_%H:%M:%S`
# nginx 
n=`ps -C nginx --no-heading|wc -l`
# 0, nginx, nginx ,
# 0, nginx , keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi


[root@cent01 ~]# systemctl start keepalived  // keepalived nginx

백업 작업
yum install -y keepalived

[root@cent02 ~]# vim /etc/keepalived/keepalived.conf 
// 
global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_nginx {
    script "/usr/local/sbin/check_ng.sh"
    interval 3
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux>com
    }
    virtual_ipaddress {
        192.168.27.100
    }
    track_script {
        chk_nginx
    }
}


[root@cent02 ~]# vim /usr/local/sbin/check_ng.sh 
// 
#!/bin/bash
# , 
d=`date --date today +%Y%m%d_%H:%M:%S`
# nginx 
n=`ps -C nginx --no-heading|wc -l`
# 0, nginx, nginx ,
# 0, nginx , keepalived
if [ $n -eq "0" ]; then
        /etc/init.d/nginx start
        n2=`ps -C nginx --no-heading|wc -l`
        if [ $n2 -eq "0"  ]; then
                echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
                systemctl stop keepalived
        fi
fi


[root@cent02 ~]# systemctl start keepalived  // keepalived

테스트failover는 가상 IP를 방금 설정했기 때문에 먼저 두 호스트의 네트워크 서비스를 다시 시작할 수 있습니다.systemctl restart network
[root@cent03 ~]# curl 192.168.27.100  // master
default_server


// keepalived 
systemctl stop keepalived

[root@cent03 ~]# curl 192.168.27.100  // backup
rs 02


[root@cent01 ~]# systemctl start keepalived  // master keepalived

[root@cent03 ~]# curl 192.168.27.100  // master 
default_server

mysql 고가용


mysql도keepalived로 사용할 수 있지만, 주의해야 할 것은 주종의 데이터가 일치해야 한다는 것이다.고가용을 할 수 있다.

좋은 웹페이지 즐겨찾기