簡體   English   中英

使用 Django 在 AWS 上使用 EC2 對 Websockets 進行故障排除

[英]Troubleshooting Websockets with EC2 on AWS using Django

我正在使用 Django-Channels 嘗試獲取實時功能,例如聊天/消息傳遞、通知等。現在,我已經使用此處文檔中描述的設置在我的筆記本電腦上一切正常: http://channels .readthedocs.io/en/latest/ 我使用本地 redis 服務器進行測試。

但是,當我部署到我的 Amazon EC2 Elastic Beanstalk 服務器(使用 AWS ElastiCache Redis)時,WebSocket 功能失敗。 我正在閱讀,我認為這是由於亞馬遜的 HTTPS 不支持 WebSockets,所以我需要切換到安全 TCP。 我嘗試這樣做: https://blog.jverkamp.com/2015/07/20/configuring-websockets-behind-an-aws-elb/https://medium.com/@Philmod/load-balancing- websockets-on-ec2-1da94584a5e9#.ak2jh5h0q但無濟於事。

有沒有人成功地在 AWS EB 上使用 CentOS/Apache 和 Django 實現 WebSockets? Django-Channels 包是相當新的,所以我想知道是否有人經歷過和/或克服了這個障礙。 提前致謝

AWS推出了支持Web套接字的新Application Load Balancer。 將您的ELB更改為應用程序負載均衡器,這將解決您的問題。

https://aws.amazon.com/blogs/aws/new-aws-application-load-balancer/

如上所述這里它可以運行使用應用負載平衡器上彈性魔豆Django的渠道。

在簡化形式中,它基本上是:

  1. 創建一個ALB
  2. 添加2個目標組,一個指向端口80,另一個指向達芙妮端口,即8080。
  3. 創建2個路徑規則 讓默認路由指向目標組1(端口80),並將第二個路由指向使用相對路徑,即。 / ws /並將其指向目標組2。
  4. 將Daphne和工人添加到supervisord(或其他init系統)
  5. DONE! 通過相對網址ws://example.com/ws/訪問Daphne / websockets。

我想ALB是唯一的方法。 原因是因為使用經典LB中的SSL協議列表器,會話粘性和X-Forwaded標頭將不會被轉發,並將導致代理服務器重定向循環。 Doc在這里,

http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html

如果我找到現有CLB的方法,我會更新答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM