Ubuntu-18.04 下使用Nginx搭建高可用,高并发的asp.net core集群

一.实现前的准备

  • 以下是实现简单负载均衡的思路,图中的服务器均为虚拟机

  • 三台Linux服务器,一台用作Nginx负载均衡(192.168.254.139),另外两台用作Asp.Net Core应用程序承载的服务器(192.168.254.140,192.168.254.141)
  • 一台用作于Client的Windows服务器。

二.环境搭建

1.Asp.Net Core程序

就是一个新建的空web应用程序,然后修改了下Startup的中间件,分别部署到2台Ubuntu上。

    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.Run(async (context) =>
            {
                //await context.Response.WriteAsync("this is first web application");
                await context.Response.WriteAsync("this is second web application");
            });
        }
    }

2.配置Nginx服务器

  • 安装Nginx

    • 在Ubuntu终端使用 sudo apt-get install nginx 命令安装Nginx。
    • 然后通过 sudo service nginx start 命令启动服务
    • 确认浏览器显示Nginx默认登录页。可在http://192.168.254.139/index.nginx-debian.html 访问登录页面。
  • 配置Nginx
    • 若要将 Nginx 配置为反向代理以将请求转接到 ASP.NET Core 应用,请修改 /etc/nginx/sites-available/default。 sudo vi /etc/nginx/sites-available/default
    • 设置proxy_pass后面的参数
    • 新增upstream,表示要转接的服务器集合,upstream后面的名字要与proxy_pass后面的参数相对应
    • 修改完之后:wq保存,然后 sudo nginx -t 来验证配置文件的语法有没有错误,如果配置文件测试成功,可以通过运行  sudo nginx -s reload  强制 Nginx 选取更改
upstream cluster.com{
        server 192.168.254.140 weight=1;
        server 192.168.254.141 weight=1;
}       

server {
        listen 80 default_server;
        # listen [::]:80 default_server deferred;
        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don‘t use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _example.com *.example.com;

        location / {
                proxy_pass         http://cluster.com;
                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;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header   X-Forwarded-Proto $scheme;
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        # pass PHP scripts to FastCGI server
        #
        #location ~ \.php$ {
        #       include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
        #       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
        #}

        # deny access to .htaccess files, if Apache‘s document root
        # concurs with nginx‘s one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
}

2.Client控制台应用程序

    class Program
    {
        static void Main(string[] args)
        {
            HttpClient httpClient = new HttpClient();
            for (int i = 0; i < 1000; i++)
            {
                string result = httpClient.GetStringAsync("http://192.168.254.139").Result;
                Console.WriteLine(result);
            }
            Console.ReadKey();
        }
    }

结果如下:

由结果可知,Nginx服务器会根据我们配置Nginx时的权重进行转向,到现在,一个简单的集群已经搭建。

原文地址:https://www.cnblogs.com/hhzblogs/p/9818099.html

时间: 2024-10-16 08:02:22

Ubuntu-18.04 下使用Nginx搭建高可用,高并发的asp.net core集群的相关文章

Ubuntu 18.04 下 emscripten SDK 的安装

Ubuntu 18.04 下 emscripten SDK 的安装 http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html#installation-instructions 需要环境 清华安装源 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu $ sudo apt update $ sudo apt install vim openssh-serv

Ubuntu 16.04下配置nginx与nodejs以及服务的部署

title: Ubuntu 16.04下配置nginx与nodejs以及服务的部署 date: 2019-05-05 22:45:49 tags: Linux --- 第一步:安装nginx sudo apt-get update sudo apt-get install nginx 如果遇到依赖问题,尝试执行sudo apt-get -f install命令 第二步:配置nginx 首先备份原先的配置文件:sudo cp /etc/nginx/sites-available/default /

备忘 ubuntu 18.04 下安装 tensorflow GPU 版本

转自:https://www.cnblogs.com/hutao722/p/9342577.html tensorflow目前已经升级至r1.9版本.在之前的深度学习中,我是在MAC的虚拟机上跑CPU版本的tensorflow程序,当数据量变大后,tensorflow跑的非常慢,在内存不足情况下,又容易造成系统崩溃(虚拟机走的是windows7). 配置信息 为了后续的深度学习,不得已,我在京东买了一部组装厂商提供的主机,是网吧特供机.配置如下: CPU i5 8400 6核 16G内存 GPU

Ubuntu 18.04下安装DotNet Core 3.1

注册 Microsoft 密钥和源 wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb 安装 .NET Core SDK sudo add-apt-repository universe sudo apt-get update sud

【Linux运维-集群技术进阶】Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Webserver集群

额.博客名字有点长.. . 前言 最终到这篇文章了,心情是有点激动的. 由于这篇文章会集中曾经博客讲到的全部Nginx功能点.包含主要的负载均衡,还有动静分离技术再加上这篇文章的重点.通过Keepalived实现的HA(High Available).为什么要实现高可用呢?曾经在搭建的时候仅仅用了一台Nginxserver,这种话假设Nginxserver宕机了,那么整个站点就会挂掉.所以要实现Nginx的高可用,一台挂掉还会有还有一台顶上去.从而保证站点能够持续的提供服务. 关于负载均衡和动静

Ubuntu 18.04 下 PostgreSQL 10 的安装与基础配置

下载安装 在命令行执行如下语句: apt-get install postgresql-10 该指令会帮助你下载如下PostgreSQL组件: ` | ` -- | -- postgresql-client-10 | client libraries and client binaries postgresql-10 | core database server postgresql-contrib-9.x | additional supplied modules (part of the p

Ubuntu 18.04 下用命令行安装Sublime

介绍: 添加来源: $ wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - $ sudo apt-add-repository "deb https://download.sublimetext.com/ apt/stable/ 安装sublime $ sudo apt update $ sudo apt install sublime-text 原文地址:https://www.c

ubuntu 18.04下,KMS_6.9.1服务器启动后,客户端连接一段时间因为libnice而crash的问题修复

相应track issue: https://github.com/Kurento/bugtracker/issues/247 libnice crashes in socket code: g_socket_send_message (socket=0x0) 直接手工编译0.1.15版本更好 原文地址:https://www.cnblogs.com/eaglexmw/p/10351858.html

Andorid开发学习---ubuntu 12.04下搭建超好用的安卓模拟器genymotion 安装卸载virtualbox 4.3

什么是Genymotion? Genymotion是一套完整的工具,它提供了Android虚拟环境.它简直就是开发者.测试人员.推销者甚至是游戏玩家的福音. Genymotion支持Windows.Linux和Mac OS等操作系统,容易安装和使用:按简单的安装过程,选择一款Android虚拟设备,开启后就体验Genymotion带来的快感吧.-----引自百度百科 一.下载并安装genymotion 1.下载genymotion http://www.genymotion.cn/#theme=