Unix 서버 미러링 솔루션

Unix 서버 미러링 솔루션

Ubuntu Server 10.04를 실행하는 3개의 서버가 있으며 DNS를 통해 이들 간의 로드 밸런싱을 수행합니다. 콘텐츠를 제공하기 위해 Django, nginx를 사용하고 데이터베이스로 PostgresQL을 사용합니다.

PostgresQL의 경우 몇 가지 미러링 솔루션이 있지만 "3개의 마스터" 스키마를 사용하여 정적 파일을 미러링하는 가장 좋은 방법은 무엇입니까?

단순히 재동기화하는 것만으로는 확장 가능하고 유지 관리가 쉬운 방법이 아닐 것 같습니다.

답변1

파일이 자주 변경되지 않고 항상 동기화를 유지해야 하는 한 rsync를 사용하는 것은 어떨까요? 파일을 편집하는 마스터 서버가 하나 있는지 확인하면 동기화가 더 쉬워집니다.

그 외에는 NFS와 같은 네트워크 파일 시스템이 작동할 수도 있고 다음과 같은 것을 구현할 수도 있습니다.DRBD파일을 항상 동기화된 상태로 유지합니다.

답변2

다른 솔루션(afs, Unionfs...)이 많이 있지만 rsync는 놀랍게도 단방향 복제에 잘 작동하고 자가 치유 기능이 있으며 복제 경로를 정의한 대로 확장 가능합니다(단일 마스터는 최대 약 5개의 슬레이브가 있지만 그 이상에는 다중 계층 복제로 전환해야 할 이유가 있을 것입니다.

유일한 문제는 복제 타이밍입니다. 라운드 로빈 DNS를 사용하고 있으므로 이미 서버 선호도가 있으므로 사용자가 서버 A를 업데이트한 다음 서버 B를 보고 있기 때문에 업데이트를 볼 수 없는 문제가 발생하지 않습니다. 코드는 배포 시 약간의 어려움을 초래할 수 있습니다(특히 공통 데이터베이스에 대한 DDL 변경에 대한 코드 의존성이 있는 경우).

양방향 복제가 필요하다면(가능하다면 피하십시오) 그렇습니다. 실시간 복제 시스템이 더 적합할 것입니다.

현재 수동으로/cron을 통해 rsync를 실행 중인 경우 지연이 매우 짧아지도록 파일이 변경될 때 inotify를 사용하여 파일에서 rsync를 실행하는 것을 고려할 수 있습니다.

씨.

답변3

코드가 프로덕션에 배포되면 모든 서버에 동시에 배포되어야 합니다. 이 작업이 적절하게 제어되면 제어의 일부로 미러링되어야 하며 기술 솔루션은 필요하지 않습니다. 모든 관리 솔루션이 기술을 기반으로 하는 것은 아닙니다.

오픈EFS변경 제어 및 배포가 가능하도록 설계된 도구로, 도움이 될 수 있습니다. 혼자서 하는 일을 많이 구현했지만 기초가 없는 사람에게는 좋은 시작이 될 것입니다.

변경 제어 범위에 포함되지 않는 정적 서버의 경우 과거에는 rsync가 적절한 솔루션이라는 것을 알았습니다. 일반적으로 이 범주에 속하는 서버의 경우 확장이 문제가 될 가능성은 없지만 문제가 되는 경우NFS또는AFS작용할 수도 있습니다.

관련 정보