티스토리 뷰
IDC에 웹 CMS용 서버 1대 운용중이었는데
어느날 D state process 장애로 6시간동안 정상적 서비스를 하지 못하였고
이후를 장애를 대비하기 위해 서버 이중화 구성을 검토하게 됨.
제일 좋은 구성은 앞단에 로드밸런서를 놓고
Global 세션 서버도 추가하고
CMS 서버를 하나 더 추가하는것이겠으나
이렇게 하려면 총 3대의 서버가 필요.
허나, 가용 가능한 서버는 1 대 뿐.
구글링을 통하여 총 2대에서 가능한 failover 스택 찾음.
- Heartbeat
- Pacemaker + corosync (위 Heartbeat 의 다음세대 스택)
- Keepalived
Heartbeat 는 legacy 한 스택이라 패스하고
pacemaker 는 복잡복잡열매가 열려서 패스하니
keepalived 만이 남음.
Vagrant 를 통해 구성을 해보고
failover 테스팅 결과
구성 난이도가 높지 않고 잘 동작.
이하부터 기존 서버는 node1
추가 서버는 node2 로 지칭.
추가 서버는 node2 로 지칭.
node1 에 가상 IP 교체 추가
- eth0 랜카드에 부여했던 IP 주소는 가상 네트워크 인터페이스 eth0:0 의 IP 주소로 셋팅
- eth0 랜카드에는 새 IP 주소 할당
cp /etc/sysconfig/network-scripts/eth0 /etc/sysconfig/network-scripts/eth0:0
vi /etc/sysconfig/network-scripts/eth0:0
- DEVICE=eth0:0TYPE=EthernetONBOOT=yesIPV6INIT=noNM_CONTROLLED=noBOOTPROTO=noneIPADDR=172.30.0.23PREFIX=24GATEWAY=172.30.0.1
- vi 저장하고 닫기
- 네트워크 서비스 재시작
systemctl restart network
- ip 셋팅 확인
ifconfig -a
패킷 포워딩 설정
모든 노드에 아래 설정
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
keepalived 설치
모든 노드에 아래 구성
yum install -y keepalived
systemctl enable keepalived
systemctl start keepalived
keepalived 설정 - node1
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.old
vi /etc/keepalived/keepalived.conf
- 아래 참고하여 자신의 환경에 맞게 설정
! Configuration File for keepalived global_defs { notification_email { network-admins@domain.com system-admins@domain.com } notification_email_from web_node1@domain.com smtp_server localhost smtp_connect_timeout 30 router_id WEB_CLUSTER1 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.0.23 } }
- 서비스 재로딩
systemctl reload keepalived
- 서비스 가동 확인
tailf /var/log/messages
keepalived 설정 - node2
mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.old
vi /etc/keepalived/keepalived.conf
- 아래 참고하여 자신의 환경에 맞게 설정
! Configuration File for keepalived global_defs { notification_email { network-admins@domain.com system-admins@domain.com } notification_email_from web_node1@domain.com smtp_server localhost smtp_connect_timeout 30 router_id WEB_CLUSTER1 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.0.23 } }
- 서비스 재로딩
systemctl reload keepalived - 서비스 가동 확인
tailf /var/log/messages
FailOver 테스팅
- 가상 IP 에 핑 테스팅
ping 172.16.0.23
- 본인은 Vagrant (가상OS) 로 node1, 2 를 구성했기에 아래와 같은 명령으로 머신을 켜고 끄며 테스팅해봄
vagrant suspend node1
vagrant up node1
참고
- http://www.serverlab.ca/tutorials/linux/network-services/deploy-keepalived-load-balance-cluster-centos-6-5/
- http://netggio.pe.kr/wiki/index.php/Keepalived/ipvs%EC%9D%84_%EC%9D%B4%EC%9A%A9%ED%95%9C_%EB%A6%AC%EB%88%85%EC%8A%A4_L4_-_DR(Direct_Routing)_%EA%B5%AC%EC%B6%95
'OS-서버-서비스 > Linux' 카테고리의 다른 글
Ubuntu apt 명령으로 설치한 패키지가 어떤 경로에 어떤 파일들을 설치했나 확인 (0) | 2019.02.13 |
---|---|
CentOS 6.x 에 image cache 및 리사이징 서버 imageproxy 설치 (0) | 2018.03.10 |
암호 없이 ssh-keygen & ssh-copy-id 사용하여 SSH 로그인 수행 3단계 (0) | 2016.11.24 |
ubuntu 설치된 패키지 목록 검색 (0) | 2016.11.11 |
CentOS 6 최신 패키지 저장소 EPEL, REMI 셋팅 (0) | 2016.04.07 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- Make Use Of
- How to geek
- 인터넷 통계정보 검색시스템
- 트위터 공유 정보모음
- 웹표준KR
- 치우의 컴맹탈출구
- Dev. Cheat Sheets
- w3schools
- Dev. 조각들
- ASP Ajax Library
- CSS Tricks
- WebResourcesDepot
- jQuery Selectors Tester
- DeveloperSnippets
- Smashing Magazine
- Nettuts+
- devListing
- 웹 리소스 사이트(한)
- Mobile tuts+
- Dream In Code
- Developer Tutorials
- CSS3 Previews
- 자북
- 안드로이드 사이드
- Code Visually
- Code School
- SQLer.com
- 무료 파워포인트 템플릿
- iconPot
- Free PowerPoint Templates
- Design Bombs
- Web Designer Wall
- 1st Webdesigner
- Vandelay Design
- 무료 벡터 이미지 사이트들
- Tripwire Magazine
- Web TrendSet
- WebMonkey
- 윤춘근 프리젠테이션 디자이너 블로그
- cz.cc 무료 DNS
- [웹하드] MediaFire
- [웹하드] DivShare
- 한컴 인터넷 오피스
TAG
- Chrome
- Debug
- classic asp
- CSS
- 워드프레스
- IE
- mssql
- 안드로이드
- Android
- API
- nginx
- ASP
- git
- Mac
- javascript
- JSON
- sencha touch
- Linux
- iphone
- centos
- nodejs
- JQuery
- laravel
- Wordpress
- 한글
- IOS
- Prototype
- PHP
- iis
- Docker
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함