티스토리 뷰

System Story/Project

Shell기반 MySQL DB HA 구현 #1

불량펭귄 helperchoi 2013. 11. 17. 01:30

[ Linux Shell기반 MySQL DB HA 구현 ]


안녕하세요 불량펭귄 최광민 입니다.

요즘 HA 구현에 관심이 생겨 조그만 개인 프로젝트를 시작하게 되었습니다.

DB HA Cluster 솔루션중 상용솔루션들은 역시나 그 비용이 만만치 않기 때문에 HA본연의 기능에 충실하고 간단히 구성 및 운영이 가능한 오픈소스 기반의 HA 솔루션 구현을 목표로 하고 있으며

유지보수나 개작의 편의를 위해 Linux Bash Shell 기반으로 개발 중입니다.

 

사용권한은 상업적 목적으로 이용하지 않는다는 전재하에 개인, 기업을 구분하지 않을 생각입니다.

아무쪼록 많은 관심 부탁드리며 오늘은 간단히 구조에 대해서만 논하고자 합니다.

 

1. HA란?

HA란 High Availability 의 약자로서 우리말로 표현하자면 고가용성이라 할 수 있습니다.

서버나 네트워크등의 서비스에 대해서 여러가지 유형의 장애시 지속적으로 서비스를 제공할 수 있는 환경을 구현하는데 목적을 두고 있으며,

오픈소스 기반에서는 GPL 라이센스로 배포된 HeartBeat 이 대표적입니다.

 

2. 구현시 제반사항

 1) Linux 기반의 동일한 Disk 구조와 2개의 HA용 노드가 필요.

 2) HA 노드간 DB Data Volume의 Shared 구성을 위해 iSCSI Volume을 제공 할 Linux Server 또는 Storage 전용장비 필요

 3) HA Cluster로 구성된 MySQL DB는 HA VIP를 통하여 서비스를 제공하며 이때 iSCSI 보안 및 Service 트래픽과의 중복 및 병목을 막기 위해 Storage Network은 별도로 구성하는 것이 좋으며 불가피하게 Service 네트워크와 동일하게 구성 할 경우 iSCSI Service Port 인 TCP 3260 에 대하여 OS iptables를 통해 필터링 요망

 4) HA 노드간 모니터링 및 컨트롤을 위해 SSH RSA 인증을 통한 노드간 인증 필요

 

3. Dependency 정의

 1) 최상위 - MySQL DB
 2) 차상위 1 - HA VIP
 3) 차상위 2 - iSCSI Shared Data Volume

 

4. HA 절체 조건 및 모니터 대상

 1) MySQL DB 프로세스

 2) MySQL Service Port (TCP 3306)

 3) service network or HA VIP fail

 

아래는 미리 구현해둔 HA VIP 전환시 사용되는 단위 모듈의 테스트 예시입니다.

아무쪼록 빠른 배포가 될 수 있도록 많은 분들의 응원 부탁드립니다.

이상입니다. 감사합니다.

 

 

[ HA VIP 전환 구현 ]

[root@TEST02 mysql_ha]#
[root@TEST02 mysql_ha]# pwd
/opt/mysql_ha
[root@TEST02 mysql_ha]#
[root@TEST02 mysql_ha]#


테스트시 Active Node는 TEST02 / HA VIP는 192.168.137.50 


[root@TEST02 bin]#
[root@TEST02 bin]#
[root@TEST02 bin]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:E2:B9:11 
          inet addr:192.168.137.20  Bcast:192.168.137.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:462945 errors:0 dropped:0 overruns:0 frame:0
          TX packets:227401 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:68451355 (65.2 MiB)  TX bytes:127808778 (121.8 MiB)

eth0:1    Link encap:Ethernet  HWaddr 08:00:27:E2:B9:11 
          inet addr:192.168.137.50  Bcast:192.168.137.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:89 errors:0 dropped:0 overruns:0 frame:0
          TX packets:89 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:23898 (23.3 KiB)  TX bytes:23898 (23.3 KiB)

[root@TEST02 bin]#
[root@TEST02 bin]#

 

※ Slave Node 인 TEST03 에서 VIP 전환 수행

[root@TEST03 bin]#
[root@TEST03 bin]#
[root@TEST03 bin]# hostname
TEST03
[root@TEST03 bin]#
[root@TEST03 bin]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:0D:9A:0E 
          inet addr:192.168.137.30  Bcast:192.168.137.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:35593 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27427 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:20354110 (19.4 MiB)  TX bytes:2946949 (2.8 MiB)

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:155 errors:0 dropped:0 overruns:0 frame:0
          TX packets:155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:16372 (15.9 KiB)  TX bytes:16372 (15.9 KiB)

[root@TEST03 bin]#
[root@TEST03 bin]# ./vip_up.sh

[ WARNING ] HA Active node is TEST02!!!
[ WARNING ] HA Active node Change - TEST02 -> TEST03!!!
[ WARNING ] HA VIP Down - TEST02
[ INFO ] HA VIP Up - TEST03
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:0D:9A:0E 
          inet addr:192.168.137.50  Bcast:192.168.137.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


[root@TEST03 bin]#


 

※ HA가 활성화된 Active Node에서 실행시 예외 처리 테스트

[root@TEST03 bin]#
[root@TEST03 bin]#
[root@TEST03 bin]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:0D:9A:0E 
          inet addr:192.168.137.30  Bcast:192.168.137.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:36591 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28191 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:20466367 (19.5 MiB)  TX bytes:3090437 (2.9 MiB)

eth0:1    Link encap:Ethernet  HWaddr 08:00:27:0D:9A:0E 
          inet addr:192.168.137.50  Bcast:192.168.137.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:155 errors:0 dropped:0 overruns:0 frame:0
          TX packets:155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:16372 (15.9 KiB)  TX bytes:16372 (15.9 KiB)

[root@TEST03 bin]#
[root@TEST03 bin]#
[root@TEST03 bin]# ./vip_up.sh

[ ERROR ] HA VIP - 192.168.137.50 is Busy !!!
[ ERROR ] This node is HA Active node - TEST03
[ INFO ] HA VIP Info - TEST03
eth0:1    Link encap:Ethernet  HWaddr 08:00:27:0D:9A:0E 
          inet addr:192.168.137.50  Bcast:192.168.137.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


[root@TEST03 bin]#  

 

 

 

반응형

'System Story > Project' 카테고리의 다른 글

Shell기반 MySQL DB HA 구현 #1  (0) 2013.11.17
TAG
, ,
댓글
댓글쓰기 폼