Artikel ini menggunakan Nginx sebagai pelayan proksi untuk pengimbangan beban. Ia hanyalah contoh aplikasi yang mudah dan tidak melibatkan prinsip.
(Hos di sini adalah terhad, 42.192.22.128 port hos 8000 digunakan sebagai port mendengar pelayan proksi, 8181 ialah port mendengar perkhidmatan)
Pelanggan mengakses pelayan proksi, oleh Pelayan proksi mengedarkan permintaan kepada pelayan yang sepadan.
Ubah suai fail konfigurasi Nginx untuk mengkonfigurasi pengimbangan beban Tcp (fail konfigurasi berada dalam /usr/local/nginx/conf/nginx.config
selepas pemasangan Nginx, dan program boleh laku Nginx berada dalam direktori /usr/local/nginx/sbin
)
Tambah medan berikut dalam nginx.conf
fail konfigurasi:
stream { upstream Server { server 42.192.22.128:8181 weight=1 max_fails=3 fail_timeout=30s; server 1.13.180.100:8181 weight=1 max_fails=3 fail_timeout=30s; } server { listen 8000; proxy_pass Server; } }
Ini terutamanya melibatkan dua blok konfigurasi upstream
dan server
Dua hos ditakrifkan dalam upstream
dan weight
mewakili berat. Kedua-dua hos adalah 1, menunjukkan bahawa pelayan proksi akan mengedarkan permintaan klien secara sama kepada pelayan huluan max_fails
digunakan bersama dengan fail_timeout
, yang bermaksud bahawa dalam tempoh fail_timeout
, jika bilangan. kegagalan pemajuan ke pelayan huluan semasa melebihi 3 kali , adalah dianggap bahawa pelayan huluan ini tidak tersedia dalam tempoh masa fail_timeout
semasa. fail_timeout
Menunjukkan bilangan kegagalan pemajuan dalam tempoh masa ini sebelum pelayan huluan dianggap tidak tersedia buat sementara waktu. server
menentukan nombor port 8000
yang pelayan proksi dengar dan proxy_pass
menentukan nama upstream
dalam blok Server
.
Selepas konfigurasi selesai, gunakan nginx -s reload
untuk membuat Nginx berjalan membaca semula item konfigurasi dan berkuat kuasa.
Pelayan hulu menggunakan perintah "Swiss Army Knife" nc
untuk mensimulasikan pelayan TCP dan mendengar pada port yang sepadan: (Alamat IP di sini ialah IP intranet hos awan)
Pelanggan menggunakan applet Qt mudah untuk mensimulasikan:
void Widget::on_btnConnection_clicked() { m_pTcpSocket->connectToHost(ui->lineeditIp->text(), ui->lineeditPort->text().toUShort()); qDebug() << m_pTcpSocket->state(); } void Widget::on_btnSend_clicked() { qDebug() << m_pTcpSocket->state(); QByteArray byteArray; byteArray.append(ui->texteditMsg->toPlainText()); const char *pChatMsg = byteArray.data(); qDebug() << m_pTcpSocket->write(pChatMsg, byteArray.size()); }
memulakan dua pelanggan berturut-turut, menyambung ke 42.192.22.128:8000
melalui TCP dan menghantar mesej diedarkan kepada kedua-duanya Pada dua hos, ini bermakna permintaan pelanggan memang diedarkan kepada pelayan yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi pengimbangan beban Tcp dalam Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!