网络上可以使用 unix 套接字吗?运行 unicorn 的多个应用服务器可以使用同一个共享套接字吗?
我想要实现的设置如下:
nginx
↓
Unicorn Unicorn
nginx配置:
upstream github {
server unix:/shared/unicorn.sock;
}
独角兽配置 (x2)
listen '/shared/unicorn.sock'
我知道可以做类似的事情:
upstream unicorns {
server 192.168.1.100:5000;
server 192.168.1.101:5000;
}
然而我认为这并不理想,因为您无法享受 Unicorn 自行进行负载平衡的好处,而且您必须提前指定 IP 地址。
几年前 GitHub在博客中介绍了他们的 Unicorn 设置,我认为他们描述了类似的设置,但不清楚如何实现这一点。
答案1
Unix 套接字仅在该系统内工作。网络上的套接字称为 TCP 连接。实现此目的的方法是让 Unicorn 监听 TCP 套接字,并配置 nginx 以将它们用作上游(如您所提到的)。Unicorn 没有分布式负载平衡;您需要 nginx 来进行负载平衡。