詳細検索

AWS(VPC)에서 heartbeat3로 LVS를 설정한 이야기

아바타
글쓴이 komi

AWS(VPC)에서 heartbeat3로 LVS를 설정한 이야기
日本語에서 번역 • 원문 보기

*이 글은 1년 이상 된 오래된 문서임을 참고해 주세요. ※

안녕하세요. 플랫폼의 코미야입니다.

이번에는 ELB가 비싸서, 시작은 작은 단계이니 LVS를 만들어 봅시다. 처음에는 LVS로 WEB와 DB를 모두 부하 분산하려고 했지만, 결국 WEB 쪽은 ELB로 결정되었습니다. (고객에게 이것이 공공-민간 혼합 플랫 NW이며 SSL, 확장성, 운영 등의 편리함을 설명하기는 어렵습니다.) )

평소보다 주의할 점: ·환경은 AWS(인스턴스를 재생성하고 변경 출처/데이터 확인 비활성화를 잊지 않도록 주의) ·클라이언트가 글로벌 오버 시 DSR은 불가능(ENI와 IP가 일치하지 않는 패킷은 엣지 라우터에서 파괴됨) ·DSR은 평면 NW 구성이 아니면 불가능합니다(일반적인 경우지만 주의할 점) ·여러 NW에 NAT 인스턴스가 필요해 (한 NW만 선택) ·DB는 DSR이 배포하고 WEB은 NAT로 배포 ・VIP는 사용할 수 있지만 API 서버와 통신 후 AWS와 유사한 관리를 위해 전환해야 합니다 ·AWS 관리는 사실상 스플릿브레인이 없지만 어느 쪽에 연결되는지 확인해야 합니다 ·멀티캐스트는 AWS 제한으로 인해 사용할 수 없으므로 HA 통신은 유니캐스트를 사용합니다 ·인증서는 웹 서버가 부하 분산 라이선스를 가지고 관리합니다

목차: ・기본 구성 사항 → 배포 대상 측 기본 설정 ・ipvsadm을 이용한 부하 분산 단위 테스트 → heartbeat 소개 설정 → ldirectord 소개 설정 ・EIP → PrivateIP 이동 셸 생성 → 리소스 설정 → 인스턴스 복사 작업 → 전환 테스트 → 내가 어디서 중독되었는지

・기본 구성

LVS01(메인 시스템), LVS02(대기 시스템) 80, 443, 3306 읽기는 각각 2개의 웹, 2개의 배포 서버, 2개의 DB에 분배됩니다.

lvs01:172.18.1.23 lvs02:172.18.1.25 db-r-vip:172.18.1.200 web-vip:172.18.1.199 db-client:web(local) web-client:any(global) real-db:172.18.1.220,221 real-web:172.18.1.33,34 웹 배포 방법: NAT db 배포 방법: DSR

설계 문서에서는 전면 세그먼트와 후면 세그먼트로 나뉘었으나, AWS 사양상 LVS와 결합하려면 평면이어야 했습니다. 클라이언트가 글로벌 서버에 있는 웹 서버가 엣지 라우터⇒ 경우, ENI와 IP가 일치하지 않는 패킷은 파기되므로 분산 방식은 DSR이 불가능하고 NAT만 사용할 수 있습니다. ⇒ 배포 방식이 NAT라면, 실제 서버는 부하 분산 서버를 기본 GW로 지정해야 합니다 ⇒NAT 인스턴스는 하나의 NIC만 가질 수 있는 사양이지만, 기본 GW는 동일한 세그먼트가 아니면 지정할 수 없습니다⇒. 적어도 LVS+VPC에서는 하나의 세그먼트 없이는 웹을 부하 분산할 수 없지만, DB와 WEB 배포는 같은 LVS에서 함께 이루어지고, 이제 NW 세그먼트는 하나뿐입니다. ⇒백세그먼트가 없더라도 VPC이며, SecurityGroup 설정이 괜찮아도 괜찮습니다. HAproxy가 아닌 이유는 동작이 낯설고 LVS가 더 나은 성능을 보이기 때문입니다. DB만으로도 DSR이 될 수 있다는 점이 기쁩니다.

・분배 목표 기본 설정

웹 설정

vi /etc/sysconfig/network-script/ifcfg-eth0
*다음 내용은 웹 서버에 추가되었습니다.
GATEWAY=172.18.1.199
*배포 서버는 다음과 같이 추가됩니다.
GATEWAY=172.18.1.206
서비스 네트워크 재시작
netstat -rn

*AWS API와 통신하고 메타데이터가 포함된 인스턴스 ID를 획득해야 할 경우, GW를 변경하면 해당 ID를 얻을 수 없음을 유의해 주세요.

관리 콘솔에서 "소스 변경/주소 확인"을 비활성화하세요

수표 파일을 넣어

에코 밸런스 'uname -n' > /var/www/html/chk.html
vi /etc/rc.local
에코 밸런스 'uname -n' > /var/www/html/chk.html

보안 그룹을 올바르게 설정하고 브라우저에서 그 작동 방식을 확인하세요

DB 측 설정 DB 서버 측에서 ARP를 비활성화하고 lo:0 인터페이스를 업로드하세요 (루프백 IF용 별칭 생성) (iptables로 라우팅하는 방법도 있지만, 오버헤드가 걱정되어 lo:0을 사용합니다)

vi /etc/sysctl.conf
# LVS(DSR) 참조는 분산 객체의 경우 ARP를 반환하지 않습니다
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2
sysctl -p
vi /etc/sysconfig/network-scripts/ifcfg-lo:0
------------------------------------------------ 
DEVICE=lo:0
TYPE=이더넷
BOOTPROTO=없음
방송=172.18.1.200
IPADDR=172.18.1.200
NETMASK=255.255.255
네트워크=172.18.1.200
NAME=루프백
ONPARENT=예
PEERDNS=no
인터페이스 활성화
이프업 로:0
IFCONFIG -a lo:0

관리 콘솔에서 "소스 변경/주소 확인"을 비활성화하세요

WEB에서 DSR로의 DB 참조 배포 테스트

mysql -u root -p -h 172.18.1.200 -e 'hostname'과 같은 전역 변수를 표시; 

・ipvsadm을 이용한 부하 분산 단위 테스트

먼저, AWS 콘솔 화면에서 모든 LVS, WEB, DB 인스턴스의 Change Source/Dest.Check 기능을 비활성화하세요.

ipvsadm 설치

yum install ipvsadm

커널 매개변수 조정 (패킷 전달 가능하며 라우터 기능을 포함)

vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
VM.swappiness = 30
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 8192
net.ipv4.tcp_keepalive_intvl = 3
net.ipv4.tcp_keepalive_probes = 2
net.ipv4.tcp_keepalive_time = 10

sysctl -p

가상 IP 추가

IP addr add 172.18.1.200/24 brd 172.18.1.255 dev eth0
IP addr add 172.18.1.199/24 brd 172.18.1.255 dev eth0
IP addr show eth0

설정 정리

ipvsadm -C

치명적: 오류 삽입 ip_vs (/lib/modules/2.6.32-358.18.1.el6.x86_64/kernel/net/netfilter/ipvs/ip_vs.ko): 모듈 내 알 수 없는 심볼, 또는 알 수 없는 매개변수(dmesg 참조)
ipvs 초기화 불가: 프로토콜 불가
IP Virtual Server가 커널에 구축된 건지 모듈로 만들어진 게 확실한가요? 

위와 같은 오류가 발생하면, 참조 링크(ipv6 설치 제거 /bin/true)와 같은 방법으로 ipv6를 비활성화하세요 http://pocketstudio.jp/log3/2013/04/18/howto\_disable\_ipv6\_on\_centos/

vi /etc/modprobe.d/IPv6.conf
옵션 IPv6 비활성화=1

수동으로 DB 측 분산 설정 추가하기

ipvsadm -A -t 172.18.1.200:3306
IPVSADM -A -T 172.18.1.200:3306 -r 172.18.1.220:3306 -g -w 10

웹 측에 분산 설정 추가

ipvsadm -A -t 172.18.1.199:80
IPVSADM -A -T 172.18.1.199:80 -R 172.18.1.33:80 -M -W 10
ipvsadm -L
IP 가상 서버 버전 1.2.1 (크기=4096)
Prot LocalAddress:Port Scheduler 플래그
-> 원격 주소:포트 포워드 가중 ActiveConn InActConn
TCP 172.18.1.199:http wlc
-> 172.18.1.33:http Masq 10 0 0
TCP db-r-vip:mysql wlc
-> 172.18.1.220:mysql Route 10 0 0

설정을 저장하고 싶으시면, (ipvsadm 서비스를 시작할 때) 다음 버튼을 클릭해 주세요.

Service ipvsadm save

이번에는 ldirectord를 사용할 예정이니 주의하세요. ipvsadm을 비활성화하지 않으면 두 개를 시작하고 설정이 다시 작성되어 혼란스러워질 수 있습니다.

·심장박동 도입 설정

Linux-HA Japan http://linux-ha.sourceforge.jp/wp/dl/packages 에 문의해 보세요

CD /USR/Local/SRC
http://ftp.iij.ad.jp/pub/sourceforge.jp/linux-ha/58548/pacemaker-1.0.13-1.1.el6.x86_64.repo.tar.gz
CP -a /USR/local/src/pacemaker*.tar.gz /tmp/ 

CD /TMP
VIRSION=1.0.13-1.1.el6
tar zxvf pacemaker-$VIRSION.x86_64.repo.tar.gz

CD pacemaker-$VIRSION.x86_64.repo

yum install perl-TimeDate PyXML libtool-ltdl OpenIPMI-libs lm_sensors-libs libesmtp
yum -y -c pacemaker.repo install corosync.x86_64 heartbeat.x86_64 pacemaker.x86_64 \ 
pm_diskd pm_extras pm_logconv-HB
vi /etc/yum.conf
exclude=kernel* pacemaker pacemaker-libs corosync cluster-glue heartbeat resource-agents

vi /etc/ha.d/ha.cf
========================================
CRM 켜짐
logfile /var/log/ha-log
#debugfile /var/log/ha-디버거
로그시설 없음

디버그 0
UDp포트 34694
키팔라이브 2
워른타임 15
데드타임 30
이니티데드 60

UCAST eth0 172.18.1.23
auto_failback

노드 LVS01
노드 LVS02
uuidfrom nodename

감시견 /개발자/감시견
리스폰 루트 /USR/lib64/heartbeat/pingd -m 100 -a default_ping_set
핑 172.18.1.1
Respawn root /usr/lib64/heartbeat/diskd -N /dev/xvde1 -a diskcheck_status_internal -i 10
#respawn root: /etc/ha.d/monitoring/heartbeat_logmoni.sh monitor.
========================================
vi /etc/ha.d/authkeys
========================================
인증 1
1 CRC
========================================
chown root:root /etc/ha.d/ha.cf
chown root:root /etc/ha.d/authkeys
chmod 600 /etc/ha.d/authkeys

SCP /etc/ha.d/ha.cf LVS02:/etc/ha.d/. 
SCP /etc/ha.d/authkeys lvs02:/etc/ha.d/. 

/etc/init.d/심장박동 시작
crm_mon -1

・감독 소개 배경

yum -y install ipvsadm perl-Socket6 perl-MailTools \ 
perl-Net-SSLeay perl-libwww-perl perl-IO-Socket-INET6 ldirectord

vi /etc/ha.d/ldirectord.cf
========================================
#Global 지침
체크타임아웃=15
체크 간격=30
autoreload=예
logfile=/var/log/ldirectord.log
quiet=아니오

# HTTP를 위한 가상
가상 = 172.18.1.199:80
real=172.18.1.33:80 masq 5 # web01
Real=172.18.1.34:80 masq 5 # web02
fallback=172.18.1.71:80 masq # 미안해
체크타입=협상(negotiate)
서비스=HTTP
request=chk.html
받기=균형
스케줄러=WR
프로토콜=TCP

가상 = 172.18.1.206:80
real=172.18.1.44:80 masq 5 # Mov01
real=172.18.1.45:80 masq 5 # Mov02
fallback=172.18.1.71:80 masq # 미안해
체크타입=협상(negotiate)
서비스=HTTP
request=chk.html
받기=균형
스케줄러=WR
프로토콜=TCP

# HTTPS를 위한 가상
가상 = 172.18.1.199:443
real=172.18.1.33:443 masq 5 # web01
real=172.18.1.34:443 masq 5 # web02
fallback=172.18.1.71:443 masq # 죄송합니다
체크타입=협상(negotiate)
서비스=https
request=chk.html
받기=균형
스케줄러=WR
지속적=600
프로토콜=TCP

# MySQL 가상 서비스. 
가상 = 172.18.1.200:3306
real=172.18.1.220:3306 gate 4 # DB01
real=172.18.1.221:3306 gate 2 # DB01
서비스=MySQL
스케줄러=WLC
netmask=255.255.255.255
프로토콜=TCP
체크타입=연결

========================================
SCP /etc/ha.d/ldirectord.cf LVS02:/etc/HA.D/. 

chkconfig ldirectord off
chkconfig --list ldirectord

・EIP/PrivateIP 모바일 셸 만들기 최근 파이썬 도구들이 더 가볍고 더 나은 것 같아서 파이썬 설정에서 해보겠습니다.

http://peak.telecommunity.com/dist/ez_setup.py
파이썬 ez_setup.py
easy_install 핍
PIP 설치 AWSCLI
완전 -C aws_completer aws
vi /root/.ec2/aws.config
----- 
[기본값]
aws_access_key_id=AKIAIBLHWHEQNV*****
aws_secret_access_key=OyvqwLtDiB9HZQO44fJryv86t1vjvvmf*****
지역=AP-북동-1
----- 
echo export AWS_CONFIG_FILE=/root/.ec2/aws.config ~/.bash_profile
echo 완전 -C aws_completer AWS ~/.bash_profile
export AWS_CONFIG_FILE=/root/.ec2/aws.config

명령어 연구 중 생성하기

AWS EC2 연소 주소 도움말

서브커맨드 생성

mkdir /opt/{bin,log}
vi /opt/bin/aws_eip_ctl.sh
고양이 /opt/bin/aws_eip_ctl.sh
------------------- 
#!/빈/쾅
# 
# aws_eip_ctl.sh: ErasticIP와 PrivateIP를 제거하고 로컬 인스턴스에 할당하세요
# 의존성: AWS 명령어
# 업데이트:20131001 - 코미야이 만들기
# 
만약 [ $# -lt 2 ]; 그럼
에코 논증이 빠져 있습니다. 
에코 사용: $0 erastic_ip private_ip1,private_ip2
출구 1
그렇지 않으면
: 
Fi

export PATH=$PATH:/usr/local/bin
export AWS_CONFIG_FILE=/root/.ec2/aws.config

## 변수들
EIP=$1
PIP='echo $2|sed -e 's/// /g'''
PIP1='echo $2|awk -F, '{print $1}''
PIP2='echo $2|awk -F, '{print $2}''
MYinstanceID='/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id'
MY_ENI='aws ec2 describe-network-interfaces --filters Name=attachment.status,Values=attached,Name=attachment.instance-id,Values=$MYinstanceID|grep NetworkInterfaceId|awk '{print $2}'|sed -e 's/[,]//g'''

## 이라스틱-입 분리해. 
AWS EC2 disassociate-address --public-ip ${EIP}

## 할당 해제하고 개인 IP 할당. 
$PIP 내 I에 대해; 해야 한다
attached_ENI='aws ec2 describe-network-interfaces --filters Name=addresses.private-ip-address,Values=${i} |grep NetworkInterfaceId|awk '{print $2}'|sed -e 's/[,]//g'''
만약 [ -n ${attached_ENI} ]; 그렇다면
만약 [ ${attached_ENI} != ${MY_ENI} ]; 그렇다면
수면 2
AWS EC2 unassign-private-ip-addresses \ 
--네트워크-인터페이스-ID ${attached_ENI} \ 
--private-ip-addresses ${i}
## AWS API 서버의 슬립. 
18살 수면
AWS EC2 assign-private-ip-addresses \ 
--네트워크-인터페이스-ID ${MY_ENI} \ 
--private-ip-addresses ${i} --allow-reassign
그렇지 않으면
echo PrivateIP ${i}는 이미 이 인스턴스에 연결되어 있습니다. 
Fi
그렇지 않으면
echo PrivateIP ${i}는 바인드 인스턴스가 아닙니다. 
AWS EC2 assign-private-ip-addresses \ 
--네트워크-인터페이스-ID ${MY_ENI} \ 
--private-ip-addresses ${i} --allow-reassign
Fi
끝났어

수면 2

## 어소시에이트
AWS EC2 associate-address --instance-id $MYinstanceID \ 
--public-ip ${EIP} --private-ip-address ${PIP1} --allow-reassociation
엑시트 $? 
------------------- 
chmod 700 /opt/bin/aws_eip_ctl.sh

여기서는 bash -x로 독립 실행형 작업을 테스트합니다.

LSB 준수 리소스 스크립트 생성

vi /etc/init.d/eip_web
------- 
#!/빈/쾅
# 
# EIP 준회원 EIP. 
# 
# CHKCONFIG: 2345 99 10
# 설명: 준 EIP

# 소스 함수 라이브러리. 
. /etc/init.d/functions

에라스틱IP=xxx.xxx.131.136
PrivateIP=172.18.1.199,172.18.1.200

prog=eip_web
lock=/var/lock/subsys/$prog
log=/opt/log/aws_error.log

# 소스 구성
만약 [ -f /etc/sysconfig/$prog ] ; 그렇다면
. /etc/sysconfig/$prog
Fi

케이스 $1
시작)
echo 'date +%Y-%m-%d %T' Begin associate-EIP >> $log
터치$lock
/opt/bin/aws_eip_ctl.sh ${ErasticIP} ${PrivateIP} >> $log 2>&1
엑시트 $? 
;; 
멈춤)
echo 'date +%Y-%m-%d %T' end associate-eip >> $log
RM -F $lock
엑시트 $? 
;; 
현황)
만약 [ -f $lock ]
그럼
출구 0
그렇지 않으면
출구 3
Fi
;; 
*)
에코 $Usage: $0 {시작|정지}
출구 1
ESAC
------- 

vi /etc/init.d/eip_mob
------- 
#!/빈/쾅
# 
# EIP 준회원 EIP. 
# 
# CHKCONFIG: 2345 99 10
# 설명: 준 EIP

# 소스 함수 라이브러리. 
. /etc/init.d/functions

ErasticIP=xxx.xxx.155.40
PrivateIP=172.18.1.206

prog=eip_mob
lock=/var/lock/subsys/$prog
log=/opt/log/aws_error.log

# 소스 구성
만약 [ -f /etc/sysconfig/$prog ] ; 그렇다면
. /etc/sysconfig/$prog
Fi

케이스 $1
시작)
echo 'date +%Y-%m-%d %T' Begin associate-EIP >> $log
터치$lock
/opt/bin/aws_eip_ctl.sh ${ErasticIP} ${PrivateIP} >> $log 2>&1
엑시트 $? 
;; 
멈춤)
echo 'date +%Y-%m-%d %T' end associate-eip >> $log
RM -F $lock
엑시트 $? 
;; 
현황)
만약 [ -f $lock ]
그럼
출구 0
그렇지 않으면
출구 3
Fi
;; 
*)
에코 $Usage: $0 {시작|정지}
출구 1
ESAC
------- 
chmod +x /etc/init.d/eip* 

위 스크립트를 보조 카드에도 복사하세요.

・자원 설정

CRM
구성
원시 eip_web LSB:eip_web
원시 eip_mob LSB:eip_mob
수정
이제 리소스 그룹을 다음과 같이 편집하세요:
그룹 rg_LVS res_Mailto eip_mob eip_web res_VIPcheck_WEB res_VIP_WEB res_VIPcheck_MOB res_VIP_MOB res_VIPcheck_DB res_VIP_DB res_ldirectord
확인해
커밋
쇼

Node $id=54ce2C1a-7647-851F-2146-E7F2BDE2FCE4 LVS02
노드 $id=B6592742-BFD3-DCDF-63cc-8DB63F4EA265 LVS01
원시 eip_mob LSB:eip_mob \ 
OP start interval=0s timeout=120s on-fail=restart \ 
OP 정지 간격=0 타임아웃=120초 on_fail=블록 \ 
OP monitor interval=30초 타임아웃=120초 on_fail=재시작
원시 eip_web LSB:eip_web \ 
OP start interval=0s timeout=120s on-fail=restart \ 
OP 정지 간격=0 타임아웃=120초 on_fail=블록 \ 
OP monitor interval=30초 타임아웃=120초 on_fail=재시작
원시 res_Mailto ocf:heartbeat:MailTo \ 
주어 email=unyou-all@isao.net 매개변수=(xxxx) \ 
OP 시작 간격=0 타임아웃=60초 on_fail=재시작 \ 
OP monitor interval=10초 타임아웃=60초 on_fail=restart \ 
OP Stop interval=0 타임아웃=60초 on_fail=블록
primitive res_VIP_DB ocf:heartbeat:IPaddr2 \ 
params ip=172.18.1.200 nic=eth0 cidr_netmask=24 \ 
OP 시작 간격=0 타임아웃=60초 on_fail=재시작 \ 
OP stop interval=0 타임아웃=60초 on_fail=블록 \ 
OP monitor interval=30초 타임아웃=60초 on_fail=재시작
primitive res_VIP_MOB ocf:heartbeat:IPaddr2 \ 
params ip=172.18.1.206 nic=eth0 cidr_netmask=24 \ 
OP 시작 간격=0 타임아웃=60초 on_fail=재시작 \ 
OP stop interval=0 타임아웃=60초 on_fail=블록 \ 
OP monitor interval=30초 타임아웃=60초 on_fail=재시작
primitive res_VIP_WEB ocf:heartbeat:IPaddr2 \ 
params ip=172.18.1.199 nic=eth0 cidr_netmask=24 \ 
OP 시작 간격=0 타임아웃=60초 on_fail=재시작 \ 
OP stop interval=0 타임아웃=60초 on_fail=블록 \ 
OP monitor interval=30초 타임아웃=60초 on_fail=재시작
원시 res_VIPcheck_DB ocf:heartbeat:VIPcheck \ 
params target_ip=172.18.1.200 count=1 wait=10 \ 
OP 시작 간격=0 타임아웃=90초 on_fail=블록 \ 
OP Stop Interval=0 타임아웃=90초 on_fail=블록
원시 res_VIPcheck_MOB ocf:heartbeat:VIP 체크 \ 
params target_ip=172.18.1.206 count=1 wait=10 \ 
OP 시작 간격=0 타임아웃=90초 on_fail=블록 \ 
OP Stop Interval=0 타임아웃=90초 on_fail=블록
원시 res_VIPcheck_WEB ocf:heartbeat:VIP 체크 \ 
params target_ip=172.18.1.199 count=1 wait=10 \ 
OP 시작 간격=0 타임아웃=90초 on_fail=블록 \ 
OP Stop Interval=0 타임아웃=90초 on_fail=블록
원시 res_ldirectord OCF:심장박동:ldirector드 \ 
params configfile=/etc/ha.d/ldirectord.cf \ 
OP 시작 간격=0 타임아웃=60초 on_fail=재시작 \ 
OP monitor interval=30초 타임아웃=60초 on_fail=재시작 \ 
연산 정지 간격=0
그룹 rg_LVS res_Mailto eip_mob eip_web res_VIPcheck_WEB res_VIP_WEB res_VIPcheck_MOB res_VIP_MOB res_VIPcheck_DB res_VIP_DB res_ldirectord
위치 group_lvs 위치 rg_LVS \ 
규칙 $id=group_lvs-위치-규칙 200: #uname EQ lvs01 \ 
규칙 $id=group_lvs-location-rule-0 100: #uname EQ lvs02 \ 
규칙 $id=group_lvs-위치-규칙-1 -inf: 정의된 default_ping_set 및 default_ping_set lt 100
property $id=CIB-부트스트랩-옵션 \ 
DC-version=1.0.13-30bb726 \ 
cluster-infrastructure=심장박동 \ 
기대 정족 투표=2 \ 
no-quorum-policy=무시하기 \ 
stonith-enabled=false \ 
start-fencing=false \ 
DC-데드타임=20초 \ 
last-lrm-refresh=1380613160
rsc_defaults $id=rsc-options \ 
resource-stickiness=INFINITY \ 
이동 임계값=1

*AWS API 서버에 응답을 기다리는 시간이 있었고, 타임아웃이 오랜 시간 걸려 타임아웃 값이 증가했습니다.

이것이 설치의 끝이며, 다음 단계는 작동을 점검하는 것입니다.

crm_mon -i1 -Af

·인스턴스 복사 시 연산

vi /etc/ha.d/ha.cf
에코 LVS02 > /proc/sys/kernel/hostname; bash
sed -i 's/lvs01/lvs02/g' /etc/sysconfig/network
서비스 rsyslog 재시작; tail -f /var/log/messages
서비스 Postfix 재시작; tail -f /var/log/maillog
UCAST eth0 172.18.1.23
↓
ucast eth0 172.18.1.25

서비스 심장박동 시작

*마스터에서 먼저 구현하고 자원을 확보하세요.

tail -f /var/log/ha-log

・스위칭 테스트

확인 명령으로 확인하는 동안 심장 박동을 떨어뜨리고 스위칭 작업을 확인하세요.

IP addr show eth0
ipvsadm -Ln
crm_mon -i1 -Af
외부에서 대표 IP를 핑하기
핑 172.18.1.199
핑 172.18.1.200
핑 172.18.1.206

‧내가 빠진 곳

IPvsadm은 IPv6를 비활성화하지 않으면 작동하지 않았습니다. AWS(VPC)에서는 DSR이 평면 구성이었고, 클라이언트가 로컬 북서쪽에 있지 않으면 할 수 없었습니다. 인스턴스를 다시 만들고 "소스 변경/데이터 검사"를 비활성화하는 것을 깜빡했습니다. 부동 EI 외에 고정 EIP를 LVS에 연결하지 않으면 전역으로 가서 API 서버와 통신할 수 없다는 점을 유의하세요. 고정 EIP가 아니라면, 첫 번째 글로벌 통신은 시작이 제시간에 맞지 않고, 리소스도 시작되지 않습니다. 작은 인스턴스라면 IF에 최대 3개의 개인 IP만 부여할 수 있으니, 추가로 하나 있으면 제한 오류가 발생할 수 있으니 주의하세요. 기본 GW를 초기 값이 아닌 다른 것으로 변경하면 API에서 반환되는 메타데이터가 GW의 것이 되어 로컬 메타데이터를 얻을 수 없습니다. AWS API 서버와의 통신 등의 이유로 타임아웃 값을 늘려야 하므로 제대로 전환되지 않습니다.

·참고 사이트가 많지만 특히 도움이 되었습니다. LVS 참조 리눅스 가상 서버 튜토리얼 Stray Penguin - 리눅스 메모 (Ultra Monkey) heartbeat 참고: suz-lab - 블로그: Heartbeat+Pacemaker를 이용한 AWS에서 Asterisk Server 'High Availability NAT' 생성 (CentOS6) 중복 - Serverworks 엔지니어 블로그 HeartBeat 및 Elastic IP를 이용한 중복성 구성 테스트 - Serverworks 엔지니어 블로그 IP 및 GW 제한 정보 Amazon EC2 인스턴스 비교 [Fedora] 경로를 실행할 때 : 명령어 "SIOCADDRT: 그런 프로세스가 없습니다" 오류 - IT 생활 Linux - NIC 오프로드 기능 비활성화 - Qiita [Keeta] 저는 DELL 서버에서 CentOS 6에서 LVS+keepalived 부하 분산기를 구축하는 데 빠졌습니다 - 인프라 엔지니어 방식 - HEARTBEATS 기반 2011-11-14-AWS_System_Design SSL 사용으로 LVS DSR 환경에서 다중 SSL 인증서 설정 방법 | LVS에서의 카르페 디엠 지속성 처리

지금은 존 실패를 다루는 방법 등 여러 가지 시도해볼 점이 있을 수 있습니다. VRRP를 알아봤지만 운영 경험 문제로 거절당했습니다. 존 실패가 AMI와 스냅샷으로 수동으로 열심히 작업하는 것처럼 느껴질지 궁금합니다. 돈이 없어서 한 곳에 모아 통신 속도를 우선시하는 것과 같아요.

웹 쪽을 ELB로 분리했을 때 어떤 구성을 했는지 이야기를 올렸으니, 자유롭게 남겨주세요. VPC에서 LVS를 구축한 이야기

위 내용을 시청해 주셔서 감사합니다.

Related Articles