16.4.3 EC2를 사용하여 MySQL 데이터베이스 배포
EC2 인스턴스의 가동 시간과 가용성을 보장 할 수 없지만, EC2 환경에 MySQL을 배포 할 때는 EC2 인스턴스에 작업을 쉽게 배포 할 방법을 사용하십시오. 여기에는 몇 가지 방법이 있습니다. 샤드 기술 (여러 서버에 응용 프로그램을 분할하여 데이터 세트와 사용자의 특정 블록을 다른 서버에 할당)를 사용하는 것이이를 효과적으로하는 방법입니다. 일반적인 규칙으로 인스턴스를 더 큰 시스템으로 업그레이드하는 것보다 더 EC2 인스턴스를 생성하고 더 많은 사용자를 지원하는 것이 더 쉽습니다.
EC2 아키텍처는 EC2 인스턴스를 장기간의 고 가용성 솔루션이 아닌 임시 캐시 기반 솔루션으로 취급 할 때 가장 잘 작동합니다. 여러 대의 컴퓨터를 사용하는 것 외에도, memcached와 같은 다른 서비스의 이점을 활용하여 응용 프로그램에 추가 캐시를 제공하는 것은 MySQL 서버의 부하를 줄이고, 쓰기에 집중하는 데 도움이됩니다 . EC2의 대 및 대형 인스턴스에서 사용 가능한 RAM이 데이터를 위해 큰 메모리 캐시를 제공 할 수 있습니다.
자신의 하드웨어에서 사용하는 대부분의 유형의 확장 토폴로지는 EC2 환경에서 사용 및 적용 할 수 있습니다. 그러나 앞서 언급 한 제한과 조언을 사용하여 잠재적 인 장애로 인해 데이터가 손실되지 않도록하십시오. 또한 각 EC2 인스턴스의 상대 능력이 매우 낮기 때문에 샤드를 사용하도록 응용 프로그램을 변경하거나 EC2 인스턴스를 추가하여 응용 프로그램의 성능을 개선 할 수 있도록하십시오.
예를 들어 다음과 같은 전형적인 확장 환경을보세요. 여기에서는 단일 마스터가 하나 이상의 슬레이브 (이 예에서는 3 개)에 복제되어 Web 서버가 각 리플리케이션 슬레이브에서 실행하고 있습니다.
이 구조는 마스터에 대해 하나의 EC2 인스턴스, Web 및 MySQL 슬레이브 서버 당 하나의 인스턴스를 사용하여 EC2 환경에 완벽하게 재현 할 수 있습니다.
EC2 환경에서는 EC2 인스턴스가 사용하는 내부 (사설) IP 주소는 일정합니다. 인스턴스간에 통신 할 때 항상 이러한 내부 주소와 이름을 사용합니다. 공용 IP 주소를 사용하는 것은 외부와 통신하는 경우 (예를 들어, 응용 프로그램을 게시하는 경우)뿐입니다.
데이터베이스의 신뢰성을 확보하려면 활성 백업 및 스토리지가 할당 복제 노예를 하나 이상의 Amazon S3 시설에 추가합니다. 다음 토폴로지에서 이것의 예를 볼 수 있습니다.
EC2 인스턴스에서 memcached를 사용하면 성능이 향상 될 것입니다. 대형 및 초대형 인스턴스에는 매우 많은 RAM이 있습니다. 응용 프로그램에서 memcached를 사용하려면 데이터베이스에서 정보를로드 할 때 먼저 항목이 캐시에 존재하는지 여부를 확인합니다. 원하는 데이터가 캐시에 있으면 그것을 사용합니다. 그렇지 않은 경우에는 데이터베이스에서 데이터를 다시로드하고 캐시에 채 웁니다.
샤드는 해당 그룹에 따라 고유의 데이터 세트를 제공하기 위해 개별 시스템 또는 시스템 그룹에 할당하여 전체 데이터베이스의 데이터를 분할합니다. 예를 들어, 성이 문자 A - D로 끝나는 모든 사용자를 단일 서버에 놓습니다. 사용자가 응용 프로그램에 연결하고 성이 알려진 경우 쿼리를 해당 MySQL 서버로 리디렉션 할 수 있습니다.
EC2에서 샤드를 사용하는 경우, Web 서버와 MySQL 서버를 별도의 EC2 인스턴스에 나눠에서 샤드 결정 로직을 애플리케이션에 적용합니다. 데이터 액세스에 어떤 MySQL 서버를 사용 해야할지 알고 쿼리를 해당 서버에 분배하십시오. 다음 그림에서 이것의 예를 볼 수 있습니다.
샤드와 EC2를 사용하는 경우, 인스턴스 장애의 가능성이 응용 프로그램에 영향을주지 않도록하십시오. 특정 샤드에 MySQL 서버를 제공하는 EC2 인스턴스가 실패한 경우 샤드의 모든 데이터는 사용할 수 없습니다.