ThingWorx 고가용성 > ThingWorx 고가용성을 위한 부하 분산
ThingWorx 고가용성을 위한 부하 분산
ThingWorx HA 구성을 위해서는 하나 또는 두 개의 부하 분산이 필요합니다.
하나는 ThingWorx Connection Servers로 트래픽을 전달하기 위한 것입니다. ThingWorx Connection Servers가 배포의 일부일 때만 필요합니다.
다른 하나는 현재 리더인 ThingWorx 서버로 트래픽을 전달하기 위한 것입니다. 이 부하 분산은 모든 ThingWorx HA 구성에서 필요합니다.
일반 부하 분산 요구사항
부하 분산은 자체의 고가용성 구성 내에서 작동해야 합니다.
WebSocket 트래픽을 라우팅할 수 있습니다.
정적(또는 고정) 세션을 관리할 수 있습니다.
(선택 사항) SSL 종료를 관리할 수 있습니다.
ThingWorx Connection Servers에 대한 부하 분산
연결 서버에 대한 부하 분산이 필요한 경우 부하 분산이 모든 ThingWorx 트래픽을 수신하고 다음 규칙에 따라 분산해야 합니다.
부하 분산은 WebSocket 트래픽만 연결 서버로만 전달해야 합니다. 사용자 트래픽 및 WebSocket 트래픽이 아닌 다른 트래픽은 ThingWorx 리더로 라우팅하는 다른 부하 분산으로 전달되어야 합니다.
최상의 성능을 위해 자산의 WebSocket 트래픽이 항상 고정 세션을 사용 중인 동일한 연결 서버로 이동해야 합니다.
해당 연결 서버가 오프라인 상태가 되면 해당 자산의 트래픽이 다른 연결 서버로 전달되어야 합니다.
자산과 연결 서버 간의 세션이 비활성 상태가 되면 사용 가능한 연결 서버를 사용하여 새 세션을 설정할 수 있습니다.
ThingWorx 서버에 대한 부하 분산
ThingWorx 서버로의 모든 트래픽(사용자, 자산, 연결 서버 등)은 이 부하 분산을 통해 라우팅되어야만 현재 ThingWorx 리더로 전달됩니다.
부하 분산은 각 ThingWorx 서버에서 정기적으로 서비스를 호출합니다. 이 서비스는 리더 상태로 응답합니다. 리더 코드를 부하 분산에 반환하는 ThingWorx 서버가 사용자 및 자산 트래픽을 수신합니다. 대기 코드를 반환하는 ThingWorx 서버는 트래픽을 수신하지 않습니다.
다음 조건을 충족시킬 수 있는 부하 분산을 사용할 수 있습니다.
부하 분산이 정기적으로 다음 GET 문을 ThingWorx 리더로 보내고 응답에 대해 작동합니다.
GET /Thingworx/Admin/HA/LeaderCheck
HTTP/1.0\r\nAuthorization:\ Basic\ <base64-encoded-string>
여기서 <base64-encoded-string>은 base64 형식으로 인코딩된 user:password 문자열이며 platform-settings.jsonLoadBalancerBase64EncodedCredentials 설정 값과 일치합니다.
부하 분산은 15-20초마다 이 호출을 각 ThingWorx 리더로 보내야 합니다.
ThingWorx 리더로부터의 정상 응답은 응답 코드 200입니다.
리더가 응답 코드 200을 보내는 동안 대기 서버는 400, 401 또는 503 응답 코드를 반환하고 있어야 합니다.
리더가 응답 코드 200이 아닌 세 개의 응답 코드를 보낼 경우:
부하 분산에서는 대기 ThingWorx 서버에서 응답 코드 200을 확인해야 합니다.
이제 응답 코드 200을 보내는 대기 서버가 새 ThingWorx 리더로 간주되어야 합니다.
모든 트래픽은 새 ThingWorx 리더로 전달되어야 합니다.
위 요구사항을 충족시킬 수 있는 모든 부하 분산을 ThingWorx HA 배포에 사용할 수 있습니다. 부하 분산 구성 예제는 HAProxy 예제에 나와 있습니다. 이 예제는 HAProxy( http://www.haproxy.org)를 기반으로 합니다.