우리는 1 개의 웹 서버 설정에서 2 개의 웹 서버 설정으로 이동하고 있으며 두로드 밸런싱 된 컴퓨터 사이에서 PHP 세션 공유를 시작해야합니다. 우리는 이미 memcached를 설치 하고 시작 했으므로 php.ini
파일 에서 세 줄만 변경 하면 ( session.save_handler 및 session.save_path ) 새 서버간에 세션을 공유 할 수 있다는 것을 기쁘게 생각했습니다 .
나는 교체했다 :
session.save_handler = files
와:
session.save_handler = memcache
그런 다음 마스터 웹 서버 session.save_path
에서 localhost를 가리 키도록 설정했습니다 .
session.save_path="tcp://localhost:11211"
슬레이브 웹 서버 session.save_path
에서 마스터를 가리 키도록 설정했습니다 .
session.save_path="tcp://192.168.0.1:11211"
작업이 완료되었으며 테스트했으며 작동합니다. 그러나...
분명히 memcache를 사용하면 세션이 RAM에 있고 컴퓨터가 재부팅되거나 memcache 데몬이 충돌하면 손실됩니다-약간 걱정하지만 두 웹 서버 간의 네트워크 트래픽에 대해 조금 더 걱정합니다 (특히 누군가가 슬레이브 웹 서버에로드 밸런싱 될 때마다 세션이 마스터 웹 서버에서 네트워크를 통해 가져 오기 때문에 확장됩니다. save_paths
네트워크를 사용하기 전에 머신이 자체 세션 스토리지를 볼 수 있도록 두 개를 정의 할 수 있는지 궁금 합니다. 예를 들면 다음과 같습니다.
석사:
session.save_path="tcp://localhost:11211, tcp://192.168.0.2:11211"
노예:
session.save_path="tcp://localhost:11211, tcp://192.168.0.1:11211"
이것이 서버간에 세션을 성공적으로 공유하고 성능을 향상 시킵니까? 즉, 네트워크 트래픽을 50 % 절약합니다. 아니면이 기술이 장애 조치 (예 : 하나의 memcache 데몬에 도달 할 수없는 경우)에만 적용됩니까?
참고 : 실제로 memcache 복제에 대해 구체적으로 묻지는 않습니다 .PHP memcache 클라이언트가 풀의 각 memcache 데몬 내에서 최대가 될 수 있는지 여부에 대한 자세한 내용은 세션을 찾으면 세션을 반환하고 세션을 찾지 못하면 새 세션을 만듭니다 모든 상점에서. 내가 이것을 쓰는 동안 나는 PHP에서 약간을 요구하고 있다고 생각한다.
가정 : 고정 세션, 라운드 로빈로드 밸런싱, LAMP 서버 없음.