Linux 클러스터, 고가용 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로 사용할 수 있지만, 주의해야 할 것은 주종의 데이터가 일치해야 한다는 것이다.고가용을 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.