2011-02-02 3 views
2

2 개 (또는 그 이상의) 유선 네트워크 리눅스 머신간에 두 개의 이벤트를 동기화하고 싶습니다. NTP를 사용하여이 작업을 수행 할 수 있습니까?이벤트 동기화 NTP 사용

NTP는 대부분 두 대의 컴퓨터가 서로 동기화되어야하는 시간 서버와의 동기화에 초점을 맞추는 것처럼 보입니다. 거기에 미묘한 차이가 있습니다. 예를 들어 한 시스템이 시간 서버의 두 번째 시스템만큼 절반의 홉 거리에있는 경우 시간 서버와 동기화하는 대신 두 시스템을 서로 직접 동기화하려고하면 더 나은 동기화를 얻을 수 있습니다 .

약간 다른 질문 : NTP를 사용하는 경우 이벤트를 예약하는 가장 좋은 방법은 무엇입니까? cronjob이나 대본에? this one과 같은 라이브러리를 사용하면 동기화 (서브 초)가 더 좋아질 수 있습니까?

마지막으로 시간 서버와 동기화하지 않고 두 대 이상의 컴퓨터를 함께 동기화하는 데 적합한 시간 동기화 소프트웨어 패키지를 아는 사람이 있습니까?

도움 주셔서 감사합니다.

답변

2

하나의 컴퓨터를 마스터로, 나머지 컴퓨터를 슬레이브로 위임 할 수 있습니다. 동기화 된 이벤트가 발생하면 마스터가 슬레이브를 시작하도록 트리거합니다.

동기화는 시스템 간의 대기 시간 (ping)에 의해서만 제한되므로 시스템 클럭의 일관성에 대해 걱정할 필요가 없습니다.

+0

그래서 ntp 서버를 만드시겠습니까? – devin

+1

NTP가 반드시 필요한 것은 아닙니다. 목표가 단순히 동기화 된 실행을 얻는 것이라면 처리를 시작할시기를 다른 노드에 알려주는 마스터 만 있으면됩니다.그런 다음 시스템 클록은 실행 동기화에 영향을 미치지 않습니다. – earldouglas

0

호스트 간의 핑 지연 시간은 어떻게됩니까? 어떤 종류의 시작 시간에서 조정 프로세스 간의 불일치가 괜찮습니까? 어떻게 프로세스를 시작할 것입니까? Cron은 매우 부정확하며 프로세스의 시작 시간도 고려해야합니다.

다른 호스트에 ping 시간이 크게 다를 경우이 작업을 수행 할 것입니다.

  • 신뢰할 수있는 공용 NTP 서버를 사용하여 이벤트가 발생하기 몇 분 전에 모든 조정 된 호스트의 시계를 동기화하십시오. 빈번한 이벤트의 경우 하루 3-4 회의 동기화가 충분히 이루어져야합니다.

  • 예를 들어 cron과 같은 저 정밀도 스케줄러를 사용하여 2-3 분 전에 미리 간단한 래퍼 셸 스크립트 (wait())를 시작합니다. 이벤트 15 초 전. 그런 다음 래퍼 스크립트는 보통 우선 순위보다 높은 태그 시작 앱을 시작합니다.

  • 응용로드, 그 다음은 usleep()ftime() 또는 gettimeofday()를 사용하여 초 단위 이하의 정밀도로 시작 순간까지 대기하는 등, (디스크 액세스 및 동적 링크 속도가 느립니다) 데이터 파일이 필요 어떤 읽고, 모든 시간이 많이 걸리는 계산을한다 fireLasersAtTheMoon() 바로 앞에 올리거나 타겟 액션이 어떻게 될지 생각해보십시오.

분명히 네트워크 통신과 같이 자연스럽게 부정확 한 동작을 정확하게 동기화하는 것은 의미가 없습니다. 네트워크에 예상 대기 시간이있는 경우 왕복 시간을 ping으로 측정하고 한 호스트에서 마스터 프로세스를 만들어 ssh를 통해 시작 명령을 다른 호스트로 보내면 계정 대기 시간이 생깁니다.