간단한 복제를 위해 GlusterFS 사용

간단한 복제를 위해 GlusterFS 사용

초보자 질문입니다. 다음을 빌드해야 합니다.

  • /shared폴더 ~500GB의 파일, 각 파일당 ~1MB.
  • 1Gbs LAN으로 연결된 두 개의 상자(server1 및 server2)
  • 모든 상자는 파일에 대한 읽기/쓰기 액세스 권한을 얻어야 하므로 둘 다 클라이언트입니다.
  • 파일이 두 상자 모두에 복제되기를 원합니다. 한 서버에 파일이 기록될 때마다 동일한 파일이 다른 서버에도 있어야 합니다.

GlusterFS에 관한 내 질문:

  • 같은 상자에 파일이 복제됩니까?. 예를 들어 파일이 켜져 /shared있고 /mnt/shared. 모든 서버에서 1GB의 공간이 필요합니까?
  • 대신 파일 시스템을 직접 사용하여 로컬로 작성해야 합니까 /shared? 클라이언트에 마운트하지 않고도 복제가 이런 방식으로 작동합니까?

또한 이 설정을 수행하는 다른 방법을 아는 사람이 있으면 매우 감사하겠습니다. 미리 감사드립니다.

답변1

실제로 Gluster는 이 시나리오에 완벽합니다. 양방향 복제와 두 시스템 중 하나에서 파일 시스템을 마운트할 수 있는 기능을 통해 (이론적으로) NFS의 유효 I/O 용량을 두 배로 늘리고 상자 중 하나가 실패할 경우 활성 장애 조치를 수행할 수 있습니다.

이런 방식으로 active rsync를 수행할 때의 문제점은 파일 잠금으로 인해 I/O를 차단한다는 것입니다. 애플리케이션과 데이터 변경에 따라 이는 관련이 없거나 재앙이 될 수 있습니다! 분산 파일 시스템에는 이러한 일이 발생하지 않도록 하는 매우 구체적인 잠금 의미가 있습니다. 요즘에는 inotify의 잠금 기능이 더 뛰어나더라도(마지막으로 시도했을 때는 그렇지 않았음) 네트워크가 변경 사항을 처리할 수 있는지 여부에 따라 파일 액세스가 차단될 수 있습니다. 이는 모두 이론적인 주의 사항이지만 앱의 기능에 따라 살펴볼 가치가 있습니다.

답변2

마침내 두 상자 모두에서 GlusterFS를 사용하여 이 문제를 해결했습니다. 그 과정에서 배운 몇 가지 사항은 다음과 같습니다.

  • 먼저 일반 RAID 1 설정을 시도했습니다. 이것의 주요 문제점은 클라이언트가 항상 TCP를 사용하여 두 서버 중 하나가 동일한 시스템에 있는 경우에도 두 서버에 연결한다는 것입니다. 따라서 tpc '로컬' 볼륨을 직접 액세스(저장소/posix) 볼륨으로 교체하기 위해 클라이언트 구성을 변경해야 합니다.
  • 네트워크 링크에 스트레스를 주지 않으려면 모든 클라이언트 읽기는 지시어와 함께 로컬 저장소를 사용합니다 option read-subvolume. 물론 RAID1 무결성을 유지하기 위해 GlusterFS는 항상 다른 볼륨도 확인하지만 실제 파일은 디스크에서 직접 검색됩니다.
  • 성능은 좋지만 클라이언트 프로세스는 메모리 포옹처럼 보입니다. 빠른 읽기 볼륨과 관련이 있는 것 같습니다. 추가 조사가 필요합니다.

수정된 클라이언트 구성:

# Server1 configuration (RAID 1)
volume server2-tcp
    type protocol/client
    option transport-type tcp
    option remote-host server2
    option transport.socket.nodelay on
    option transport.remote-port 6996
    option remote-subvolume brick1
end-volume

volume posix-local
    type storage/posix
    option directory /shared
end-volume

volume locks-local
    type features/posix-locks
    subvolumes posix-local
end-volume

volume brick-local
    type performance/io-threads
    option thread-count 8
    subvolumes locks-local
end-volume

volume mirror-0
    type cluster/replicate
    option read-subvolume brick-local
    subvolumes brick-local server2-tcp
end-volume

.....

두 가지 질문에 모두 답해 보겠습니다.

같은 상자에 파일이 중복되나요?

아니요, fs는 FUSE를 사용하여 마운트됩니다. 현재 /etc/fstab 줄:

/etc/glusterfs/client.vol /mnt/shared glusterfs 기본값 0 0

대신 /shared에 로컬로 작성하여 파일 시스템을 직접 사용해야 합니까? 클라이언트에 마운트하지 않고도 복제가 이런 방식으로 작동합니까?

아니요. 항상 마운트된 볼륨을 사용하여 읽기/쓰기를 수행하세요. 파일 시스템을 직접 사용하면 불일치가 발생할 수 있습니다.

답변3

훨씬 설정하기 쉬울거에요활성 미러링을 수행하는 rsync또는 nfs 공유를 설정하고 둘 다 동일한 실제 드라이브에서 가져오도록 할 수 있습니다.

관련 정보