Maison > Opération et maintenance > Nginx > le corps du texte

Comment configurer l'équilibrage de charge TCP dans Nginx

WBOY
Libérer: 2023-05-20 13:16:20
avant
2642 Les gens l'ont consulté

Cet article utilise Nginx comme serveur proxy pour l'équilibrage de charge. Il ne s’agit que d’un simple exemple d’application et n’implique aucun principe.

Comment configurer léquilibrage de charge TCP dans Nginx

(Les hôtes ici sont limités, le port hôte 42.192.22.128 8000 est utilisé comme port d'écoute du serveur proxy, 8181 est le port d'écoute du service)
Le client accède au serveur proxy et le serveur proxy distribue la requête à le serveur correspondant.
Modifiez le fichier de configuration Nginx pour configurer l'équilibrage de charge TCP (le fichier de configuration après l'installation de Nginx se trouve dans /usr/local/nginx/conf/nginx.config, et le programme exécutable Nginx est dans /usr/ local/nginx/sbin) /usr/local/nginx/conf/nginx.config中,Nginx可执行程序在/usr/local/nginx/sbin目录下)
nginx.conf配置文件中添加如下字段:

Comment configurer léquilibrage de charge TCP dans Nginx

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;
    }
}
Copier après la connexion

这里主要涉及两个配置块upstreamserver
upstream中定义了两台主机,weight表示权重,两台主机都为1,说明代理服务器会平分客户端请求给上游服务器,max_failsfail_timeout配合使用,指在fail_timeout时间段内,如果向当前的上游服务器转发失败次数超过3次,则认为在当前的fail_timeout时间段内这台上游服务器不可用。fail_timeout表示该时间段内转发失败多少次后就认为上游服务器暂时不可用。
server中指定了代理服务器监听的端口号8000proxy_pass指定upstream块中的名字Server
配置完成后,使用nginx -s reload使运行中的Nginx重读配置项并生效。
上游服务器使用“瑞士军刀”nc命令来模拟TCP服务端,监听在相应的端口:(这里的Ip地址是云主机的内网ip)

Comment configurer léquilibrage de charge TCP dans Nginx

客户端用一个简单的Qt小程序模拟一下:

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());
}
Copier après la connexion

先后启动两个客户端,通过TCP连接至42.192.22.128:8000Ajoutez les champs suivants dans le fichier de configuration nginx.conf :

Comment configurer l'équilibrage de charge TCP dans NginxComment configurer léquilibrage de charge TCP dans Nginxrrreee

Cela implique principalement deux blocs de configuration amont et server🎜Deux hôtes sont définis dans upstream. weight représente le poids des deux hôtes, indiquant que le serveur proxy divisera également la demande du client. vers le serveur en amont. max_fails est utilisé conjointement avec fail_timeout. Cela signifie que dans la période fail_timeout, si le nombre d'échecs de transfert vers le serveur amont. le serveur amont actuel dépasse 3 fois, on considère que le serveur amont actuel est indisponible pendant la période fail_timeout. fail_timeout indique le nombre d'échecs de transfert au cours de cette période avant que le serveur en amont ne soit considéré comme temporairement indisponible. 🎜server spécifie le numéro de port 8000 que le serveur proxy écoute, et proxy_pass spécifie le nom dans le upstream bloquer >Serveur. 🎜Une fois la configuration terminée, utilisez nginx -s reload pour que Nginx en cours d'exécution relise les éléments de configuration et prenne effet. 🎜Le serveur amont utilise la commande "Swiss Army Knife" nc pour simuler le serveur TCP et écouter sur le port correspondant : (L'adresse IP ici est l'IP intranet de l'hébergeur du cloud) 🎜🎜Comment configurer l'équilibrage de charge TCP dans Nginx🎜🎜Le client utilise une simple applet Qt pour le simuler :🎜 rrreee🎜Démarrez deux clients l'un après l'autre, connectez-vous à 42.192.22.128:8000 via TCP et envoyez des messages. Vous pouvez voir que les messages sont distribués aux deux hôtes, indiquant que. la requête du client est en effet distribuée sur différents serveurs. 🎜🎜🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!