我正在为我的网站设置负载均衡器。我想手动执行此操作,以便完全控制请求的重新路由方式。我使用AWS EBS在2个ec2实例之间进行负载平衡,并且工作正常。每个ec2实例都使用nginx作为nodejs的反向代理。
目前,我每个服务器上只运行一个节点应用程序,但理想情况下,我希望每台服务器上有4个节点应用程序(每个核心1个)。
我认为管理这个的一个非常简单的方法是允许nginx选择8081和8084之间的随机端口并重定向到其中一个应用程序。从理论上讲,这样我就可以尽可能均衡地平衡负载。
目前这是我的nginx反向代理设置:
server {
client_max_body_size 200M;
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / {
client_max_body_size 200M;
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Real-User-Agent $http_user_agent;
proxy_set_header Connection 'upgrade';
proxy_set_header X-serv-ip 'my.server.ip';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
基本上,我的问题归结为如果有一些方法来制作像$ rand_port这样的变量,并且每次发出请求时,$ rand_port设置为8081,8082,8083或8084,然后在我的proxy_pass中我可以做类似的事情:
proxy_pass http://localhost:{$rand_port} #not sure if the syntax is right.
是否有任何东西可以让我做这样的事情,或者其他什么解决方案呢?
答案 0 :(得分:0)
nginx load balancing允许您确定算法...如果您只需要每个服务器均等加载使用此
upstream myproject {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
server 127.0.0.1:8084;
}
server {
client_max_body_size 200M;
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / {
client_max_body_size 200M;
proxy_pass http://myproject;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Real-User-Agent $http_user_agent;
proxy_set_header Connection 'upgrade';
proxy_set_header X-serv-ip 'my.server.ip';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}