nginx+node的负载均衡

负载均衡

负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术。负载均衡将特定的业务(网络服务、网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性。

使用node配置了两个服务器,分别监听3000和3001端口。

var http=require('http')
var server1=http.createServer()
server1.on('request',(request,response)=>{
    var url=request.url
    response.setHeader('Access-Control-Allow-Origin','*')
    if(url==='/'){
        var data={
            code:200,
            message:'you search home page'
        }
        response.write(JSON.stringify(data))
        response.end()
    }else if(url==='/web'){
        var data={
            code:200,
            message:'you got websock link'
        }
        response.write(JSON.stringify(data))
        response.end()
    }
})
server1.listen(3000,()=>{
    console.log(`server start on port 3000`)
})

var server2=http.createServer()
server2.on('request',(request,response)=>{
    var url=request.url
    response.setHeader('Access-Control-Allow-Origin','*')
    if(url==='/'){
        var data={
            code:200,
            message:'you search home page'
        }
        response.write(JSON.stringify(data))
        response.end()
    }else if(url==='/web'){
        var data={
            code:200,
            message:'you got websock link'
        }
        response.write(JSON.stringify(data))
        response.end()
    }
})
server2.listen(3001,()=>{
    console.log(`server start on port 3001`)
})

配置好node的服务器之后准备nginx服务器的配置
要点是通过upstream 指令把两个node服务器打成一个服务器池。然后通过location指令,要求全部根目录请求转发到这个池内。池会对它之内的服务器做负载均衡。

upstream nodejs {  
    server 127.0.0.1:3000;            //可以加上 weight=5;  代表权重  值越大分配比重越大  没有则平均分配
    server 127.0.0.1:3001;
    keepalive 64;
}
server {
    listen 80;                                      
    server_name 127.0.0.1;     
    access_log /var/log/nginx/test.log;
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host  $http_host;
        proxy_set_header X-Nginx-Proxy true;
        proxy_set_header Connection "";
        proxy_pass      http://nodejs;             
    }
}

在upstream中配置了两个Node.js服务器。此外,我们还设置了proxy_pass http://nodejs做HTTP请求代理。

设置好之后访问nginx服务器,就可以实现了负载均衡的效果。

你可能感兴趣的:(node,nodejs,nginx,js)