Cân bằng tải với Docker

Khi chạy một ứng dụng web, thông thường bạn muốn tận dụng tối đa tài nguyên của mình mà không phải chuyển đổi phần mềm để sử dụng các vòng lặp sự kiện đa luồng hoặc phức tạp. Docker, tuy nhiên, cung cấp một cách đơn giản để bạn tải cân bằng nội bộ ứng dụng của mình để tận dụng tối đa tài nguyên máy chủ. Bài viết này sẽ chỉ cho bạn cách sử dụng Nginx để tải cân bằng ứng dụng web của bạn bằng Docker trên CentOS.

Bước 1: Tạo một ứng dụng đơn giản

Chúng tôi sẽ sử dụng rỉ sét để xây dựng ứng dụng đơn giản này. Giả sử rằng bạn đã cài đặt gỉ, chạy cargo new webapp –bin. Khi thành công, bạn sẽ thấy một thư mục được gọi là webapp. Bên trong webapp, bạn sẽ thấy một tập tin được gọi là Cargo.toml. Nối các dòng sau vào nó:

[dependencies.iron]
version = "*"

Tiếp theo, bên trong src/main.rstệp, xóa mọi thứ và điền vào tệp sau:

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();
}

Lưu ý: Không thay đổi IP trong ứng dụng. Điều này được cấu hình để Docker có thể nghe ứng dụng của bạn.

Một khi bạn đã hoàn thành, biên dịch ứng dụng bằng cách thực hiện cargo build –release. Tùy thuộc vào máy chủ của bạn, có thể mất vài phút. Nếu không có lỗi, hãy kiểm tra ứng dụng bằng cách làm theo các bước sau:

  • Chạy đi target/release/webapp.
  • Điều hướng đến http://0.0.0.0:3000/trong trình duyệt của bạn. Thay thế 0.0.0.0bằng địa chỉ IP của máy chủ của bạn.

Nếu mọi thứ hoạt động tốt, bạn sẽ thấy "Xin chào Vultr :)" trên trang.

Bước 2: Tạo container Docker

Tạo một Dockerfilevà điền vào nó như sau:

FROM centos:latest
MAINTAINER User <user@localhost>
RUN yum update -y
COPY ./webapp/target/release/webapp /opt/
EXPOSE 3000
WORKDIR /opt
CMD ./webapp

Lưu các tập tin. Sau đó tạo một tệp được gọi deploy.shvà điền vào tệp sau:

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

Khi bạn chạy tập lệnh này, nó sẽ xây dựng hình ảnh và triển khai vùng chứa dựa trên số lượng bạn đã đặt (mặc định là 5). Nếu container tồn tại, nó sẽ giết và xóa nó khỏi registry trước khi nó được triển khai lại.

Bước 3: Cấu hình Nginx

Bây giờ, tạo tệp cấu hình Nginx và điền vào tệp sau:

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;
    }
}

Thay thế 0.0.0.0bằng địa chỉ IP của máy chủ của bạn.

Khởi động lại Nginx bằng cách làm systemctl restart nginx. Giải quyết bất kỳ lỗi nào, sau đó tiến hành bước tiếp theo.

Bước 4: Triển khai ứng dụng

Triển khai ứng dụng bằng cách chạy bash ./deploy.sh.

Bạn có thể kiểm tra trạng thái của ứng dụng của mình với docker ps- sẽ có 5 hình ảnh được tạo bắt đầu bằng webapp. Bây giờ, điều hướng đến http://0.0.0.0:3000/trong trình duyệt của bạn, bạn sẽ thấy thông báo "Xin chào, Vultr :)".

Vì vậy, chính xác sự khác biệt này làm gì?

Nếu bạn chạy thử nghiệm điểm chuẩn so với cấu hình cân bằng tải, bạn sẽ nhận thấy rằng nhiều tài nguyên máy chủ của bạn đang được sử dụng, đó là điều bạn muốn, đặc biệt là nếu ứng dụng của bạn được xây dựng bằng các ngôn ngữ như Node, nơi nó thường được phân luồng. Nếu bạn cần nâng cấp ứng dụng của mình, bạn có thể làm như vậy và chạy lại deploy.shđể xây dựng lại hình ảnh và triển khai các thùng chứa của bạn.



Leave a Comment

Trên CoreOS, hướng dẫn thiết lập đăng ký Docker của riêng bạn

Trên CoreOS, hướng dẫn thiết lập đăng ký Docker của riêng bạn

Chúng ta đều biết và yêu thích Docker, một nền tảng để tạo, quản lý và phân phối các thùng chứa ứng dụng trên nhiều máy. Docker Inc. cung cấp dịch vụ lưu trữ các thùng chứa nguồn mở sẽ được tải xuống (hoặc kéo) như kho lưu trữ git được gọi là Docker Registry . Hãy nghĩ về nó giống như một GitHub cho các container Docker.

Cách sử dụng Docker: Tạo Container Docker đầu tiên của bạn

Cách sử dụng Docker: Tạo Container Docker đầu tiên của bạn

Hướng dẫn này giải thích những điều cơ bản khi bắt đầu với Docker. Tôi giả sử rằng bạn đã cài đặt Docker. Các bước trong hướng dẫn này sẽ hoạt động trên mọi bản phân phối Linux tương thích với Docker (CentOS, Ubuntu, v.v.).

Cài đặt Docker trên Ubuntu 14.04

Cài đặt Docker trên Ubuntu 14.04

Sử dụng một hệ thống khác nhau? Docker là một ứng dụng cho phép triển khai các chương trình được chạy dưới dạng container. Nó được viết trong chương trình phổ biến Go

Cài đặt Docker trên CentOS 7

Cài đặt Docker trên CentOS 7

Sử dụng một hệ thống khác nhau? Docker là một ứng dụng cho phép triển khai phần mềm trong các thùng chứa ảo. Nó được viết trong chương trình Go

Bắt đầu với Kubernetes trên CentOS 7

Bắt đầu với Kubernetes trên CentOS 7

Kubernetes là một nền tảng nguồn mở được phát triển bởi Google để quản lý các ứng dụng được đóng gói trên một cụm máy chủ. Nó được xây dựng trên một thập kỷ và

Cài đặt hệ điều hành Rancher qua iPXE

Cài đặt hệ điều hành Rancher qua iPXE

Rancher OS là một bản phân phối Linux rất nhẹ được xây dựng xung quanh Docker. Hệ điều hành tự nó nặng khoảng 20 MB. Hướng dẫn này sẽ giúp bạn khởi động và chạy với HĐH Rancher bền bỉ bằng cách sử dụng tất cả dung lượng đĩa trống. Hướng dẫn cấu hình đám mây không được bao gồm trong tài liệu này.

Triển khai ứng dụng Node.js bằng Docker

Triển khai ứng dụng Node.js bằng Docker

Bài viết này sẽ chỉ cho bạn cách triển khai ứng dụng Node của bạn trong bộ chứa Docker. Lưu ý: Hướng dẫn này giả định rằng bạn đã cài đặt Docker và sẵn sàng để sử dụng.

ReactOS: Đây có phải là tương lai của Windows?

ReactOS: Đây có phải là tương lai của Windows?

ReactOS, một hệ điều hành mã nguồn mở và miễn phí đã có phiên bản mới nhất. Liệu nó có thể đáp ứng đủ nhu cầu của người dùng Windows hiện đại và hạ gục Microsoft? Hãy cùng tìm hiểu thêm về trải nghiệm hệ điều hành kiểu cũ nhưng mới hơn này.

Liệu AI có thể chiến đấu với số lượng các cuộc tấn công bằng Ransomware ngày càng tăng

Liệu AI có thể chiến đấu với số lượng các cuộc tấn công bằng Ransomware ngày càng tăng

Các cuộc tấn công ransomware đang gia tăng, nhưng liệu AI có thể giúp đối phó với loại virus máy tính mới nhất? AI có phải là câu trả lời? Đọc ở đây biết là AI boone hay cấm

Luôn kết nối thông qua Ứng dụng WhatsApp Desktop 24 * 7

Luôn kết nối thông qua Ứng dụng WhatsApp Desktop 24 * 7

Whatsapp cuối cùng đã ra mắt ứng dụng Máy tính để bàn cho người dùng Mac và Windows. Giờ đây, bạn có thể truy cập Whatsapp từ Windows hoặc Mac một cách dễ dàng. Có sẵn cho Windows 8+ và Mac OS 10.9+

Làm thế nào AI có thể đưa quá trình tự động hóa lên cấp độ tiếp theo?

Làm thế nào AI có thể đưa quá trình tự động hóa lên cấp độ tiếp theo?

Hãy đọc phần này để biết Trí tuệ nhân tạo đang trở nên phổ biến như thế nào đối với các công ty quy mô nhỏ và làm thế nào nó đang tăng khả năng khiến họ phát triển và giúp đối thủ cạnh tranh của họ có thể cạnh tranh.

Bản cập nhật bổ sung macOS Catalina 10.15.4 đang gây ra nhiều vấn đề hơn là giải quyết

Bản cập nhật bổ sung macOS Catalina 10.15.4 đang gây ra nhiều vấn đề hơn là giải quyết

Gần đây Apple đã phát hành macOS Catalina 10.15.4 một bản cập nhật bổ sung để khắc phục các sự cố nhưng có vẻ như bản cập nhật đang gây ra nhiều vấn đề hơn dẫn đến việc máy mac bị chai. Đọc bài viết này để tìm hiểu thêm

13 Công cụ trích xuất dữ liệu thương mại của Dữ liệu lớn

13 Công cụ trích xuất dữ liệu thương mại của Dữ liệu lớn

13 Công cụ trích xuất dữ liệu thương mại của Dữ liệu lớn

Hệ thống tệp nhật ký là gì và nó hoạt động như thế nào?

Hệ thống tệp nhật ký là gì và nó hoạt động như thế nào?

Máy tính của chúng tôi lưu trữ tất cả dữ liệu một cách có tổ chức được gọi là hệ thống tệp Ghi nhật ký. Đây là một phương pháp hiệu quả cho phép máy tính tìm kiếm và hiển thị các tệp ngay khi bạn nhấn tìm kiếm. Https://wethegeek.com/? P = 94116 & preview = true

Điểm kỳ dị về công nghệ: Tương lai xa của nền văn minh nhân loại?

Điểm kỳ dị về công nghệ: Tương lai xa của nền văn minh nhân loại?

Khi Khoa học phát triển với tốc độ nhanh chóng, chiếm rất nhiều nỗ lực của chúng ta, những rủi ro của việc phục tùng bản thân trước một Điểm kỳ dị không thể giải thích cũng tăng lên. Hãy đọc, điểm kỳ dị có thể có ý nghĩa gì đối với chúng ta.

Hiểu rõ hơn về 26 kỹ thuật phân tích dữ liệu lớn: Phần 1

Hiểu rõ hơn về 26 kỹ thuật phân tích dữ liệu lớn: Phần 1

Hiểu rõ hơn về 26 kỹ thuật phân tích dữ liệu lớn: Phần 1

Tác động của trí tuệ nhân tạo trong chăm sóc sức khỏe 2021

Tác động của trí tuệ nhân tạo trong chăm sóc sức khỏe 2021

AI trong lĩnh vực chăm sóc sức khỏe đã có những bước tiến nhảy vọt so với những thập kỷ trước. Vì vậy, tương lai của AI trong Chăm sóc sức khỏe vẫn đang phát triển từng ngày.