在Linxu上运行.net core项目并用Nginx做负载均衡服务器
负载均衡:英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行。从网站部署的角度来讲,负载均衡就是将请求转发到相应的服务器上,以避免单台服务器的压力过大,运行不流畅或者服务器崩溃。
一.创建.net core项目
dotnet new mvc -n "Hello" #创建一个名为Test的.net core MVC项目
修改HomeController
using System; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; namespace Hello.Controllers { public class HomeController : Controller { private readonly ILogger<HomeController> _logger; public IConfiguration _configuration { get; } public HomeController(ILogger<HomeController> logger,IConfiguration Configuration) { _configuration = Configuration; _logger = logger; } public IActionResult Index() { ViewBag.Url= _configuration["port"]; #运行时传递的port参数用于页面输出,查看效果 return View(); } } }
二.配置Nginx
vim /usr/local/nginx/conf/nginx.conf (nginx配置文件默认位置)
upstream website{ server localhost:5000; server localhost:5001; server localhost:5002; } server { listen 80; server_name localhost; location / { proxy_pass http://website; #跟上面定义upstream名称保持一致 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
1.轮询(默认方式)
//每个请求按时间顺序逐一分配到不同的后端服务器 upstream website{ server localhost:5000; server localhost:5001; server localhost:5002; }
2.权重
根据设置的权重,设置被访问的概率。权重和被访问的概率成正比。权重越大被访问的概率也就越大
//三台主机被访问的概率分别为 30%、30%、40%
upstream website{
server localhost:5000 weight=3;
server localhost:5001 weight=3;
server localhost:5002 weight=4;
}
3.ip_hash(非自带)
通过客户端请求ip进行hash计算,再通过hash值选择后端server,这种方式可以有效的解决用户的登录失效问题,若是采用轮询的方式,用户第一次登录时在A服务器上进行登录,A服务器会保存用户的登录信息。当用户刷新时,用户可能访问的是B服务器,此时B服务器中没有用户的登录信息,则需要用户重新登录
upstream website{ ip_hash; server localhost:5000; server localhost:5001; server localhost:5002; }
4.fair(非自带)
按照后端服务器的处理时间来进行分配,处理时间短的会被优先分配
upstream website{ server localhost:5000; server localhost:5001; server localhost:5002; fair; }
其他标记设置
weight=number //设置服务器的权重,默认情况下为1。 max_conns=number //限制number到代理服务器的最大同时连接数(1.11.5)。默认值为零,表示没有限制。如果服务器组未驻留在共享内存中,则此限制在每个工作进程中均有效。 max_fails=number //设置在fail_timeout 参数设置的持续时间内应与服务器通信失败的尝试次数,以认为服务器在fail_timeout参数设置的持续时间内不可用 。默认情况下,未成功尝试的次数设置为1。零值将禁用对尝试的记帐。在这里,不成功的尝试是与服务器建立连接时出现错误或超时。 fail_timeout=time //在指定次数的不成功尝试与服务器通信的时间范围内,应考虑服务器不可用,以及服务器将不可用的时间段。默认情况下,该参数设置为10秒。 backup //将服务器标记为备份服务器。当主服务器不可用时,将通过与备份服务器的连接。该参数不能与 哈希和随机负载平衡方法一起使用。 down //将服务器标记为永久不可用。
三.运行项目查看效果
1.后台启动.net core项目
dotnet Hello.dll --urls="http://localhost:5000" --port=5000 & dotnet Hello.dll --urls="http://localhost:5001" --port=5001 & dotnet Hello.dll --urls="http://localhost:5002" --port=5002 &
2.启动nginx
nginx源码安装的默认位置:/usr/local/nginx/sbin/nginx
nginx //启动nginx nginx -t //检查配置文件 nginx -s reload //重新载入配置文件 nginx -s reopen //重启nginx nginx -s stop //停止nginx nginx -c /usr/local/nginx/conf/nginx.conf //设置指定配置文件,有时nginx启动或关闭报错,可以用这条命令解决
 
                    
                     
                    
                 
                    
                

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号