저는 개발자이고 작업 서버 클러스터(ESXI 클러스터의 VM)를 실행하기 위해 SQL 백업 저장소와 함께 널리 사용되는 예약 라이브러리인 Quartz.Net을 사용하고 있습니다.
Quartz.Net필요하다해당 시간은 작업 서버 인스턴스 간에 동기화되며 이를 위해 NTP를 사용하는 것이 좋습니다.
시계는 서로 1초 이내에 있어야 합니다.
우리의 시스템 관리자는 Windows NTP를 사용하여 도메인 컨트롤러와 시간을 동기화합니다. ESXI 호스트와 VM의 동기화가 꺼져 있습니다.
그들은 "1초 이내"는 올바른 요구 사항이 아니며 하드웨어 GPS 동기화 장치 없이는 충족될 수 없다고 계속 주장합니다. SLA 및 모니터링 수준은 "3분 이내"입니다.
시간이 동기화되지 않는 것과 일치하는 주기적(2~3개월에 한 번) Quartz 인스턴스의 동기화되지 않는 동작이 발생하고 있습니다.
- "1초 이내"를 요구하는 것이 맞습니까, 아니면 Quartz를 완전히 버려야 합니까?
- 그렇다면 설정에 어떤 변경이 권장됩니까?
답변1
지금은 2018년입니다. Windows는 MIFID II 규정에 따라 2ms 이내에 서버 동기화를 유지할 수 있습니다. 따라서 귀하의 문제는 문제가 아닙니다.
우리의 시스템 관리자는 Windows NTP를 사용하여 도메인 컨트롤러와 시간을 동기화합니다. ESXI 호스트와 VM의 동기화가 꺼져 있습니다.
왜? 호스트는 이를 훨씬 더 잘 처리할 수 있으며(하드웨어로서) 호스트의 호스트 수는 훨씬 적습니다. 시스템 관리자는 발에 총을 쏘고 출혈이 있다고 불평합니다.
그들은 "1초 이내"는 올바른 요구 사항이 아니며 하드웨어 GPS 동기화 장치 없이는 충족될 수 없다고 계속 주장합니다. SLA 및 모니터링 수준은 "3분 이내"입니다.
OLD - 고대 - Kerberos 티켓의 유효 기간이 5분이므로 해당 기간 내에 Windows가 동기화되었습니다.
하지만 지금은 제가 말했듯이 2018년입니다. 요즘 금융 업계는 상당히 엄격한 요구 사항을 갖고 있고 MS는 2012년부터 이를 처리해 온 것 같습니다. 2016년부터 전면 시행됩니다. 인터넷을 통한 밀리초 정확도는 해결된 문제입니다. 실제로는 괜찮은 연결을 위해 50년 전에 해결되었습니다. NTP가 이를 처리할 수 있습니다. 트래픽을 줄이려면(즉, 자신만의 Tier 3 NTP 시간 소스를 만들려면) 값싼 하드웨어 상자를 설치해야 할 수도 있지만, 이것도 비용이 많이 들지 않습니다.
"1초 이내"를 요구하는 것이 맞습니까, 아니면 Quartz를 완전히 버려야 합니까?
하드웨어와 마찬가지로 가끔씩 발생하는 시간 문제에 대해 프로그래밍해야 합니다. 그러나 "1초 이내"는 요구 사항에 대한 농담입니다. 일반적인 상황에서는 충족하기가 쉽지 않습니다.
일부 참고자료:
https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/accurate-time
다음과 같은 정부 규정: 미국의 FINRA에 대한 50ms 정확도, EU의 1ms ESMA(MiFID II).
거기에 많은 세부 사항과 지침이 있습니다. 이 문제를 해결해야 한다면 실제로 이것은 놀라운 읽기입니다. 하이퍼바이저를 업그레이드해야 할 수도 있습니다. Hyper-V에 대해 모두 이야기합니다. VMWare도 동일한 작업을 수행할 수 있지만 버전이 얼마나 오래된지는 확실하지 않습니다.
답변2
"1초 이내"를 요구하는 것이 맞습니까, 아니면 Quartz를 완전히 버려야 합니까?
다양한 애플리케이션 스택에 엄격한 시간 제어가 필요한 데에는 많은 이유가 있으며 Quartz가 요구하는 것은 결코 특이한 것이 아닙니다.
그렇다면 설정에 어떤 변경이 권장됩니까?
가장 좋은 방법은 시스템의 모든 부분이 NTP를 사용하도록 하고 동일한 NTP 서버 쌍을 가리키는 것입니다. 따라서 ESXi 호스트와 여기에서 실행되는 VM은 모두 동일한 NTP 소스를 사용하며 관련된 다른 모든 항목에도 동일합니다. 이렇게 하면 NTP 서버가 '오프 타임'인 경우에도 최소한 시스템의 모든 부분이 서로 최신 상태로 유지됩니다.
답변3
https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/support-boundary
Windows 8.1 및 2012 R2(또는 이전)에 대한 높은 정확도 지원
이전 버전의 Windows(Windows 10 1607 또는 Windows Server 2016 1607 이전)는 매우 정확한 시간을 보장할 수 없습니다. 다음 시스템의 Windows 시간 서비스:
Kerberos 버전 5 인증 요구 사항을 충족하는 데 필요한 시간 정확성 제공
공통 Active Directory 포리스트에 연결된 Windows 클라이언트 및 서버에 대해 느슨하게 정확한 시간 제공
더 엄격한 정확도 요구 사항은 이러한 운영 체제에서 Windows 시간 서비스의 설계 사양을 벗어나므로 지원되지 않습니다.
윈도우 10 및 윈도우 서버 2016
Windows 10 및 Windows Server 2016의 시간 정확도는 크게 향상되었으며, 동시에 이전 Windows 버전과의 완전한 역방향 NTP 호환성도 유지되었습니다. 올바른 운영 조건에서 Windows 10 또는 Windows Server 2016 및 최신 릴리스를 실행하는 시스템은 1초, 50ms(밀리초) 또는 1ms의 정확도를 제공할 수 있습니다.
목표 정확도: 1초(1s)
매우 정확한 시간 소스와 비교할 때 특정 대상 기계에 대해 1초의 정확도를 달성하려면 다음을 수행하십시오.
대상 시스템은 Windows 10, Windows Server 2016을 실행해야 합니다.
대상 시스템은 시간 서버의 NTP 계층 구조에서 시간을 동기화하여 매우 정확한 Windows 호환 NTP 시간 원본을 만들어야 합니다.
위에 언급된 NTP 계층 구조의 모든 Windows 운영 체제는 높은 정확도를 위한 시스템 구성 설명서에 설명된 대로 구성되어야 합니다.
대상과 소스 간의 누적 단방향 네트워크 대기 시간은 100ms를 초과할 수 없습니다. 누적 네트워크 지연은 대상에서 시작하여 소스에서 끝나는 계층 구조의 NTP 클라이언트-서버 노드 쌍 사이에 개별 단방향 지연을 추가하여 측정됩니다. 자세한 내용은 고정확도 시간 동기화 문서를 검토하세요.