美文网首页
.net core 微服务demo笔记-Nginx分布式集群架构

.net core 微服务demo笔记-Nginx分布式集群架构

作者: zxws1009 | 来源:发表于2020-09-26 16:15 被阅读0次

    .net core 微服务demo笔记
    采用循序的方式演变的程序架构:
    单一进程的单体架构 > 局域网分布式架构 > Nginx分布式集群架构+负载均衡 > Consul高可用性,高伸缩性的集群架构

    demo环境:windows10 + VS 2019 + .net core 3.1

    继上一篇.net core 局域网分布式架构,本篇Nginx分布式集群架构+负载均衡

    一、部署3个之前创建的UserService微服务实例到本地环境,采用Nginx反向代理

    1. 拷贝UserService目录下的文件到3个新建的文件夹分别叫userinstance1,userinstance2,userinstance3
      分别修改这3个文件夹下面的appsetting.json里面的地址和端口号,http://localhost:6201http://localhost:6202http://localhost:6203
    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Warning",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "AppUrls": "http://localhost:6201", // 服务地址 http://localhost:6202, http://localhost:6203
      "Ip": "127.0.0.1", // ip地址
      "Port": "6201" // 端口号
    }
    
    1. 使用命令行将这3个服务运行起来
    dotnet MicroService.UserService.dll
    
    image.png

    二、Nginx集群+反向代理+负载均衡

    1. 下载Nginx并解压到本地,和userinstance1同一级目录


      image.png
    2. 修改配置文件,\conf\nginx.conf

        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
        upstream ServiceInstance { // 声明
            server localhost:6301;
            server localhost:6302;
            server localhost:6303;
        }
    
        server {
            listen       6200; //监听6200
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                proxy_pass  http://ServiceInstance;   //使用
            }
    
    
    1. 开始运行nginx: cmd: start nginx
      现在就开启了nginx代理服务了;

    三、在MallApp中使用该服务

            public IActionResult Index()
            {
                //3. Nginx分布式集群架构+负载均衡-部署多个user微服务实例到本地环境,采用Nginx反向代理,
                // 高可用;对客户端友好,一个实例崩溃其他实例可用自动避开崩溃实例
                // 具有伸缩性;同个代码可以部署多个实例,但无法自动伸缩,需人工干预
                
                var re = HttpHelper.Client_Get(null, "http://localhost:6200/api/users", "");
                var model = new HomeViewModel()
                {
                    Name = "MallApp",
                    NowDate = $"{DateTime.Now.ToLongDateString()} {DateTime.Now.ToLongTimeString()}",
                    IP = $"{ Request.Scheme}://{Request.Host}{Request.Path}",
                    Info = re
                };
                return View(model);
            }
    

    启动MallApp程序,能正常调用http://localhost:6200/api/users

    至此,一个最简单的Nginx分布式集群架构+负载均衡demo完成。

    使用Nginx的方式有缺陷,就是无法自动发现新的服务实例,比如我想新部署一个UserService的实例,则必须要修改配置文件并重启nginx才可用;

    因此,我们下一篇讲解如何使用Consul实现服务实例的发现注册于健康检查。

    相关文章

      网友评论

          本文标题:.net core 微服务demo笔记-Nginx分布式集群架构

          本文链接:https://www.haomeiwen.com/subject/krmquktx.html