2012-12-29 2 views
1

Nginx를 조합하여 Unicorn 구성에 대한 경험이 풍부합니다. 최적화 및 조정 과정을 거친 후에 실제로 작동합니다. 하지만 이제 유니콘을 사용하여 여러 대의 컴퓨터에 부하를 분산시키는 가장 좋은 방법은 무엇이 있는지 질문했습니다.유니콘 다중 기계 설정

문제는 당신이 3 기계 정적 자산을 봉사와 유니콘의로드 밸런싱을 관리하는 방법 (Nginx에 부하 분산, 유니콘 2 APP 서버)를 가지고있다.

네트워크 (SSH를 통해 어쩌면 포트 포워딩)를 통해 소켓 연결을 업스트림 다른 방법이, TCP를 통해 유니콘 연결 (시간 제한, 연결이 끊어) 당신에게 지금 어떤 단점이 있나요? Unicorn은 무국적자가되도록 설계되었지만 가장자리 케이스를 어떻게 관리합니까?

정적 노드를 분산 노드에서 제공하고 싶지 않으므로 각 APP 서버에 Nginx를 설치하고 앞에서 바보 Nginx 분산 장치를 설치하는 것이 좋습니까?

P. 현재 구성은 잘 테스트되어 있으며 Github에 있지만 Nginx + Unicorn은 병목 현상이 된 동일한 시스템에 설치되어 있습니다.

업데이트 : 개발은 엄격히 특정 서버 구성에 따라 다릅니다. 병목 현상은 개발자의 결정뿐만 아니라 개발자가 실행하는 환경 때문에 발생합니다. Stackoverlow는 특정 구성에 대해 잘 모르는 세부 사항과 관련하여 많이 표시된 Q & A로 가득 차 있습니다. 아래 답변 한 Alex는 Github와 함께 일합니다. 나는 자격있는 사람에 의한 답변을 해주셔서 정말 고맙습니다!

+0

정적 자산을 CDN에 업로드하고 TCP를 Unicorns에 연결하는 것이 가장 좋은 해결책입니까? – Anatoly

답변

1

TCP/네트워크를 통해 Unicorns에 액세스하지 마십시오.

설정이 잘된 것처럼 보이지만 단순히 APP 서버 앞에로드 밸런서를 추가 할 수 있지만 Nginx 대신로드 밸런서로 Keepalived (LVS ftw)을 제안합니다.

소켓을 통해 Nginx + Unicorns를 실행하는 APP 서버와의 연결을 분산시킬 수 있습니다.

+1

왜 TCP를 통해 액세스하지 않습니까? 나는 이것을 수년간 해왔으며 괜찮습니다. Nginx는 컴퓨터가 다운되었을 때이를 감지하고 잠시 동안 라우팅을 중지 한 다음 다시 시도합니다. 부하 분산은 더 똑똑 할 수 있지만 keepalived와 같은 소리는 부하 기반 균형을 조정하지 않습니다. – Kevin