.net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡

时间:2023-12-21 20:35:50

  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 服务项目

  .net core 跨平台开发 微服务架构  基于Nginx反向代理 服务集群负载均衡

  2.2、创建Default api 控制器

  .net core 跨平台开发 微服务架构  基于Nginx反向代理 服务集群负载均衡

  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

.net core 跨平台开发 微服务架构  基于Nginx反向代理 服务集群负载均衡
  3、下载安装配置Nginx
  我这边没有使用Linux或虚拟机,直接在Windows中进行安装配置。下载地址:http://nginx.org/en/download.html,下载解压后,配置Nginx服务器监听本地服务器,8080端口。

.net core 跨平台开发 微服务架构  基于Nginx反向代理 服务集群负载均衡

.net core 跨平台开发 微服务架构  基于Nginx反向代理 服务集群负载均衡

  启动Nginx服务器程序:start nginx.exe,正常启动后,我们就可以在浏览器*问Nginx的欢迎首页:

.net core 跨平台开发 微服务架构  基于Nginx反向代理 服务集群负载均衡

  Nginx服务器正常后,我们开发配置Nginx反射代理5177,5178,5179三个服务程序,当我们访问http://localhost:8080,程序将跳转5177或5178或5179服务程序。

.net core 跨平台开发 微服务架构  基于Nginx反向代理 服务集群负载均衡

.net core 跨平台开发 微服务架构  基于Nginx反向代理 服务集群负载均衡

.net core 跨平台开发 微服务架构  基于Nginx反向代理 服务集群负载均衡
  至此,就这么简单,我们就实现了.net core 基于Nginx反向代理,服务集群负载均衡。有不当之处,欢迎指正。