91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 服務器 > 
  • 怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

發布時間:2021-11-12 10:20:00 來源:億速云 閱讀:199 作者:小新 欄目:服務器

這篇文章主要介紹怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一.Self-Host Kestrel

1. 在vs2017中新建dotnet core2.0 webapi項目 ApiService

2.  參照官方文檔,https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction?tabs=aspnetcore2x  在Startup中增加

app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto });

配置運行Url, 在Program.cs中

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

3. 發布項目文件,通過FTP上傳到linux服務器。 一個core2.0 webapi新項目發布后只有幾百kb

4. 切換目錄,dotnet ApiService.dll

5. 運行成功,開放服務器端口,不過目前是運行于Kestrel 的selfhost 狀態。

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

二. 需要一個代理

ASP.NET Core 的運行環境由新開發的 Kestrel Server 負責,IIS 退回到 HTTP  的偵聽器的角色,微軟也特別為了這個需求開發了 IIS Platform Handler,以處理 HTTP  與運行環境之間的信息轉發工作,微軟官方推薦在Linux服務器上使用Nginx,Haproxy等代理Kestrel Server。

理解dotnet core host最重要的一點是,它獨立運行。不在IIS中運行,也不需要IIS運行。它擁有獨立的自宿主Web  Server,在內部使用self-host server處理請求。

然而,你依然可以把IIS放在self-host server前面,作為一個前端代理,因為Kestrel是一個只擁有原始功能的web  server,它并沒有像iis那樣完整的web server  功能,比如Kestrel不支持單個ip上,多個應用綁定80端口,IIS還可以提供靜態文件服務,gzip壓縮,靜態文件緩存等其他高級功能,IIS在處理請求時效率非常好,,所以有必要利用這一點,您可以讓iis處理它真正擅長的任務,并將動態任務傳遞到core應用程序。所以說在windows上,iis依然繼續扮演著非常重要的角色。

在傳統經典的Asp.Net應用中,所有內容都托管在iis工作進程中(w3wp.exe),這就是我們常說的應用程序池。并且應用由IIS內置托管功能加載實例化,經過工作者進程加載aspnet_isapi.dll,在用aspnet_isapi加載.Net運行時。IIS工作者進程中的應用程序池加載應用程序域。一系列工作結束后,由ISAPIRuntime對象調用PR方法,封裝HttpWorkerRequest對象,傳遞給HttpRuntime  創建HttpApplication實例,  然后一系列HttpApplication初始化和管道事件執行。當然加載運行時,應用程序域等都只是***個請求到達后做的事兒。

在dotnet  core中很不同的是,core不會在iis工作進程中運行,而是在自己的Kestrel組件中。通過一個叫做AspNetCoreModule的原生的IIS  module,執行外部的應用。Kestrel是一款針對吞吐量性能做了大量優化的dotnet web  server的實現,它將網絡請求快速傳遞給你的應用,但它僅僅是一個原始的web server,沒有IIS那樣全面的Web管理服務。

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

雖然IIS站點依然需要應用程序池,但是應該設置為無托管代碼,由于應用程序池只作為轉發請求的代理,因此不需要實例化.net  運行時。所以在linux上也一樣,我們需要一個self-host的前端代理,在這里參考文檔使用nginx。

三.nginx做代理

找到/etc/nginx配置nginx.conf

server {     listen 80;     location / {         proxy_pass http://localhost:5000;         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;     } }

我將nginx 的user改為root 5000改成自己的10000

創建service file

nano /etc/systemd/system/apiservice.service

service file的內容,官方示例:

1 [Unit]  2 Description=Example .NET Web API Application running on Ubuntu  3   4 [Service]  5 WorkingDirectory=/var/aspnetcore/hellomvc  6 ExecStart=/usr/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll  7 Restart=always  8 RestartSec=10  # Restart service after 10 seconds if dotnet service crashes  9 SyslogIdentifier=dotnet-example 10 User=www-data 11 Environment=ASPNETCORE_ENVIRONMENT=Production  12  13 [Install] 14 WantedBy=multi-user.target

修改了 User為root。還修改了工作目錄 就是我項目文件ftp上傳后的目錄,ExecStart的 dotnet這個目錄不要修改  dll目錄,改成目標要執行的dll的目錄

然后enable service

執行 systemctl enable kestrel-hellomvc.service

start并驗證service的狀態

systemctl start kestrel-hellomvc.service

systemctl status kestrel-hellomvc.service

訪問監聽中的80端口,證明服務成功。

四.做負載均衡

按照相同的方式 我們再部署一個10001,修改nginx,配置負載均衡。

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

訪問證明我們配置成功。

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

五.創建Docker Image

官方提供的dotnet core鏡像位  microsoft/dotnet。docker基礎命令就不提了,剛開始用也是邊學邊記。下面基于microsoft/dotnet  image創建自己的image。以便快速運行多個docker  image,配置更多的負載均衡,而無需手動copy到各個服務器上再配置環境,也就是說無論我們創建幾十個甚至上百個,有我們自己的docker  hub的話,創建起來是很快的,也不會出現在這臺服務器上可用,在另一臺服務器上搞出什么其他問題。

下面只是一個學習過程中自己的范例,離***實踐方式還差得很遠,希望能對看隨筆的朋友有所幫助。

由于還要在每個image的apiService前面 放置nginx,所以 core  application在各個容器中都是使用self-host的形式,在Kestrel上運行。在前端通過nginx 對docker暴露出的端口號進行代理。

在發布的網站目錄下 創建Dockerfile。

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

保存后 執行docker構建 使用當前目錄的Dockerfile創建鏡像。docker build -t image/apiservice-v3 . 注意結尾有個 . (使用當前目錄)

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

docker images 查看鏡像

我們可以發現 剛創建的docker image 比我們FROM的microsoft/dotnet 大小大一點。

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

下面運行下看看 四行命令 運行了四個我們剛創建的image

docker run -d -p :81:20000 image/apiservice-v3


怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

docker ps -a 查看下運行中的image進程

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

下面配置nginx負載均衡然后service nginx reload,實驗完成。

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

下面使用docker kill對docker container逐一停止,停止后訪問,確認負載均衡成功。當四個container都停止后,nginx返回  502 error.

怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點

以上是“怎么使用Docker快速創建.Net Core2.0 Nginx負載均衡節點”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹤壁市| 马公市| 刚察县| 四子王旗| 诸暨市| 宜春市| 驻马店市| 襄垣县| 东兰县| 嫩江县| 西和县| 巴彦县| 雷州市| 军事| 漳平市| 施秉县| 东辽县| 涟源市| 和硕县| 阿图什市| 铁岭县| 安义县| 四会市| 海口市| 大足县| 阳山县| 中牟县| 新干县| 卢湾区| 吴江市| 灵寿县| 英超| 田阳县| 抚松县| 黄陵县| 涪陵区| 崇明县| 仪陇县| 武川县| 沅陵县| 司法|