로드 밸런서에 여러 Linux 웹 서버가 연결되어 있으며이 서버간에 자산 (예 : 사진, 비디오 및 기타 자료)을 공유하고 싶습니다. 가장 좋은 방법은 무엇입니까?
현재 파일 서버에 모든 웹 서버에 마운트되어 있지만 트래픽이 많은 상황에서 파일 서버가 다운되는 것이 걱정됩니다. 이 문제가 발생하지 않도록하려면 어떻게해야합니까?
미리 감사드립니다.
로드 밸런서에 여러 Linux 웹 서버가 연결되어 있으며이 서버간에 자산 (예 : 사진, 비디오 및 기타 자료)을 공유하고 싶습니다. 가장 좋은 방법은 무엇입니까?
현재 파일 서버에 모든 웹 서버에 마운트되어 있지만 트래픽이 많은 상황에서 파일 서버가 다운되는 것이 걱정됩니다. 이 문제가 발생하지 않도록하려면 어떻게해야합니까?
미리 감사드립니다.
답변:
필요에 따라 여러 가지 방법이 있습니다.
처음 두 파일은 새로운 파일이 많이 오는 경우에 가장 좋습니다. 세 번째는 사용자가 아직 동기화되지 않은 정적 컨텐츠에 대해 404를 얻게되므로 파일을 추가하거나 변경하지 않는 경우 이상적인 솔루션입니다.
마지막 옵션은 여러 가지면에서 이상적 일 수 있지만 4 중 가장 비쌀 수도 있습니다. 또한이를 지원하려면 웹 사이트를 다시 작성해야합니다.
웹 서버의로드를 줄이고로드 밸런싱을 수행하는 또 다른 좋은 방법은 오징어 (즉, squid3)를 사용하는 것입니다. 캐싱을 사용하여 리버스 프록시로 설정하십시오. 그런 식으로 설정하면 그림과 같은 정적 컨텐츠를 HDD (기본값) 또는 RAM (빠르고 최상)으로 캐시합니다. 특정 노드가 오버로드되면 다른 오징어 서버로 로빈을 라운드 할 수 있습니다.
일반적으로 동적 웹 사이트 / ap을 실행하는 데 필요한 리소스에서 더 많은 서버가 필요하기 때문에 다른 하위 도메인 / 도메인에서 정적 자산 호스팅을 고려하십시오. (static.yourdomain.com과 같은)
그런 다음 다른 서버를 사용하여 호스트 할 수 있습니다. 정적 파일 호스팅은 많은 리소스를 사용하지 않으므로 정적 콘텐츠를위한 서버가 상당히 줄어 듭니다. 또한 동적 컨텐츠를 위해 서버의 일부 자원을 비 웁니다.
로드 밸런서에 따라 요청에 사용할 서버를 결정하는로드 밸런서와 동일한 도메인에서이 작업을 수행 할 수도 있지만 별도의 도메인을 사용하는 경우 정적 자산을 CDN에 매우 쉽게 넣을 수 있습니다. 필요가 생겼다!
내가 채택한이 과제에 대한 한 가지 해결책은 공유 NFS 드라이브에 파일의 기본 읽기 / 쓰기 사본을 두는 것뿐만 아니라 NFS 호스트의 장애로 인해 파일 액세스가 가능하도록 각 웹 서버에서 읽기 전용 사본을 유지하는 것입니다 완전히 잃어버린 것이 아니라 읽기 전용 모드입니다.
rsync
각 웹 호스트의 읽기 전용 사본을 최신 상태로 유지하기 위해 15 분마다 실행됩니다.check_link
bash는 스크립트는 반드시 NFS 마운트가 여전히 존재하기 위해 매 분마다 실행하지가에 심볼릭 링크 스왑 경우 읽기 전용 복사합니다.자세한 내용은 이 시스템을 처음 설정할 때부터이 기사 에서 찾을 수 있습니다.
거꾸로 :
단점 :
NoSQL 데이터베이스를 고려할 수 있습니다. 클러스터에서 작동하고 최종 일관성을 제공하도록 설계되었습니다. 그러나 ACID가 아니라는 점에주의하십시오.
다음 은 원하는 종류의 NoSQL 데이터베이스를 결정하는 데 도움이 되는 소개 입니다.
다음은 사용 가능한 NoSQL과 관련된 리소스 목록입니다 .