블로그 이미지
분무기로 구름을 만들어 비가 내리다. 비내리는사막

카테고리

분류 전체보기 (28)
Cloud (9)
IT용어 (1)
뽐뿌 (1)
개인 (1)
Total
Today
Yesterday

달력

« » 2024.5
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 31

공지사항

최근에 올라온 글

AWS Aurora Failover시 설정과 관련하여 이슈사항 및 참고사항에 대하여 공유드립니다.

 

프로젝트를 진행하시다 보면 AWS Aurora를 이용하여 진행하는 사이트도 있을텐데 Database Failover 테스트시

WAS단에서 Connection들이 정상적으로 Failover 되지 않는 현상이 있습니다.(Write불가, Read만 가능)

 

위의 문제로 이슈가 발생했고 해결한 내용에 대하여 공유드립니다.

 

-       테스트 장비

Aurora Master DB 1, Read-Replica 1

Connection : Min(50), Max(50)

-       테스트 상황

1.     Master -> Read-replica Failover

2.     Read-replica(1번 작업진행 후) -> Master Failover

위의 2가지 시나리오대로 진행 후 WAS에서 정상적으로 Application 동작여부 체크

-       이슈 사항

- DB는 정상적으로 Failover 되었음에도 Application에서는 Read-replica 쪽 디비를 바라보고 있음.

 

해결방안

1.     AWS Aurora Mysql JDBC를 사용하면 안되고, 반드시 Maria JDBC를 사용할것을 권장드립니다.

JAVA설치 후 .JAR 파일을 추가시 JAVA/lib 폴더 밑에 Mysql JDBC파일과 Maria JDBC파일이 같이 존재하면 LIB 파일간의 충돌이 일어날 가능성이 많음

JDBC_DIRVER설정을 Maria로 선언 하여도 2개가 존재하면 driver간의 충돌이 일어나는 현상이 있습니다.

2.     JVM TTL값을 60부터 그이상으로 설정하기를 권장드립니다.(Default : 10)

WAS엔진 종류에 따라서 NETWORKADDRESS_CACHE_TTL의 작동 방식이 다릅니다.

Tomcat의 경우 설정시간에 따라 성공시 Cache를 하지만, 그 외 엔진들은 설정시간마다 Cache를 진행하는 방식인듯 합니다.

어떠한 엔진이 1 Cache를 하고 매번 Cache를 하는지는 Test해보진 않았지만 위 2가지 방식으로 동작합니다.

Amazone의 공식 매뉴얼 : https://docs.aws.amazon.com/ko_kr/sdk-for-java/v1/developer-guide/java-dg-jvm-ttl.html

 

결론

           Aurora Failover될떄 클러스터엔드포인트에 맵핑된 IP변환이 시간과 TTL에 설정된 시간이 맞지 않아서 발생하는 문제인듯 합니다.

           AWS매뉴얼에도 보면 TTL값을 60초 미만으로 설정하라고 되어 있지만 40부터 설정을 바꿔가며 테스트 해봤는데 60초가 적당한 듯 합니다.


'Cloud > AWS' 카테고리의 다른 글

CentOS root volume Resize  (0) 2018.02.09
AWS 스터디 및 공부방법 링크  (0) 2016.11.22
[AWS] RDS Root 권한 획득  (0) 2016.01.29
[AWS] Auto Scaling Group내 AMI, Instance Type 변경하기  (0) 2016.01.13
[AWS] Region간 Migrion 방법론  (0) 2016.01.10
Posted by 비내리는사막
, |

최근에 달린 댓글

글 보관함