1、概述
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
下面我将创建.net core weapi 服务,然后使用同一服务程序源码,配置启动5177,5178,5179 三个不同端口的服务程序,作为服务集群,然后下载安装配置Nginx程序,反向代理服务集群,通过访问Nginx服务器,跳转访问由三个服务程序的服务集群。
2、创建.net core webapi 微服务
本人使用Visual Studio 2019 .net core 3.1 的开发环境。
2.1、创建.net core webapi 服务项目
2.2、创建Default api 控制器
2.3、增加Get方法,返回配置信息。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging; namespace WebApp.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class DefaultController : ControllerBase
{
private readonly ILogger<DefaultController> _logger;
private readonly IConfiguration _configuration; public DefaultController(ILogger<DefaultController> logger
, IConfiguration config)
{
this._logger = logger; this._configuration = config;
}
[HttpGet()]
public OkObjectResult Get()
{
var result = new
{
id = this._configuration["ip"],
port = this._configuration["port"],
now = DateTime.Now
};
return this.Ok(result);
}
}
}
2.4、使用控制台命令启动,同一服务程序源码,配置 5177,5178,5179三个不同端口,组建三个的服务应用集群。
dotnet webapp.dll --urls="http://*:5177" --ip="127.0.0.1" --port=5177
dotnet webapp.dll --urls="http://*:5178" --ip="127.0.0.1" --port=5178
dotnet webapp.dll --urls="http://*:5179" --ip="127.0.0.1" --port=5179
3、下载安装配置Nginx
我这边没有使用Linux或虚拟机,直接在Windows中进行安装配置。下载地址:http://nginx.org/en/download.html,下载解压后,配置Nginx服务器监听本地服务器,8080端口。
启动Nginx服务器程序:start nginx.exe,正常启动后,我们就可以在浏览器*问Nginx的欢迎首页:
Nginx服务器正常后,我们开发配置Nginx反射代理5177,5178,5179三个服务程序,当我们访问http://localhost:8080,程序将跳转5177或5178或5179服务程序。
至此,就这么简单,我们就实现了.net core 基于Nginx反向代理,服务集群负载均衡。有不当之处,欢迎指正。