문제

고가용성을 위해 자동으로 다른 서버로 올바르게 장애 조치되도록 Windows 서비스(제 경우에는 .NET에서 개발)를 실행하기 위한 확립된 모범 사례를 아는 사람이 있습니까?

이 작업이 수행되는 것을 볼 수 있는 주요 방법은 필요할 때 보조 서버를 시작하거나(이 경우 다른 서버를 모니터링하는 무언가가 필요함) 두 서비스를 함께 실행하는 것입니다(이 경우 작업을 동기화해야 함). 그들은 같은 일을 하려고 하지 않습니다).

이런 종류의 문제에 대한 패턴이나 모델이 있습니까?정확한 상황이 큰 변화를 가져올 것이라는 것을 알고 있지만 상당히 일반적인 문제인 것 같습니다.

감사해요

남자

도움이 되었습니까?

해결책

나를 위해 일한 것은 다음과 같습니다.

인프라 관점에서 클러스터링된 2개의 Windows 서버가 필요합니다.(2개의 표준 Windows Server 상자가 가능하며 클러스터링 부분을 설치 및 구성할 수 있으며 대부분의 시스템 관리자는 이 작업을 수행하는 방법을 알고 있어야 합니다.) 다음으로 클러스터의 두 노드에 서비스를 설치하고 둘 다 끄고 수동으로 설정합니다. 시작.다음으로, 활성화된 노드에서 서비스를 켜고 끄는 것을 관리할 서비스의 Windows 클러스터 관리자에 클러스터된 리소스를 추가합니다.서비스가 실행되는 시기와 노드를 Windows 클러스터에서 관리하도록 하세요.이는 서비스를 클러스터링하는 쉬운 부분입니다.

서비스 관점에서는 가능한 한 상태 비저장이 가능하도록 서비스를 설계해야 합니다.이것은 다소 형편없는 조언이지만 실제로는 서비스가 수행하는 작업에 따라 다릅니다.설계에서는 코드 수명 중 어느 시점에서 최악의 시간에 중지될 것이라고 가정합니다.node2의 서비스는 node1이 중단된 곳에서 픽업할 위치를 어떻게 알 수 있나요?이것이 바로 디자인해야 하는 어려운 부분입니다.서비스가 수행하는 작업에 따라 마지막으로 완료된 작업을 db 테이블이나 공유 데이터 파일에 남겨둘 수 있습니다.처음부터 시작하고 작업을 수행하기 전에 해당 작업이 완료되었는지 다시 확인하도록 할 수도 있습니다.

다시 말하지만, 이는 서비스가 무엇을 달성해야 하는지에 따라 달라집니다.도움이 되었기를 바랍니다.

다른 팁

두 시간을 항상 실행하는 것은 아마도 가장 간단한 솔루션이지만, 50%를 넘지 않아야합니다. 그렇지 않으면 실패하면 다른 하나는 과부하가 발생하여 실패 할 수 있습니다.

동기화하려면 트랜잭션 데이터베이스를 사용하십시오. 자신의 동기화를 작성하려고하면 일반적으로 버그가 발생합니다.

두 서비스를 모두 수행 할 수 있다면 더 좋습니다. 상태 문제를 처리하거나 상태 문제를 처리하는 방법을 알아야하며 데이터베스는 그 사이에 동기화됩니다. 단일 실패 지점에서 문제를 DB로 푸시하고 2 노드 활성 활성 클러스터를 가질 수 있으며 DB 제조가 동기화 문제를 처리하도록 할 수 있습니다.

장애 조치를 다루는 가장 좋은 방법은 가능한 한 네트워크 수준에 있다고 생각합니다. 가상 IPS 전면로드 밸런스 또는 기본/장애 조치 환경은 장애 조치 시나리오에 대한 코드를 작성하지 않아도되는 좋은 방법입니다.

코드에서 장애 조치를 처리 해야하는 경우 :

  1. 연결/서비스 호출을 테스트합니다
  2. 테스트가 실패하면 알림을 보내십시오
  3. 다음 "등록 된"서비스 엔드 포인트로 실패하십시오

두 가지 기본 접근법이 있습니다.

  1. 클라이언트는 필요에 따라 또는 다른 서비스 또는 구성 메커니즘의 지시에 따라 다른 엔드 포인트 주소 및 스위치를 알고 있습니다. (예로서 스톡 트레이더 데모 애플리케이션 이렇게합니다.)

  2. 클라이언트는 알지 못하고 표준 네트워크로드 밸런싱 접근 방식을 사용하여 장애 조치를 제공 할 수 있습니다. F5는 하나의 제품입니다. 다른 많은 사람들이 있습니다. 기본적으로 모든 요청이 NLB를 통과하고 서버로 보내고 응답을 발신자에게 전달합니다. 이 제품은 서비스를 모니터링하고 업체 만 사용합니다. 또한 서버 워크로드를 기반으로 서버에 새 요청을 할당하도록 규칙으로 사용자 정의 할 수 있습니다. Windows Server에는 이것을 가지고 있습니다 기능이 어느 정도 내장되어 있습니다.

어느 쪽이든, 서비스 통화가 "무국적"인 경우 훨씬 쉽습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top