在Arch Linux上使用Makepkg
在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。
运行Web应用程序时,通常希望充分利用资源,而不必转换软件以使用多线程或复杂事件循环。但是,Docker确实为您提供了一种简单的方法,可让您在内部对应用程序进行负载平衡以充分利用服务器资源。本文将向您展示如何使用Nginx在CentOS上使用Docker平衡Web应用程序。
我们将使用rust构建这个简单的应用程序。假设您已经安装了rust,请运行cargo new webapp –bin。成功后,您将看到一个名为的目录webapp。在其中webapp,您会看到一个名为的文件Cargo.toml。在其上附加以下几行:
[dependencies.iron]
version = "*"
接下来,在src/main.rs文件内部,删除所有内容并使用以下内容进行填充:
extern crate iron;
use iron::prelude::*;
use iron::status;
fn main() {
Iron::new(|_: &mut Request| {
Ok(Response::with((status::Ok, "Hello Vultr :)")))
}).http("0.0.0.0:3000").unwrap();
}
注意:请勿在应用程序中更改IP。对其进行配置,以便Docker可以侦听您的应用程序。
完成后,通过执行编译应用程序cargo build –release。根据您的服务器,可能需要几分钟。如果没有错误,请按照以下步骤测试应用程序:
target/release/webapp。http://0.0.0.0:3000/在浏览器中导航到。替换0.0.0.0为服务器的IP地址。如果一切正常,您将在页面上看到“ Hello Vultr :)”。
创建一个Dockerfile,并用以下内容填充它:
FROM centos:latest
MAINTAINER User <user@localhost>
RUN yum update -y
COPY ./webapp/target/release/webapp /opt/
EXPOSE 3000
WORKDIR /opt
CMD ./webapp
保存文件。然后创建一个名为的文件deploy.sh,并使用以下内容进行填充:
DEFAULT_PORT=45710
APP_PORT=3000
DEPLOY=5
NAME="webapp"
docker build -t webapp:example .
for ((i=0; i<DEPLOY; i++)); do
docker kill $NAME$i ; docker rm $NAME$i
docker run --name $NAME$i -p 127.0.0.1:$(((i * 1000) + DEFAULT_PORT)):$APP_PORT -d webapp:example
done
运行此脚本时,它将生成映像并根据您设置的数量(默认值为5)部署容器。如果该容器存在,它将在再次部署之前将其杀死并从注册表中删除。
现在,创建一个Nginx配置文件,并用以下内容填充它:
upstream application {
server localhost:45710;
server localhost:46710;
server localhost:47710;
server localhost:48710;
server localhost:49710;
}
server {
listen 0.0.0.0:80;
location / {
expires 1w;
proxy_pass http://application;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
替换0.0.0.0为服务器的IP地址。
通过执行重启Nginx systemctl restart nginx。解决所有错误,然后继续下一步。
通过运行部署应用程序bash ./deploy.sh。
您可以使用docker ps- 检查应用程序的状态-将创建5个以开头的图像webapp。现在,http://0.0.0.0:3000/在浏览器中导航到,您将再次看到“ Hello,Vultr :)”消息。
那么,这到底有什么不同?
如果针对负载均衡器配置运行基准测试,则会注意到您正在使用更多的服务器资源,这正是您想要的,特别是如果您的应用程序是使用Node之类的语言构建的,则该语言通常是单线程的。如果您需要升级应用程序,则可以这样做,然后重新运行deploy.sh来重建映像并部署容器。
在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。
快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。
学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。
使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。
了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。
Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+
閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。
最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息