2011-12-29 3 views
8

클러스터 된 Tigase XMPP 서버에서 Amazon의 EC2을 실행 한 경험이있는 사람이 누구인지는 분명히 알지 못합니다. 예를 들어 EC2에서 Ejabberd를 실행하면 Mnesia로 인해 문제가 발생할 수 있습니다.Amazon EC2의 Tigase XMPP 서버 확장

또는 Tigase를 설치하고 실행하는 데 일반적인 조언이있는 경우.


추가 정보 :

시스템 I 모바일 앱과 서버 (들) 사이에 (거의 실시간으로) XMPP는 단지 의사 소통 용도를 개발하고 있어요.

사용자 수는 처음에는 적지 만 잘하면 늘어날 것입니다. 이것이 시스템의 확장 성이 필요한 이유입니다. 아마 단지 몇 천명의 사용자를 위해 당신은 cc1.4xlarge EC2 인스턴스가 필요 없을 것입니다. (그렇지 않으면 실행하는 데 비용이 많이 듭니다!)

XMPP 서버 데이터베이스에 대해 Amazon RDS에 호스트 된 MySQL 데이터베이스를 사용할 계획입니다.

또한 SleekXMPP을 사용하여 Python으로 작성된 외부 XMPP 구성 요소를 만들 계획입니다. 내가 만들고있는 응용 프로그램이 인스턴트 메시징과 완전히 다르므로 서버의 모든 '작업'을 수행하는 것은이 외부 구성 요소 일 것입니다. 이 부분에서는 Python으로 작성된 외부 XMPP 구성 요소를 Tigase 서버에 연결하는 방법을 찾지 못했습니다. documentation은 Tigase 용으로 특별히 작성된 구성 요소이며 일반적인 XMPP 서버가 아니라 XEP-0114: Jabber Component Protocol을 사용한다고 명시되어 있습니다.

이 추가 정보를 사용하면 내가 알고 있어야 할 다른 것을 생각할 수 있다면 기꺼이 알 수 있습니다.

감사합니다.

답변

25

나는 많은 경험을 가지고 있습니다. 나는 분명하지 않은 문제가 있다고 생각한다. Tigase와 같은 응용 프로그램을 실행하는 신뢰할 수있는 인스턴스가 cc1.4xlarge와 같습니다. 다른 사람은 CPU의 가용성 문제를 야기하고 이것은 당신이 사람들이 일을 다른 사람과의 통화가 아닌 서버에 서비스를 실행할 수있을만큼 운이 있는지 단지 복권이다.

또한 당신은 네트워크 트래픽에 대응할 수 있는지 확인하기 위해 가능한 가장 높은 I/O와 인스턴스가 필요합니다. 높은 I/O는 특히 데이터베이스 인스턴스에 적용됩니다.

명백한 지 확실하지 않지만 인스턴스를 시작할 때마다 EC2의 호스트 이름에이 문제가 있으며 호스트 이름이 변경되고 IP 주소가 변경됩니다. Tigase 클러스터는 호스트 이름에 매우 민감합니다. 인스턴스의 호스트 이름을 강제/변경하는 방법이 있으므로 문제 해결 방법이 될 수 있습니다.

은 물론 나는 온라인 사용자의 수백만 초 이상 당 정말 높은 트래픽 100,000의 XMPP 패킷에 대한 클러스터에 대해 이야기하고있다. 일반적으로 대규모 설치의 경우 전용 서버를 갖는 것이 더 저렴하고 효율적입니다.

일반적으로 Tigase 아마존 EC2에 아주 잘 실행하지만, 특히 클라우드에 테스트 한 후 추가 최적화를 많이 가지고 당신은 정말 최신 SVN의 코드가 필요합니다. 귀하가 귀하의 서비스에 대해 더 자세히 설명해 주시면 더 많은 제안을 할 수 있습니다.

더 많은 의견 :

는 비용에 올 경우, 전용 서버는 지속적으로 서비스를 실행하기위한 항상 저렴 옵션입니다. 매시간 서버를 켜고 끄지 않으려면 일부 전용 서비스를 사용하는 것이 좋습니다. 비용은 더 낮고 성능은 예측 가능합니다. 당신이 정말로 아마존 EC2에 충실 내가 당신에게 몇 가지 구체적인 숫자를 줄 수 있도록/필요를 원하는 경우

그러나, 아래의 경우 목록과 얼마나 많은 온라인 사용자 클러스터가 안정적으로 처리 할 수 ​​있었다입니다

  • 5 * cc1.4xlarge - 1mln 700K 온라인 사용자
  • 1
  • * c1.xlarge - 118K 온라인 사용자
  • 2
  • * c1.xlarge - 127K 온라인 사용자
  • 2 * m2.4xlarge (Tigase에 대한 5기가바이트의 RAM 포함) - 236k 온라인 사용자
  • 2 * m2.4xlarge (Tigase에 대한 20기가바이트의 RAM과) - 315K 온라인 사용자
  • 5 * m2.4xlarge (Tigase에 대한 60 기가 바이트 RAM과) - 400K 온라인 사용자
  • 5 * m2.4xlarge (Tigase에 대한 60 기가 바이트 RAM과) - 312k 온라인 사용자
  • 5 * m2.4xlarge (Tigase에 대한 60 기가 바이트 RAM과) - 327k 온라인 사용자
  • 5 * m2.4xlarge (Tigase에 대한 60 기가 바이트 RAM과) - 280K 온라인 사용자

몇 가지 더 의견 :

  1. 메모리의 양은 왜 그렇게 중요합니까? 이것은 CPU 전력이 매우 신뢰할 수없고 cc1.4x 큰 인스턴스를 제외한 모든 인스턴스에서 일관성이 없기 때문입니다. 8 개의 가상 CPU가 있지만 맨 위 명령을 보면 한 CPU가 작동하고 나머지는 그렇지 않다는 것을 자주 볼 수 있습니다. 이처럼 CPU가 충분하지 않으면 Tigase에서 내부 대기열이 늘어납니다. CPU 전원이 다시 켜지면 Tigase는 대기중인 패킷을 처리 할 수 ​​있습니다. Tigase 메모리가 많을수록 더 많은 패킷을 대기시킬 수 있으며 CPU 결함을보다 잘 처리합니다.
  2. 5 * m2.4xlarge 4 번입니까? 이것은 여러 날과 시간대에 여러 번 시험을 반복했기 때문입니다. 시간과 날짜에 따라 알 수 있듯이 시스템이 다른 부하를 처리 할 수 ​​있습니다. Tigase 인스턴스가 다른 서비스와 함께 CPU 성능을 공유하기 때문에 이것이라고 생각합니다. 그들이 바빴다면 Tigase는 CPU의 힘으로 고통 받았다.

그런데 나는 최대 10k 온라인 사용자의 설치로 당신이 잘되어야한다고 생각한다고 말했습니다. 그러나 명단 크기와 같은 다른 요소는 트래픽 및 부하에 영향을 미치므로 크게 중요합니다. 또한 중요한 트래픽을 생성하는 다른 요소가있을 경우 시스템에 부하가 걸립니다.

어떤 테스트가 없으면 시스템이 실제로 작동하는지 또는로드를 처리 할 수 ​​있는지 여부를 알 수 없습니다.

그리고 구성 요소에 대한 마지막 질문 : Tigase 외부 부품을 연결하는 XEP-0114 및 XEP-0225을 지원

물론. 따라서 다른 언어로 작성된 구성 요소에는 문제가 없어야합니다. 반면에 Tigase의 API를 사용하여 구성 요소를 작성하는 것이 좋습니다. 내부 Tigase 구성 요소 또는 외부 구성 요소로 배포 할 수 있으며 개발자에게는 투명하므로 개발시이 점에 대해 걱정할 필요가 없습니다.이것은 API 및 프레임 워크의 일부입니다. 또한 테스트를위한 내부 구성 요소로 코드를 쉽게 배포 할 수 있으므로 Tigase 프레임 워크의 모든 제품, 스크립팅 기능, 모니터링, 통계를 훨씬 쉽게 개발할 수 있습니다. 당신은 정말로 XMPP 특정 항목에 대해 걱정할 필요가 없습니다. processPacket (...) 메서드의 본문을 채우면됩니다. Tigase 웹 사이트에는이 모든 것에 대한 온라인 설명서가 충분해야합니다.

또한 멀티 스레딩에 대한 파이썬 지원과 매우 높은 부하 하에서 어떻게 동작하는지에 대해 읽어 보시기 바랍니다. 그다지 좋지 않았습니다.

+0

답장을 보내 주셔서 감사합니다. (그리고 Tigase를 만들었습니다!) 제가 개발 한 것에 대한 자세한 내용을 추가했습니다 : –

+0

'tigase-server-5.1.0-beta3-b2667'을 확인하십시오. tar.gz '(http://www.tigase.org/node/2474/2199에서) 괜찮습니까? 아니면 실제로 SVN의 최신 체크 아웃이라면 더 좋을까요? –

+0

굉장하고, Tigase와 지침에 대한 뛰어난 통찰력에 감사드립니다. –