문제

우리가 과거에 이것을했듯이, 나는 부하 밸런싱으로 이사하는 모든 사람들에게 유용한 정보를 수집하고 싶습니다. ~이다 코드가 알아야 할 문제.

우리는 하나의 Apache 서버에서 Squid로 옮겼습니다.

PHP/MySQL을 사용하고 있으므로 문제가 다를 수 있습니다.

우리가 해결해야 할 것들 :

세션

우리는 "기본"PHP 세션 (파일)에서 분산 된 멤코드 세션으로 옮겼습니다. 간단한 솔루션을 수행해야합니다. 이런 식으로, 당신은 또한 당신의로드 밸런서에 "끈적 끈적한 세션"이 필요하지 않습니다.

캐싱

웹 서버 당 분산되지 않은 APC 캐시에 분산 객체 캐싱을 위해 Anoter Memcached-Layer를 추가하고 모든 구식/구식 파일 카싱 시스템을 교체했습니다.

업로드

업로드는 공유 (NFS) 폴더로 이동합니다.

속도를 위해 최적화 한 것 :

정적 파일

우리의 주요 NFS는 LightTPD, 서빙 (또한 사용자 공도) 이미지를 실행합니다. 오징어는이를 알고 있으며 이미지에 대한 Apache-Node를 쿼리하지 않으므로 성능이 향상되었습니다. 오징어는 또한 해당 파일을 RAM으로 캐시하도록 구성됩니다.

로드 밸런싱을위한 코드/프로젝트를 준비하기 위해 무엇을 했습니까?

도움이 되었습니까?

해결책

이것을 할 때 :

HTTP 노드의 경우 단일 시스템 이미지 (OCFS2는 이에 적합합니다)를 열심히 푸시하고 시나리오에 따라 파운드 또는 교차로를로드 밸런서로 사용합니다. 노드에는 스왑을 위해 작은 로컬 디스크가 있어야하며 CDSL의 대부분 (전부는 아님)을 피해야합니다.

그런 다음 Xen을 믹스로 가져옵니다. Xenbus에 대한 작은 시간의 정보를 배치하면 (예 : 실제로 VM 당 committed_as 당 프로세스를 실제로 약속 한 가상 메모리 Linux가 뇌 죽은 부하 밸런서를 신속하게 감지하여 조정할 수 있습니다. 오라클은 이것에 따라 잡혔다 .. 그리고 이제 리눅스에서 풍선 드라이버를 개선하기 위해 노력하고있다.

그 후 나는 SQLITE3에서 주어진 앱에 대한 데이터베이스 사용량을 분할하는 비용과 앱이 기본적으로 원하는 DB를 분할하는 비용을 살펴보고 DB를 분할해야한다는 사실을 깨닫고 POSIX_FADVISE ()는 작업을 수행하고 커널 버퍼를 불필요하게 오염시키지 않을 수 있습니다. 대부분의 DBMS 서비스는 자체 버퍼링을 원하기 때문에 자체 클러스터링을 수행하도록해야합니다. 이것은 실제로 내가 사용하는 DB 클러스터의 유형과 풍선 드라이버에게 무엇을하는지를 지시합니다.

그런 다음 Memcache 서버는 Skinny InitRD에서 부팅하고, 권한이있는 도메인은 메모리와 CPU 사용을 시청하므로 언제 더 부팅 해야하는지 알 수 있습니다.

하트 비트 / 인수 선택은 실제로 주어진 네트워크와 클러스터의 예상 사용에 따라 다릅니다. 그것을 일반화하기가 어렵습니다.

최종 결과는 일반적으로 미러 스토리지에 연결된 상태에서 가상 머신 모니터 + 게스트를 부팅하는 상당히 많은 메모리가있는 5 또는 6 개의 물리적 노드입니다.

스토리지는 또한 일반적인 용어로 설명하기가 어렵습니다. 때로는 클러스터 LVM을 사용합니다. 때로는 그렇지 않습니다. LVM2가 최종적으로 현재 문자열 기반 API에서 멀어지면 변경되지 않습니다.

마지막으로,이 모든 조정은 augeas Xenbus를 통해 전달 된 이벤트를 기반으로 한 구성 업데이트. 여기에는 OCFS2 자체 또는 구성이 단일 시스템 이미지에 상주 할 수없는 다른 서비스가 포함됩니다.

이것은 실제로 응용 프로그램 별 질문입니다. 예를 들어 보낼 수 있습니까? 나는 Memcache를 좋아하지만 예를 들어 모든 사람이 그것을 사용함으로써 혜택을받을 수있는 것은 아닙니다. 귀하의 구성을 검토하거나 일반적으로 모범 사례에 대해 이야기하고 있습니까?

편집하다:

Linux 중심이되어 죄송합니다 ... 일반적으로 클러스터를 설계 할 때 사용하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top