나는 별도의 컴퓨터에서 nginx와 php fpm을 실행하는 vms를 가지고 있습니다. 지금은 클러스터가 그다지 크지 않기 때문에 디렉토리를 수동으로 동기화하는 매우 어리석은 방법을 사용합니다. 그러나 공유 저장 장치로 활용하고 싶은 또 다른 서버가 있습니다.
지금까지 나는 ocfs2 파일 유형을 사용하여 iscsi를 통해 스토리지를 제공할 수 있다는 것을 이해했습니다. 저를 괴롭히는 점은 초기 설정에서 각 노드를 미리 지정해야 하고 노드를 추가하려면 변경 사항을 적용하기 위해 o2cb를 종료해야 한다는 것입니다.
목표는 iscsi를 통해 nginx 및 php-fpm 노드에 공유 스토리지를 제공하는 것입니다(그래서 복제를 수행할 필요가 없음). 그러나 클러스터의 로드에 따라 노드 수가 늘어날 수 있습니다.
아이디어 #1: 어떻게든 호스트를 통해 내 VM에 스토리지를 제공할 수 있으므로 호스트만 ocfs2를 직접 처리하게 될까요? 그렇게 하면 노드가 알려집니다.
답변1
OCFS2는 복제본에 사용하는 각 블록 장치가 동일하다고 가정하는 클러스터형 파일 시스템입니다. 이는 데이터 잠금 및 순서 지정이 참여 노드 간에 극도로 응집력이 있는 nginx와는 매우 다른 사용 사례를 위해 설계되었습니다.
이렇게 하면 상당한 오버헤드가 발생하지만 동일한 데이터 세트를 수정하는 여러 작업자를 실행하는 데 매우 유용할 수 있습니다. 이는 스토리지에서 피하고 싶은 패턴이지만 때로는 유용할 때도 있습니다. 지금은 그때가 아니다.
이 구현은 iSCSI가 지원하는 클러스터형 FS가 아닌 중앙 NFS 또는 SMB 공유의 이점을 누릴 수 있습니다. 이렇게 하면 각 Nginx 작업자가 동일한 디렉터리에 액세스할 수 있습니다. 동시에 동일한 파일에 쓰기를 시도하지 않는 것이 가장 좋지만 그렇게 해야 하는 경우 NFS >v4.1 또는 SMB >v3.x를 사용하고 있는지 확인할 수 있습니다. 둘 다 이전 버전보다 잠금을 더 잘 처리합니다.
답변2
세 번째 서버를 NFS 서버로 설정하면 해당 사용 사례에서는 OCFS2를 사용하는 것보다 더 합리적입니다. OCFS2는 빠른 SAN 스토리지나 DRBD와 같이 실시간 복제되는 스토리지보다 더 좋습니다.