Muat Saldo dengan Docker

Saat menjalankan aplikasi web, Anda biasanya ingin memaksimalkan sumber daya Anda tanpa harus mengonversi perangkat lunak Anda untuk menggunakan multithreading atau loop acara kompleks. Docker, bagaimanapun, memang menyediakan cara sederhana bagi Anda untuk memuat keseimbangan aplikasi Anda secara internal untuk memaksimalkan sumber daya server. Artikel ini akan menunjukkan kepada Anda bagaimana menggunakan Nginx untuk memuat keseimbangan aplikasi web Anda menggunakan Docker di CentOS.

Langkah 1: Buat aplikasi sederhana

Kami akan menggunakan karat untuk membangun aplikasi sederhana ini. Dengan asumsi bahwa Anda telah menginstal karat, jalankan cargo new webapp –bin. Setelah berhasil, Anda akan melihat direktori bernama webapp. Di dalam webapp, Anda akan melihat file bernama Cargo.toml. Tambahkan baris berikut untuk itu:

[dependencies.iron]
version = "*"

Selanjutnya, di dalam src/main.rsfile, hapus semua dan isi dengan yang berikut:

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

Catatan: Jangan mengubah IP dalam aplikasi. Ini dikonfigurasikan agar Docker dapat mendengarkan aplikasi Anda.

Setelah selesai, kompilasi aplikasi dengan mengeksekusi cargo build –release. Tergantung pada server Anda, mungkin perlu beberapa menit. Jika tidak ada kesalahan, uji aplikasi dengan mengikuti langkah-langkah ini:

  • Lari target/release/webapp.
  • Arahkan ke http://0.0.0.0:3000/dalam browser Anda. Ganti 0.0.0.0dengan alamat IP server Anda.

Jika semuanya berfungsi dengan baik, Anda akan melihat "Halo Vultr :)" di halaman.

Langkah 2: Buat wadah Docker

Buat Dockerfiledan isi dengan yang berikut ini:

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

Simpan file. Kemudian buat file yang dipanggil deploy.shdan isi dengan yang berikut:

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

Ketika Anda menjalankan skrip ini, itu akan membangun gambar dan menggunakan wadah berdasarkan jumlah yang telah Anda tetapkan (standarnya adalah 5). Jika wadah ada, itu akan membunuh dan menghapusnya dari registri sebelum digunakan lagi.

Langkah 3: Konfigurasikan Nginx

Sekarang, buat file konfigurasi Nginx dan isi dengan yang berikut:

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

Ganti 0.0.0.0dengan alamat IP server Anda.

Mulai ulang Nginx dengan melakukan systemctl restart nginx. Selesaikan kesalahan apa pun, lalu lanjutkan ke langkah berikutnya.

Langkah 4: Menyebarkan aplikasi

Menyebarkan aplikasi dengan menjalankan bash ./deploy.sh.

Anda dapat memeriksa status aplikasi Anda dengan docker ps- akan ada 5 gambar yang dibuat yang dimulai dengan webapp. Sekarang, navigasikan ke http://0.0.0.0:3000/dalam browser Anda, Anda akan melihat pesan "Halo, Vultr :)" lagi.

Jadi, apa bedanya ini, tepatnya?

Jika Anda menjalankan tes benchmark terhadap konfigurasi load balancer, Anda akan melihat bahwa lebih banyak sumber daya server Anda sedang digunakan, dan itulah yang Anda inginkan, terutama jika aplikasi Anda dibuat dalam bahasa seperti Node di mana biasanya satu threaded. Jika Anda perlu meningkatkan aplikasi Anda, Anda dapat melakukannya dan jalankan deploy.shkembali untuk membangun kembali gambar dan menggunakan wadah Anda.



Leave a Comment

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Cara Memasang Panel Kontrol Hosting Mudah di Ubuntu 16.04

Pelajari langkah-langkah untuk memasang Panel Kontrol Hosting Mudah (EHCP) di Ubuntu 16.04 dengan panduan ini.

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

Wawasan tentang 26 Teknik Analisis Data Besar: Bagian 1

6 Hal yang Sangat Menggila dari Nintendo Switch

6 Hal yang Sangat Menggila dari Nintendo Switch

Banyak dari Anda tahu Switch keluar pada Maret 2017 dan fitur-fitur barunya. Bagi yang belum tahu, kami sudah menyiapkan daftar fitur yang membuat 'Switch' menjadi 'gadget yang wajib dimiliki'.

Janji Teknologi Yang Masih Belum Ditepati

Janji Teknologi Yang Masih Belum Ditepati

Apakah Anda menunggu raksasa teknologi untuk memenuhi janji mereka? periksa apa yang belum terkirim.

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Fungsionalitas Lapisan Arsitektur Referensi Big Data

Baca blog untuk mengetahui berbagai lapisan dalam Arsitektur Big Data dan fungsinya dengan cara yang paling sederhana.

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Bagaimana AI Dapat Membawa Otomatisasi Proses ke Tingkat Selanjutnya?

Baca ini untuk mengetahui bagaimana Kecerdasan Buatan menjadi populer di antara perusahaan skala kecil dan bagaimana hal itu meningkatkan kemungkinan untuk membuat mereka tumbuh dan memberi keunggulan pada pesaing mereka.

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA: Berapa Lama Itu Bisa Tetap Menjadi Teknik yang Layak Untuk Perbedaan Human-AI?

CAPTCHA telah berkembang cukup sulit bagi pengguna untuk dipecahkan dalam beberapa tahun terakhir. Apakah itu akan tetap efektif dalam deteksi spam dan bot di masa mendatang?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Singularitas Teknologi: Masa Depan Peradaban Manusia yang Jauh?

Saat Sains Berkembang dengan kecepatan tinggi, mengambil alih banyak upaya kita, risiko menundukkan diri kita pada Singularitas yang tidak dapat dijelaskan juga meningkat. Baca, apa arti singularitas bagi kita.

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Telemedicine Dan Perawatan Kesehatan Jarak Jauh: Masa Depan Ada Di Sini

Apa itu telemedicine, perawatan kesehatan jarak jauh dan dampaknya terhadap generasi mendatang? Apakah itu tempat yang bagus atau tidak dalam situasi pandemi? Baca blog untuk menemukan tampilan!

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Pernahkah Anda Bertanya-tanya Bagaimana Hacker Menghasilkan Uang?

Anda mungkin pernah mendengar bahwa peretas menghasilkan banyak uang, tetapi pernahkah Anda bertanya-tanya bagaimana cara mereka mendapatkan uang sebanyak itu? mari berdiskusi.