>

우리는 현재 하나의 mysql 서버와 파일 서버에 액세스하는 여러 웹 서버를 사용하고 있습니다. 클라우드로 이동하는 과정에서 동일한 설정을 사용하여 EBS를 여러 머신 인스턴스 또는 다른 솔루션에 연결할 수 있습니까?


  • 답변 # 1

    업데이트 (2015 년 4 월):이 사용 사례의 경우 새로운 Amazon Elastic File System (EFS)을 살펴보아야합니다. 이 없이. EFS와 EBS의 주요 차이점은 서로 다른 추상화를 제공한다는 점입니다. EFS는 NFSv4 프로토콜을 공개하지만 EBS는 원시 블록 IO 액세스를 제공합니다.

    아래에서 여러 블록에 원시 블록 장치를 안전하게 마운트 할 수없는 이유에 대한 원래 설명을 확인할 수 있습니다.

    <시간>

    원래 게시물 (2011) :

    하나 이상의 인스턴스에 EBS 볼륨을 연결할 수 있어도 _REALLY_BAD_IDEA_가됩니다. Kekoa의 말을 인용하자면, "한 번에 두 대의 컴퓨터에서 하드 드라이브를 사용하는 것과 같습니다"

    왜 이것이 나쁜 생각입니까?... 하나 이상의 인스턴스에 볼륨을 연결할 수없는 이유는 EBS가 고객이 ext2/ext3/etc와 같은 파일 시스템을 실행하는 "블록 스토리지"추상화를 제공하기 때문입니다. 이러한 파일 시스템 (예 : ext2/3, FAT, NTFS 등)의 대부분은 블록 장치에 독점적으로 액세스 할 수 있다고 가정합니다. 동일한 파일 시스템에 액세스하는 두 인스턴스는 거의 확실하게 손상 및 데이터 손상으로 끝납니다.

    즉, EBS 볼륨을 이중 마운트하면 여러 시스템간에 블록 장치를 공유하도록 설계된 클러스터 파일 시스템을 실행하는 경우에만 작동합니다. 또한 이것으로 충분하지 않습니다. EBS는이 시나리오에서 테스트를 거쳐 다른 공유 블록 장치 솔루션과 동일한 일관성 보장을 제공해야합니다. 즉, Dom0 커널, Xen 계층과 같은 중간 비공유 레벨에서 블록이 캐시되지 않습니다. 그리고 DomU 커널. 그리고 여러 클라이언트간에 블록을 동기화 할 때 고려해야 할 성능 문제가 있습니다. 대부분의 클러스터 파일 시스템은 최선의 노력을 다하는 상용 이더넷이 아닌 고속 전용 SAN에서 작동하도록 설계되었습니다. 매우 간단하게 들리지만 요청하는 것은 매우 사소한 것입니다.

    또는 데이터 공유 시나리오가 NFS, SMB/CIFS, SimpleDB 또는 S3 일 수 있는지 확인하십시오. 이러한 솔루션은 모두 공유 블록 장치 하위 시스템없이 파일을 공유하기위한 상위 계층 프로토콜을 사용합니다. 여러 번 그러한 솔루션이 실제로 더 효율적입니다.

    여러 경우에도 여러 웹 프런트 엔드에서 액세스하는 단일 MySql 인스턴스/파일 서버를 가질 수 있습니다. 그런 다음 해당 파일 서버는 EBS 볼륨에 데이터를 저장하여 야간 스냅 샷 백업을 수행 할 수 있습니다. 파일 서버를 실행하는 인스턴스가 손실 된 경우 EBS 볼륨을 분리하고 새 파일 서버 인스턴스에 다시 연결 한 후 몇 분 안에 백업 및 실행할 수 있습니다.

    "S3와 같은 파일 시스템이 있습니까?"-예, 아니요. 그렇습니다. s3fs와 같은 "제대로 작동"하는 타사 솔루션이 있지만, 여전히 각 읽기/쓰기에 대해 비교적 비싼 웹 서비스 호출을 수행해야합니다. 공유 도구 디렉토리의 경우 훌륭하게 작동합니다. HPC 세계에서 볼 수있는 클러스터 된 FS 사용량의 경우 기회가 아닙니다. 더 나은 결과를 얻으려면 NFS와 같은 이진 연결 지향 프로토콜을 제공하는 새로운 서비스가 필요합니다. 합리적인 성능과 동작으로 이러한 다중 마운트 파일 시스템을 제공하는 것은 EC2를위한 훌륭한 기능 애드온이 될 것입니다. 나는 오랫동안 아마존이 그런 것을 구축하도록 옹호했습니다.

  • 답변 # 2

    아니요. 두 대의 컴퓨터에서 하드 드라이브를 사용하는 것과 같습니다.

    공유 데이터를 원하면 모든 인스턴스가 액세스 할 수있는 서버를 설정할 수 있습니다. 모든 인스턴스에 대해 간단한 스토리지 영역을 원하는 경우 Amazon S3 스토리지 서비스를 사용하여 분산 및 확장 가능한 데이터를 저장할 수 있습니다.

    클라우드로 이동하면 정확히 같은 설정을 할 수 있지만 파일 서버를 S3로 바꾸거나 모든 인스턴스를 파일 서버에 연결할 수 있습니다.

    많은 옵션이 있지만 인스턴스간에 하드 드라이브를 공유하는 것이 가장 좋은 방법은 아닙니다.

  • 답변 # 3

    아니요, EBS 문서에 따르면 : "한 볼륨은 하나의 인스턴스에만 연결할 수 있습니다. 한 번에 "

    현재 공유 스토리지를 어떻게 사용하고 있습니까? 파일 서버에서 파일을 제공하는 것이라면 웹 서버가 해당 파일을 제공하지 않고 파일 서버의 프로세스에 특정 요청을 프록시 할 수 있도록 시스템 설정을 고려 했습니까?

  • 답변 # 4

    확실히 할 수는 없지만 EBS를 복제하여 다른 인스턴스에 연결할 수 있습니다.

    고정 데이터 셋 또는 '실제'데이터를 테스트하는 데 유용하지만 단일 블록 저장소에서 둘 이상의 인스턴스를 작동 할 수는 없습니다

  • 답변 # 5

    MySQL Server 및 파일에 액세스하는 여러 웹 서버 AWS에서는 서버가 정상입니다. 위에서 언급 한 아키텍처에서 따라야 할 모범 사례는 다음과 같습니다.

    포인트 1) EC2의 MySQL은 AWS의 비동기/세미 동기화 모드에서 마스터 슬레이브로 설정 될 수 있습니다. 고성능 DB에는 RAID 0의 EBS-OPT + PIOPS가 권장됩니다

    포인트 2) 또는 Amazon RDS + 다중 AZ 모드를 사용할 수 있습니다. 읽기 확장을 위해 여러 RDS 읽기 복제본을 MySQL RDS에 연결할 수 있습니다.

    포인트 3) EBS 볼륨을 여러 EC2에 동시에 연결할 수 없습니다. EBS를 사용하여 Amazon EC2에서 GlusterFS를 기반으로 파일 서버를 생성 할 수 있습니다. 여러 웹 서버가 AWS 인프라에서 단일 GlusterFS와 동시에 통신 할 수 있습니다.

    포인트 4) 응용 프로그램을 파일 저장소로 S3과 통합 할 수있는 경우 아키텍처에 가져 오는 안정성으로 인해 선호됩니다. 응용 프로그램에서 S3fuse와 같은 도구를 사용하여 S3에 액세스 할 수도 있습니다.

관련 자료

  • 이전 리눅스에서 공백을 탭으로 교체
  • 다음 seaside - 스몰 토크를 배우시겠습니까?