우연히 리눅스 공부하다가 라운드 로빈 식 웹사이트 운영을 봤는데
웹서버 3대 db 서버 2대 해서 웹서버 3대가 db서버 (읽기전용) db서버 (쓰기전용) 번갈아 가면서
이런식으로 운영하시는 분 계신가요 !!! 이런식의 웹서버 운영하면 서버부하나 렉 기타 보안 쪽에서도
괜찮타고 하던데 ..
우연히 리눅스 공부하다가 라운드 로빈 식 웹사이트 운영을 봤는데
웹서버 3대 db 서버 2대 해서 웹서버 3대가 db서버 (읽기전용) db서버 (쓰기전용) 번갈아 가면서
이런식으로 운영하시는 분 계신가요 !!! 이런식의 웹서버 운영하면 서버부하나 렉 기타 보안 쪽에서도
괜찮타고 하던데 ..
댓글 3
DB를 마스터/슬레이브로 나눠서 쓰는 건 이미 XE도 지원합니다. db.config.php를 수정하면 돼요. 단, 완벽하게 세팅하기가 쉽지 않으므로 둘 중 하나만 다운되거나 렉이 걸려도 둘 다 못쓰게 되는 경우가 비일비재합니다.
문제는 웹서버예요. 여러 대의 서버를 쓰려면 서로 파일이 동기화되도록 하는 것이 중요한데요... (한쪽에 파일을 업로드하면 다음에 다른 서버에 접속하더라도 그 파일을 다운받을 수 있어야 하지요) XE는 캐시파일이 실시간으로 업데이트되어야 하기 때문에 흔히 사용하는 5분 간격 동기화 같은 건 안 통합니다. 그렇다고 NFS로 공유하면 성능이 심각하게 떨어지고요. DRBD는 좀 나으려나... 아무튼 여러 대의 서버를 효율적으로 사용하려면 프로그램 자체를 거기에 맞게 설계해야 합니다. 평소 쓰던 프로그램을 그냥 얹어놓으면 포인트가 꼬이는 등 여러가지 문제가 생겨요.
아무튼 이래저래 귀찮습니다. 서버 한 대로 감당이 안 될 만큼 사이트 규모가 크고, 여러 대의 서버를 꾸준히 관리해줄 전문인력이 없다면 절대 권장하지 않습니다. 그렇지 않으면 해킹당할 위험도 서버수에 비례해서 늘어나기만 하지, 절대 더 안전해지지 않아요.
게다가 요즘은 서버 사양이 워낙 좋아져서 동접수 1만 명도 웹서버 한 대, DB서버 한 대로 충분히 감당이 됩니다 ㅎㅎ 32코어짜리 서버 써보셨나요? 64코어는 어떠세요?
말씀하시는건 로드 밸런서를 두고 로드 밸런서 설정을 라운드 로빈으로 하는 경우인데요...
이 경우 문제가 되는건 세션입니다. 세션이 서버쪽에 저장이 되면 안되죠.. 이경우 해결 방법은 2가지인데 세션 정보를 모조리 쿠키에 때려박거나 (암호화해서 저장) 아니면 별도의 세션 서버를 마련하는겁니다. 아마 XE도 세션을 DB에 저장할 수 있는걸로 아는데 그걸 쓰면 라운드 로빈이 되지 않을까 싶습니다. 아니면 별도의 memcache 서버에 세션을 저장하는게 가장 좋겠지요.