본문 바로가기

Ignite - 기술

네트워크 구성

IPv4 대 IPv6

Ignite는 IPv4 및 IPv6 지원을 시도하지만 이로 인해 클러스터가 분리되는 문제가 발생할 수 있습니다. IPv6이 필요하지 않은 경우 가능한 해결책은 -Djava.net.preferIPv4Stack=trueJVM 매개 변수 를 설정하여 Ignite를 IPv4로 제한하는 것 입니다.

발견

이 섹션에서는 TCP / IP 프로토콜을 사용하여 검색 메시지를 검사하고 TcpDiscoverySpi클래스 에서 구현되는 기본 검색 메커니즘의 네트워크 매개 변수를 설명합니다 .

다음과 같이 검색 메커니즘의 속성을 변경할 수 있습니다.

 

다음 표에서는의 가장 중요한 몇 가지 속성을 설명 TcpDiscoverySpi합니다. TcpDiscoverySpi javadoc 에서 전체 속성 목록을 찾을 수 있습니다 .

특성기술기본값

localAddress

검색에 사용되는 로컬 호스트 IP 주소입니다.

기본적으로 노드는 찾은 첫 번째 비 루프백 주소를 사용합니다. 사용 가능한 비 루프백 주소가 없으면 java.net.InetAddress.getLocalHost()이 사용됩니다.

localPort

노드가 바인딩되는 포트입니다. 기본값이 아닌 값으로 설정하면 다른 클러스터 노드가 노드를 검색 할 수 있으려면이 포트를 알아야합니다.

47500

localPortRange

(가) 경우 localPort바쁜가 사용 가능한 포트를 찾을 때까지, 노드 시도 (1 씩 증가) 다음 포트로 바인딩하고이 과정을 계속합니다.  localPortRange속성은 노드가 시도 할 포트 수를 정의합니다 (에서 시작 localPort).

100

soLinger

Discovery SPI에서 사용하는 TCP 소켓의 닫을 때 지연 시간 초과를 지정합니다. Socket.setSoLinger이 설정을 조정하는 방법에 대한 자세한 내용 은 Java API를 참조하십시오 . Ignite에서 시간 제한 은 SSL 연결로 잠재적 인 교착 상태 를 방지하기 위해 음수가 아닌 값으로 기본 설정 되지만 부작용으로 클러스터 노드 장애 감지를 연장 할 수 있습니다. 또는 SSL 문제가 수정 된 버전으로 JRE 버전을 업데이트하고 그에 따라이 설정을 조정하십시오.

0

reconnectCount

노드가 다른 노드에 연결을 시도 (재) 시도하는 횟수입니다.

10

networkTimeout

네트워크 작업에 대한 최대 네트워크 제한 시간 (밀리 초)입니다.

5000

socketTimeout

소켓 작업 시간이 초과되었습니다. 이 제한 시간은 연결 시간 및 소켓에 쓰기 시간을 제한하는 데 사용됩니다.

5000

ackTimeout

검색 메시지에 대한 승인 시간 초과입니다. 이 제한 시간 내에 승인이 수신되지 않으면 감지 SPI는 메시지 재전송을 시도합니다.

5000

joinTimeout

결합 제한 시간은 노드가 클러스터 결합을 기다리는 시간을 정의합니다. 비공유 IP 파인더가 사용되고 노드가 IP 파인더의 주소에 연결하는 데 실패하면 노드는이 제한 시간 내에 계속 결합을 시도합니다. 모든 주소가 응답하지 않으면 예외가 발생하고 노드가 종료됩니다. 0무기한 대기를 의미합니다.

0

statisticsPrintFrequency

노드가 검색 통계를 로그에 인쇄하는 빈도를 정의합니다. 0인쇄되지 않음을 나타냅니다. 값이 0보다 크고 조용한 모드가 비활성화 된 경우 통계는 매 기간 한 번씩 INFO 수준에서 인쇄됩니다.

0

통신

노드가 서로를 발견하고 클러스터가 형성되면 노드는 통신 SPI를 통해 메시지를 교환합니다. 메시지는 작업 실행, 데이터 수정 작업, 쿼리 등과 같은 분산 클러스터 작업을 나타냅니다. 통신 SPI의 기본 구현은 TCP / IP 프로토콜을 사용하여 메시지를 교환합니다 ( TcpCommunicationSpi). 이 섹션에서는의 속성에 대해 설명합니다 TcpCommunicationSpi.

각 노드는 다른 노드가 연결하고 메시지를 보내는 로컬 통신 포트와 주소를 엽니 다. 시작시 노드는 지정된 통신 포트 (기본값 : 47100)에 바인딩을 시도합니다. 포트가 이미 사용 된 경우 노드는 사용 가능한 포트를 찾을 때까지 포트 번호를 증가시킵니다. 시도 횟수는 localPortRange속성에 의해 정의됩니다 (기본값 : 100).

 

다음은의 몇 가지 중요한 속성 목록입니다 TcpCommunicationSpi. TcpCommunicationSpi javadoc 에서 모든 속성 목록을 찾을 수 있습니다 .

특성기술기본값

localAddress

바인딩 할 통신 SPI의 로컬 주소입니다.

localPort

노드가 통신에 사용하는 로컬 포트입니다.

47100

localPortRange

노드가 사용 가능한 포트를 찾을 때까지 순차적으로 바인딩하려는 포트 범위입니다.

100

tcpNoDelay

TCP_NODELAY소켓 옵션 의 값을 설정합니다 . 승인되거나 생성 된 각 소켓은 제공된 값을 사용합니다.

trueTCP를 통한 통신 중 요청 / 응답 시간을 줄이려면 이 옵션을 (기본값) 으로 설정해야합니다 . 대부분의 경우이 옵션을 변경하지 않는 것이 좋습니다.

true

idleConnectionTimeout

연결이 종료 된 후의 최대 유휴 연결 시간 제한 (밀리 초)입니다.

600000

usePairedConnections

노드 간 이중 소켓 연결을 적용해야하는지 여부입니다. 로 설정 true하면 통신 노드간에 두 개의 개별 연결이 설정됩니다. 하나는 발신 메시지 용이고 다른 하나는 수신 메시지 용입니다. 로 설정 false하면 단일 TCP 연결이 양방향으로 사용됩니다. 이 플래그는 메시지를 전달하는 데 너무 오래 걸리는 일부 운영 체제에서 유용합니다.

false

directBuffer

NIO 힙 할당 버퍼 대신 NIO 직접 버퍼를 할당할지 여부를 나타내는 부울 플래그입니다. 직접 버퍼가 더 잘 수행되지만 경우에 따라 (특히 Windows에서) JVM 충돌을 일으킬 수 있습니다. 환경에서 이런 일이 발생하면이 속성을로 설정하십시오 false.

true

directSendBuffer

메시지를 보낼 때 NIO 힙 할당 버퍼 대신 NIO 직접 버퍼를 사용할지 여부입니다.

false

socketReceiveBuffer

통신 SPI에서 생성하거나 수락 한 소켓의 수신 버퍼 크기입니다. 로 설정 0하면 운영 체제의 기본값이 사용됩니다.

0

socketSendBuffer

통신 SPI에서 생성하거나 수락 한 소켓의 전송 버퍼 크기입니다. 0운영 체제의 기본값으로 설정하면 사용됩니다.

0

연결 시간 초과

연결 시간 초과를 정의하는 몇 가지 속성이 있습니다.

특성기술기본값

IgniteConfiguration.failureDetectionTimeout

서버 노드의 기본 네트워크 작업에 대한 시간 초과입니다.

10000

IgniteConfiguration.clientFailureDetectionTimeout

클라이언트 노드에 대한 기본 네트워크 작업의 제한 시간입니다.

30000

아래 예와 같이 노드 구성에서 실패 감지 제한 시간을 설정할 수 있습니다. 기본값을 사용하면 검색 SPI가 대부분의 온-프레미스 및 컨테이너화 된 배포에서 안정적으로 작동 할 수 있습니다. 그러나 지연 시간이 짧은 안정적인 네트워크에서는 오류를 더 빨리 감지하고 대응하기 위해 매개 변수를 ~ 200 밀리 초로 설정할 수 있습니다.