본문 바로가기
👷삽질기록

로드밸런싱 설정

by 랼랼 2024. 10. 17.

이중화 된 DB를 로드밸런싱하여 처리량을 분산시킨다

 

DB가 이중화되어있는데, 사용자 분산처리를 못하고 있다?!

 

이럴 때는 간단하게 데이터 베이스 connection URL 에 옵션을 주어 로드벨런싱 설정을 할 수 있다.

 

예를들어 오라클 DB 2개가 다음과 같이 주어져있다.


[IP : 123.123.123.123 / port : 1234] 

[IP : 123.123.123.567 / port : 5678] 

 

이 2개의 서비스를 JDBC 를 통해 로드밸런싱하여 연결하고 싶다면

URL 항목을 다음과 같이 작성하면 된다.  

 

jdbc:oracle:thin:@(DESCRIPTION=
    (ADDRESS_LIST=
        (ADDRESS=(PROTOCOL=TCP)(HOST=123.123.123.123)(PORT=1234))
        (ADDRESS=(PROTOCOL=TCP)(HOST=123.123.123.567)(PORT=5678))
    )
    (LOAD_BALANCE=ON)
    (FAILOVER=ON)
    (CONNECT_DATA=
        (SERVER=DEDICATED)
        (SERVICE_NAME=server_name)
    )
)

 

각 세부의 내용은 다음과 같다. (이는 chatGPT의 도움을 받았다)

 

  • ADDRESS_LIST: 여러 주소를 정의하여 로드 밸런싱 및 페일오버를 지원하는 구조.
    • ADDRESS: 각각의 데이터베이스 서버 주소를 정의합니다.
      (PROTOCOL=TCP)(HOST=123.123.123.123)(PORT=1234)와 같은 형식으로 설정합니다.
  • LOAD_BALANCE=ON: 클라이언트가 로드 밸런싱을 수행하도록 설정합니다.
            클라이언트는 각 연결 시 가능한 서버들 중에서 무작위로 하나를 선택합니다.
  • FAILOVER=ON: 데이터베이스 서버가 사용 불가능할 경우, 다른 주소로 자동으로 페일오버를 수행합니다.
  • CONNECT_DATA: 데이터베이스 서비스의 연결 정보를 포함합니다.
    • SERVER=DEDICATED: 서버 전용 프로세스를 사용합니다.
    • SERVICE_NAME=service_name: 연결할 서비스 이름을 지정합니다. (service_name 에는 해당 서버의 이름을 적는다)

 

 

이렇게 URL에 간단히 옵션을 추가함으로서 사용량을 분산하여 DB에 접근이 가능하게 설정할 수 있다.

 


 

이러한 방법의 로드밸런싱의 장점은 무엇일까?

 

정리하면 고가용성, 부하 분산, 자원 효율성, 장애 복구 라고 할 수 있다.

부하 분산은 DB에 대한 병목을 줄이고 시스템 성능을 최적화하는 데 도움을 주며,

FailOver 옵션을 통해 한 DB 서버가 작동이 불가하여도 다른 서버가 대체할 수 있어 안정적으로 운영이 가능하다.

 

다만 랜덤하게 분산처리하기에 부하가 불균형하게 일어날 수 있으며

데이터의 일관성에 문제가 발생할 수도 있어, 적용 후 정상 작동이 되는지 모니터링을 해야 한다.

 

 

반응형

댓글