웹 서버를 동기화하기 위해 GlusterFS를 선택하는 것이 좋습니까?


9

웹 서버가 2 대 있는데 서버를 추가해야 할 가능성이 있습니다. 현재 lsyncd + csync2를 사용하여 이러한 서버를 동기화 상태로 유지합니다. 모든 파일이 두 서버 모두에 있으므로 (로컬 파일을 로컬로 열 때 네트워크에 액세스 할 필요가 없음) 다른 경우에는 그다지 좋지 않기 때문에 성능면에서 효과적입니다.

예를 들어 서버 1에서 파일을 삭제하고 동일한 이름의 서버 1에 새 파일을 즉시 업로드하는 경우가 있습니다. 서버 2에서 삭제 된 이벤트가 서버 1로 전송되어 "업데이트 서클"이 완료되면 서버 1에서 새로 업로드 된 파일이 삭제됩니다.

서버를 동기화 상태로 유지하는 더 좋은 방법이 있어야한다고 생각할 수 없습니다. GlusterFS를 살펴본 결과 모든 파일이 모든 서버에 복제되는 설정은 권장되지 않습니다. 그러나이 서버에서 Drupal과 같은 CMS 시스템을 실행하고 있습니다. 이러한 CMS 시스템은 종종 몇 개의 파일을 열므로 이러한 파일을 보유하기에 너무 많은 네트워크 트래픽으로 인해 요청이 느려 질까 걱정됩니다.

lsyncd + csync2를 GlusterFS로 교체하여 모든 파일을 모든 노드에 복제하도록 설정하는 것이 좋을까요?


2
여기서 문제를 오해 할 수 있지만 서버간에 공유 된 네트워크 스토리지를 사용하지 않는 이유는 무엇입니까?
mveroone

1
@ Kwaio : 공유 스토리지를 호스팅하는 서버에 문제가있는 경우 다운 타임을 방지하기 때문에 모든 웹 서버 (스크립트 및 사용자 업로드 내용 모두)를 "미러링"하고 싶습니다. 즉, 모든 웹 서버가 다시 단일 파일 저장소에 의존하는 설정에 의존하고 싶지 않습니다.
sbrattla

그렇다면 고 가용성 네트워크 스토리지 클러스터는 어떻습니까?
mveroone

물론, 그 의미는 무엇입니까? 하드웨어?
sbrattla

전문가는 아니지만 2 개의 클러스터를 통해 마스터-슬레이브 아키텍처로 네트워크 스토리지를 미러링하고 마스터 장애시 시스템을 전환하는 것을 의미합니다. 대부분의 네트워크 스토리지 장치 공급 업체는 Linux 어플라이언스를 사용하여 직접 빌드 할 수있는 경우에도 상당한 개발이 필요한 솔루션을 제공합니다.
mveroone

답변:


2

BitTorrent Sync가 귀하를 대신 할 수 있습니다. 집의 일부 내부 서버간에 파일을 동기화하기 위해 사용하고 있으며 훌륭하게 작업하고 있습니다. 앱에서 CMS를 사용할 때 백엔드 데이터베이스를 고려해야합니다. MySQL 복제가 진행 중인지 확인하십시오.


그 흥미 롭군요. BitTorrent Sync는 충돌을 어떻게 처리합니까? 5 대의 웹 서버가 있고 서버 A에서 파일이 업데이트되었다고 가정합니다. 그런 다음 2 초 후에 A의 변경 사항이 C에 도달하기 전에 서버 C에서 동일한 파일이 업데이트됩니다. 소프트웨어에는 서버 설정을위한 알고리즘이 있습니까? 이 경우에 승리?
sbrattla

내 이해는 BitTorrent Sync가 두 사본의 수정 날짜 / 시간을 비교하고 최신 상태 만 유지한다는 것입니다. 이상적이거나 유스 케이스에 해를 끼칠 수 있습니다.
whiskykilo

1

Gluster는 잠금을 유지하고 변경 사항을 전파 할 수 있으므로 다른 모든 노드에서 파일을 삭제하지만 웹 서버에 문제가 될 수있는 대기 시간이 추가 될 수 있기 때문에 문제를 해결할 수 있습니다. 다음 대안은 DRBD + OCFS2 또는 GFS이지만 기본 파일 시스템을 사용하는 Gluster와 같이 더 복잡 할 수 있습니다. 블록 수준에서 작동하지 않으므로 서버가 동기화되지 않으면 수정하기가 어렵지 않습니다. 스플릿 브레인 등으로 인해 너무 쉽게 손상되지 않습니다.

우리는 메일 서버에 사용하고 있으며 파일이 많은 디렉토리의 경우 속도가 느립니다. 배포하기 전에 모든 것을 확실히 테스트해야합니다. 작은 파일에 더 잘 작동하기 때문에 현재 NFS 마운트를 테스트하고 있습니다.


1

GlusterFS는 배포하기가 어렵습니다. 웹 데이터의 경우 Unison 과 같은 파일 동기화 수준 이 배포 및 유지 관리가 훨씬 쉽습니다.

DRBD 는 블록 수준에서 데이터 동기화를 유지하기위한 완벽한 솔루션입니다. 그러나 OCFS2와 같은 특수 형식이나 이와 유사한 형식으로 형식을 지정해야합니다.


GlusterFS는 DRBD와는 다릅니다. 블록 수준이 아니라 파일 수준에서 작동합니다. 그러나 한 번에 배포하기가 더 쉽다고 생각합니다.
Jure1873

-3

꼭두각시 와 같은 도구를 사용하지 않겠 습니까? 소스에 한 번 쓰고 "puppet kick"또는 mcolletive를 사용하여 대상에 배포하십시오. 잘 문서화되어 있습니다. 필요한 경우 나중에 서버를 쉽게 추가 할 수 있습니다.

lsyncd와 같은 inotify를 사용하여 커널 수준에서 작업하는 도구를 사용할 수도 있습니다. 폴더의 변경 사항을 감시하고 동기화를 트리거합니다. 그러나 csync2와 같은 클러스터의 파일 동기화 전용 도구로는 충분하지 않으면 무엇이 될지 알 수 없습니다.

확실하게, 수정은 서버 2 또는 서버 1에서만 발생합니까?


3
Downvoted-Puppet은 서버 간 파일 동기화를 유지하는 좋은 방법 이 아닙니다 . 그것은 이다 그러나 관리를위한 훌륭한 도구 서버 구성을 .
Craig Watson

로드 밸런싱 설정에 참여하므로 모든 서버에서 수정이 발생할 수 있습니다. 사용자는 모든 서버에 파일을 업로드 할 수 있으며 결과적으로 서버간에 트래픽이 분산되면 모든 서버에서 해당 파일을 사용할 수 있어야합니다.
sbrattla

1
글쎄,이 경우 꼭두각시는 원하는 것이 아닙니다 (그러나 여전히 @Craig Watson, 파일은 파일, 구성 또는 HTML, 여전히 파일입니다). GlusterFS가 프로덕션 환경에 준비되어 있는지 의심되므로 안전한 것을 원한다면 고 가용성의 NFS 서버를 사용하는 것이 좋습니다.
Rosco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.