โหลดยอดคงเหลือด้วยนักเทียบท่า

เมื่อเรียกใช้เว็บแอปพลิเคชันโดยปกติคุณต้องการใช้ทรัพยากรให้เกิดประโยชน์สูงสุดโดยไม่ต้องแปลงซอฟต์แวร์ของคุณให้ใช้หลายเธรดหรือเหตุการณ์ที่ซับซ้อน อย่างไรก็ตามนักเทียบท่าจะให้วิธีที่ง่ายสำหรับคุณในการโหลดแอปพลิเคชันของคุณภายในเพื่อให้เกิดประโยชน์สูงสุดจากทรัพยากรเซิร์ฟเวอร์ บทความนี้จะแสดงให้คุณเห็นถึงวิธีการใช้ Nginx ในการโหลดแอพพลิเคชั่นเว็บของคุณโดยใช้ Docker บน CentOS

ขั้นตอนที่ 1: สร้างแอปพลิเคชันอย่างง่าย

เราจะใช้สนิมเพื่อสร้างแอปพลิเคชันที่เรียบง่ายนี้ 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 ภายในแอปพลิเคชัน นี่คือการกำหนดค่าเพื่อให้นักเทียบท่าสามารถฟังใบสมัครของคุณ

cargo build –releaseเมื่อคุณได้เสร็จสิ้นการรวบรวมโปรแกรมประยุกต์โดยการดำเนินการ อาจใช้เวลาสักครู่ขึ้นอยู่กับเซิร์ฟเวอร์ของคุณ หากไม่มีข้อผิดพลาดให้ทดสอบแอปพลิเคชันโดยทำตามขั้นตอนเหล่านี้:

  • target/release/webappวิ่ง
  • นำทางไปยังhttp://0.0.0.0:3000/ในเบราว์เซอร์ของคุณ แทนที่0.0.0.0ด้วยที่อยู่ IP ของเซิร์ฟเวอร์ของคุณ

หากทุกอย่างทำงานอย่างถูกต้องคุณจะเห็น "Hello Vultr :)" บนหน้า

ขั้นตอนที่ 2: สร้างคอนเทนเนอร์ Docker

สร้าง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) หากคอนเทนเนอร์มีอยู่ระบบจะฆ่าและลบออกจากรีจิสทรีก่อนที่จะถูกนำไปใช้งานอีกครั้ง

ขั้นตอนที่ 3: กำหนดค่า Nginx

ตอนนี้สร้างไฟล์การกำหนดค่า 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 ของเซิร์ฟเวอร์ของคุณ

systemctl restart nginxเริ่มต้นใหม่ด้วยการทำ Nginx แก้ไขข้อผิดพลาดจากนั้นทำตามขั้นตอนต่อไป

ขั้นตอนที่ 4: ปรับใช้แอปพลิเคชัน

bash ./deploy.shปรับใช้โปรแกรมประยุกต์โดยการทำงาน

คุณสามารถตรวจสอบสถานะของใบสมัครของคุณที่มีdocker ps- จะมี 5 webappภาพที่สร้างขึ้นเริ่มต้นด้วย ตอนนี้ไปที่http://0.0.0.0:3000/เบราว์เซอร์ของคุณคุณจะเห็นข้อความ "Hello, Vultr :)" อีกครั้ง

แล้วสิ่งนี้แตกต่างกันอย่างไร

หากคุณรันการทดสอบเกณฑ์มาตรฐานเทียบกับการกำหนดค่าโหลดบาลานเซอร์คุณจะสังเกตเห็นว่ามีการใช้ทรัพยากรเซิร์ฟเวอร์ของคุณมากขึ้นซึ่งเป็นสิ่งที่คุณต้องการโดยเฉพาะอย่างยิ่งหากแอปพลิเคชันของคุณถูกสร้างขึ้นในภาษาเช่นโหนด หากคุณต้องการอัปเกรดแอปพลิเคชันของคุณคุณสามารถทำได้และรันใหม่deploy.shเพื่อสร้างภาพและปรับใช้คอนเทนเนอร์

ฝากความเห็น

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true