当前位置: 移动技术网 > IT编程>开发语言>.net > 实现NetCore3.1运行在DockeDesktop下并用Nginx实现负载均衡

实现NetCore3.1运行在DockeDesktop下并用Nginx实现负载均衡

2020年04月30日  | 移动技术网IT编程  | 我要评论

日记大全500字,全国工资排行:看你拖后腿了吗,混蛋神风流史txt

一、首先去https://www.docker.com/products/docker-desktop下载windows版本的docker desktop并安装(需要win10专业版以上操作系统,并启用cpu虚拟化和安装hvper-v)。

二、新建一个.netcore3.1的api项目,在创建的时候选中启用docker支持。

三、写一个简单的响应输出

public iactionresult hello()
        {
            return content(jsonconvert.serializeobject(new contentmodal{ 
                status = 1,
                code = 200,
                message = $"请求成功=>{request.httpcontext.connection.localipaddress}:{request.httpcontext.connection.localport}",
                content = "ok",
            }), "application/json", encoding.utf8);
        }

四、项目中的dockerfile文件按以下内容完善(多余的可以删掉)

from mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim as base
workdir /app
expose 8001
expose 443
copy . .
env aspnetcore_urls http://+:8001
entrypoint ["dotnet", "weixinkey.dll"]

并且右键此dockerfile属性,如果较新则复制。

使用release模式生成项目,管理员运行cmd,定位到当前项目的release目录下的netcoreapp3.1目录(我用的是.net core3.1版本,如果是其它版本,这个目录名会不同)

然后运行docker build命令打包成docker包

第一次打包的时候会下载所依赖的环境。

五、打包完成后运行power shell(管理员模式),然后运行 docker images即可看到docker包已经推送到docker desktop中了

六、依次启动多个此docker的实例,本次测试启用了四个实例。

七、查看docker desktop中的实例情况

八、下载nginx的最新版本(http://nginx.org/download/nginx-1.18.0.zip),解压后编辑conf目录下的nginx.conf,添加以下内容启用负载均衡。

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                 '$status $body_bytes_sent "$http_referer" '
    #                 '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;
    upstream wxapi{ 
        server 10.2.18.244:8887 weight=1; 
        server 10.2.18.244:8888 weight=1; 
        server 10.2.18.244:8889 weight=1; 
        server 10.2.18.244:8890 weight=1;
    }
    # down 此标记的服务器不参与负载.
    # weight 值越大,权重就越大,越能多次响应请求
    # backup 其它服务器无法响应是会请求此种类型的服务器应急。
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            #index   index.htm;
            proxy_pass http://wxapi;
            #proxy_redirect default;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        } 
    }
}

九、启动nginx(双击nginx.exe或者cmd下运行)

十、访问测试

docker中会对每个实例虚拟一个ip地址,至此,我们的api成功运行在docker中并通过nginx实现了负载均衡。

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网