2011-12-29 41 views
8

Có ai có kinh nghiệm chạy các máy chủ XMPP được nhóm Tigase XMPP trên Amazon EC2, chủ yếu là tôi muốn biết về bất kỳ điều gì có thể khiến tôi không hiểu rõ. (Ví dụ dường như chạy Ejabberd trên EC2 có thể gây ra sự cố do Mnesia.)Chia tỷ lệ máy chủ XMPP Tigase trên Amazon EC2

Hoặc nếu bạn có bất kỳ lời khuyên chung nào về cách cài đặt và chạy Tigase trên Ubuntu.


Thông tin thêm:

Hệ thống Tôi đang phát triển sử dụng XMPP chỉ để giao tiếp (trong gần thời gian thực) giữa một ứng dụng di động và máy chủ (s).

Số lượng người dùng ban đầu sẽ nhỏ, nhưng hy vọng sẽ tăng lên. Đây là lý do tại sao hệ thống cần phải được mở rộng. Có lẽ chỉ với một vài nghìn người dùng, bạn sẽ không cần một phiên bản EC1.4xlarge EC2? (Nếu không, điều này sẽ rất tốn kém để chạy!)

Tôi định sử dụng cơ sở dữ liệu MySQL được lưu trữ trong Amazon RDS cho cơ sở dữ liệu máy chủ XMPP.

Tôi cũng có kế hoạch tạo thành phần XMPP bên ngoài được viết bằng Python, sử dụng SleekXMPP. Nó sẽ là thành phần bên ngoài này làm tất cả các 'công việc' của máy chủ, vì ứng dụng tôi đang tạo là khá khác với tin nhắn tức thì. Đối với phần này tôi đã không làm việc ra làm thế nào để kết nối một thành phần XMPP bên ngoài được viết bằng Python với một máy chủ Tigase. Các documentation dường như đề nghị rằng các thành phần được viết đặc biệt cho Tigase - và không cho một máy chủ XMPP chung, sử dụng XEP-0114: Jabber Component Protocol, như tôi mong đợi.

Với thông tin bổ sung này, nếu bạn có thể nghĩ ra bất kỳ điều gì khác tôi nên biết về tôi, tôi rất vui được biết.

Cảm ơn bạn :)

Trả lời

25

Tôi có rất nhiều kinh nghiệm. Tôi nghĩ rằng có một tải trọng của các vấn đề không rõ ràng. Giống như trường hợp đáng tin cậy duy nhất để chạy ứng dụng như Tigase là cc1.4xlarge. Những người khác gây ra vấn đề với tính khả dụng của CPU và đây chỉ là một cuộc xổ số cho dù bạn có đủ may mắn để chạy dịch vụ của mình trên một máy chủ không bận với những người khác làm việc hay không.

Ngoài ra, bạn cần một phiên bản có I/O cao nhất có thể để đảm bảo nó có thể đối phó với lưu lượng mạng. I/O cao áp dụng đặc biệt cho cá thể cơ sở dữ liệu.

Không chắc chắn nếu điều này là hiển nhiên hay không, nhưng có vấn đề này với tên máy chủ trên EC2, mỗi khi bạn bắt đầu dụ thay đổi tên máy chủ và thay đổi địa chỉ IP. Cụm Tigase khá nhạy cảm với tên máy chủ. Có một cách để buộc/thay đổi tên máy chủ cho cá thể, vì vậy đây có thể là một cách giải quyết vấn đề.

Tất nhiên tôi đang nói về một cụm cho hàng triệu người dùng trực tuyến và lưu lượng truy cập thực sự cao 100k gói XMPP mỗi giây trở lên. Nói chung để cài đặt lớn nó là cách rẻ hơn và hiệu quả hơn để có một máy chủ chuyên dụng.

Nói chung, Tigase chạy rất tốt trên Amazon EC2 nhưng bạn thực sự cần mã SVN mới nhất vì nó có rất nhiều tối ưu hóa được thêm vào đặc biệt là sau khi kiểm tra trên đám mây. Nếu bạn cung cấp thêm một số chi tiết về dịch vụ của bạn, tôi có thể có thêm một số gợi ý.

Nhiều nhận xét:

Nếu nói đến chi phí, một máy chủ chuyên dụng là lựa chọn luôn luôn rẻ hơn cho ngừng chạy dịch vụ. Trừ khi bạn có kế hoạch để chuyển đổi máy chủ on/off trên cơ sở hàng giờ tôi sẽ khuyên bạn nên đi cho một số dịch vụ chuyên dụng. Chi phí thấp hơn và hiệu suất là cách dễ dự đoán hơn.

Tuy nhiên, nếu bạn thực sự muốn/cần phải dính vào Amazon EC2 cho tôi cung cấp cho bạn một số con số cụ thể, dưới đây là danh sách các trường hợp và có bao nhiêu người sử dụng trực tuyến cụm đã có thể đáng tin cậy xử lý:

  • 5 * cc1.4xlarge - 1mln 700k người dùng trực tuyến
  • 1 * c1.xlarge - 118k người dùng trực tuyến
  • 2 * c1.xlarge - 127k người dùng trực tuyến
  • 2 * m2.4xlarge (với RAM 5GB cho Tigase) - Người dùng trực tuyến 236k
  • 2 * m2.4xlarge (với RAM 20GB cho Tigase) - 315k trực tuyến người dùng
  • 5 * m2.4xlarge (với RAM 60GB cho Tigase) - 400k trực tuyến người dùng
  • 5 * m2.4xlarge (với RAM 60GB cho Tigase) - 312k người đang truy cập
  • 5 * m2.4xlarge (với RAM 60GB cho Tigase) - người đang truy cập 327k
  • 5 * m2.4xlarge (với RAM 60GB cho Tigase) - người đang truy cập 280k

Một vài ý kiến ​​hơn :

  1. Tại sao số lượng bộ nhớ lại quan trọng đến vậy? Điều này là do sức mạnh của CPU là rất không đáng tin cậy và không phù hợp trên tất cả các trường hợp cc1.4xlarge. Bạn có 8 CPU ảo nhưng nếu bạn nhìn vào lệnh trên, bạn thường thấy một CPU đang hoạt động và phần còn lại thì không. Sức mạnh CPU không đủ dẫn đến hàng đợi nội bộ phát triển trong Tigase. Khi nguồn điện CPU quay trở lại, Tigase có thể xử lý các gói đang chờ. Bộ nhớ nhiều hơn, Tigase có nhiều gói dữ liệu hơn có thể xếp hàng đợi và xử lý tốt hơn sự thiếu hụt CPU.
  2. Tại sao có 5 * m2.4xlarge 4 lần? Điều này là do tôi lặp lại các bài kiểm tra nhiều lần vào những ngày và thời gian khác nhau trong ngày. Như bạn có thể thấy tùy thuộc vào thời gian và ngày hệ thống có thể xử lý tải khác nhau. Tôi đoán điều này là do trường hợp Tigase chia sẻ sức mạnh CPU với một số dịch vụ khác. Nếu họ bận rộn thì Tigase phải chịu đựng CPU dưới quyền lực.

Điều đó nói rằng tôi nghĩ rằng với việc cài đặt tối đa 10 nghìn người dùng trực tuyến, bạn nên ổn. Tuy nhiên, các yếu tố khác như kích thước danh sách rất quan trọng vì chúng ảnh hưởng đến giao thông và tải. Ngoài ra nếu bạn có các yếu tố khác mà tạo ra một lưu lượng truy cập đáng kể này sẽ đặt tải trên hệ thống của bạn.

Trong mọi trường hợp, không có một số thử nghiệm thì không thể biết được hệ thống của bạn hoạt động như thế nào hoặc liệu nó có thể xử lý tải.

Và câu hỏi cuối cùng liên quan đến thành phần:

Tất nhiên Tigase không hỗ trợ xếp-0114 và xếp-0225 để kết nối các thành phần bên ngoài. Vì vậy, điều này không phải là một vấn đề với các thành phần được viết bằng các ngôn ngữ khác nhau. Mặt khác, tôi khuyên bạn nên sử dụng API của Tigase để viết thành phần. Chúng có thể được triển khai như các thành phần bên trong của Tigase hoặc như các thành phần bên ngoài và điều này là minh bạch cho nhà phát triển, bạn không phải lo lắng về điều này trong thời gian phát triển.Đây là một phần của API và khung công tác. Ngoài ra, bạn có thể sử dụng tất cả các hàng hóa từ khung công tác Tigase, khả năng kịch bản, giám sát, thống kê, phát triển dễ dàng hơn vì bạn có thể dễ dàng triển khai mã của mình làm thành phần nội bộ cho các thử nghiệm. Bạn thực sự không phải lo lắng về bất kỳ công cụ cụ thể nào của XMPP, bạn chỉ cần điền vào phần thân của phương thức processPacket (...) và đó là nó. Nên có đủ tài liệu trực tuyến cho tất cả điều này trên trang web của Tigase.

Ngoài ra, tôi khuyên bạn nên đọc về hỗ trợ Python cho đa luồng và cách hoạt động của nó dưới tải rất cao. Nó thường không tuyệt vời như vậy.

+0

Cảm ơn bạn đã trả lời (và để làm cho Tigase!) Tôi đã thêm một số chi tiết về những gì tôi đang phát triển :-) –

+0

Chỉ cần kiểm tra, phiên bản 'tigase-server-5.1.0-beta3-b2667. tar.gz '(từ http://www.tigase.org/node/2474/2199) được rồi - hoặc nó sẽ tốt hơn nếu nó thực sự là thanh toán mới nhất từ ​​SVN? –

+0

Thật tuyệt vời, cảm ơn vì sự thấu hiểu tuyệt vời về Tigase và hướng dẫn. –

Các vấn đề liên quan