programing

Java 응용 프로그램을 Pacebooker를 사용하여 MariaDB 서버에 연결

itsource 2022. 10. 4. 21:55
반응형

Java 응용 프로그램을 Pacebooker를 사용하여 MariaDB 서버에 연결

MariaDB, Galera 및 Corosync/Pacemaker를 테스트하여 Cent를 사용한 고가용성 클러스터링을 이해하려고 합니다.OS 7 서버테스트에 사용하는 클러스터 크기는 쿼럼 문제를 대부분 방지하기 위해 3대의 서버입니다.제 시험과 지원서는 자바어로 작성되어 있습니다.

클러스터링 부분은 다운되어 있습니다.액티브-액티브 구성으로 동작하며 정상적으로 동작합니다.또한 Pacebook Maker와 Corosync를 사용하여 HA를 셋업했습니다.노예들을 실망시키거나 도망치는 동안 노예들을 키우기 위해 많은 테스트를 해봤습니다.또한 마스터 연결인지 자식 연결인지에 관계없이 런타임에 세 가지 모두에 글을 썼습니다.런타임에 마스터가 다운되는 것을 테스트하려고 하면(정전, 서버 크래시 등을 시뮬레이트하기 위해), 애플리케이션 실행이 즉시 정지됩니다.저는...java.net.SocketException다른 2개의 접속이 정상적으로 셧다운된 상태에서 어플리케이션이 닫힙니다.둘 다 써봤는데kill그리고.stop(만일의 경우) 동작 여부를 테스트하고 확인하기 위한 명령어입니다.

JDBC URL 문자열

다음은 응용 프로그램을 클러스터에 연결하는 코드 부분입니다.첫 번째 마스터가 다운될 때까지 올바르게 연결되어 동작합니다.다른 2개가 다운되어도 영향을 주지 않습니다.

public void connections() {
        try {
            bigConnec = DriverManager.getConnection(
                    "jdbc:mariadb:sequential:failover:loadbalance://"
                    + "10.32.18.90,10.32.18.91,10.32.18.92/"+DB+"?autoReconnect=true&failOverReadOnly=false"
                            + "&retriesAllDown=120", 
                    "root", "PASS");
            bigConnec.setAutoCommit(false);

        } catch(SQLException e) {
            System.err.println("Unable to connect to any one of the three servers! \n" + e);
            System.exit(1);
        }
        ...
}

각 서버에는 다른 3개의 접속이 있기 때문에 이들 서버로부터 보다 쉽게 정보를 취득할 수 있습니다.이것이 생략기호입니다.서버는 어떤 노드가 프라이머리 노드인지 교환하지만 응용 프로그램은 목록의 다음 노드에 접속하지 않습니다.

모든 것이 클러스터 밖에서 작동하기 때문에 URL을 설정하는 방법에 문제가 있는 것 같습니다.또한 하위 노드를 종료해도 테스트 중에 아무 일도 일어나지 않습니다.URL이 둘 중 하나 또는 둘 다와 연결이 끊겼다는 경고가 표시됩니다.문자열 내에서 다음 사용 가능한 노드에 대한 자동 페일오버를 허용하는 방법으로 URL을 구성하는 방법이 있습니까?또는 개별 연결 URL과 개체(또는 Connection 개체의 배열)를 사용하여 다른 방법으로 URL을 구성해야 합니까? SysAdmins만이 알고 있는 블랙매직과 픽시 더스트 내가 아직 시도하지 않은 다른 방법이 있나?

내가 시도한 것

  • Corosync/Pacemaker를 사용하여 MaxScale High Availability를 실현하는 방법 (MariaDB 기사)
  • MariaDB Connector/J를 사용한 페일오버 및 고가용성(MariaDB 문서)
  • 로드밸런스에 적합한 MariaDB Galera jdbc URL 속성(스택 오버플로)
  • MariaDB Galera 클러스터를 사용한HA 프록시 구성(스택 오버플로)
  • 서버 페일오버 설정(MySQL 매뉴얼)
  • 고급 로드 밸런싱 및 페일오버 설정(MySQL 문서)

TL;DR

문제: Java 응용 프로그램이 JDBC URL에서 페일오버 및 순차 지원 플래그가 설정되어 있어도 자동으로 페일오버되지 않습니다(JDBC URL String 참조).corosync와 pacemaker에서는 모두 동작하지만, 현재 노드가 다운되었을 때 Java 어플리케이션이 프라이머리 접속으로 동작하도록 할 수 없습니다.

질문:.URL에 문제가 있습니까?그 후속으로 3개의 개별 연결을 사용하여 첫 번째 유효한 연결을 사용하는 것이 좋을까요?아니면 응용 프로그램이 현재 URL에서 사용 가능한 다음 연결로 자동으로 롤오버할 수 있도록 할 수 있는 방법이 있습니까?

소프트웨어/기기

  • 마리아DB 10.1.24
  • corosync 2.4.0
  • 페이스메이커 1.1.15
  • CentOS 7
  • Java 8 / Eclipse Neon.3 / Eclipse 4.6.3
  • MariaDB 커넥터/J 2.0.1

더 필요한 정보가 있으면 댓글로 알려주세요.가능한 한 빨리 업데이트 하겠습니다!

언급URL : https://stackoverflow.com/questions/44934212/java-application-connecting-to-mariadb-servers-using-pacemaker

반응형