Table des matières
一、LVS转发模式
二、nginx负载模式
三、haproxy
四、总结
Maison développement back-end tutoriel php lvs、nginx、haproxy中转模式总结

lvs、nginx、haproxy中转模式总结

Aug 08, 2016 am 09:21 AM
hash nbsp nginx server

lvs、nginx、haproxy是最常见的三种高可用性负载均衡软件。由于lvs和haproxy在目前的公司的现网环境中并未用到,虽然之前简单的了解和搭建过,现在也已经忘的差不多了,而及于nginx的负载均衡虽然公司在用,不过一配置文件都是ctrl+c、ctrl+v,对转发的理论性的东西也都忘的差不多了。隐约脑子里现在只有upstream、dr 、ip_hash这几个词了。现对三者的转发方式做下总结。

一、LVS转发模式

LVS是章文嵩博士写的一个工作于四层的高可能性软件。不像后两者支持七层转发,不过也正因为其简单,所以其是最稳定的。其共有三种IP负载均衡技术:VS/NAT(Virtual Server via Network Address Translation)、VS/TUN(Virtual Server via IP Tunneling)和VS/DR(Direct Routing),三者之间具体的比较见下表

lvs、nginx、haproxy中转模式总结

二、nginx负载模式

nginx有五种负载算法模式,分别是:轮询、weight(权重)、ip_hash、fair、url_hash 。现逐一说明:

  1. 轮询(默认): 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  2. weight :指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。配置为:
    1. upstream bakend {
    2. server 192.168.0.14 weight=10;
    3. server 192.168.0.15 weight=10;
    4. }
  3. ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。配置为:
    1. upstream bakend {
    2. ip_hash;
    3. server 192.168.0.14:88;
    4. server 192.168.0.15:80;
    5. }
  4. fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
    1. upstream backend {
    2. server server1;
    3. server server2;
    4. fair;
    5. }
  5. url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。配置如:
    1. upstream backend {
    2. server squid1:3128;
    3. server squid2:3128;
    4. hash $request_uri;
    5. hash_method crc32;
    6. }

注:第五种模式下,需要注意在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法 。

server后面常接的参数有如下几个:

  • down 表示单前的server暂时不参与负载 
  • weight 默认为1.weight越大,负载的权重就越大。 
  • max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 
  • fail_timeout:max_fails次失败后,暂停的时间。 
  • backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

三、haproxy

haproxy是三者之间负载算法最多的,有八种,所以其应用场景也是最多,配置也是最灵活的,具体8种算法为:

①roundrobin,表示简单的轮询,这个是负载均衡基本都具备的; 

②static-rr,表示根据权重,和nginx的weight算法类似; 

③leastconn,表示最少连接者先处理,有点类似于nginx的fair,不过fair是根据响应时间; 

④source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注; 

⑤ri,表示根据请求的URI,类似于nginx的url_hash; 

⑥rl_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name; 

⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求; 

⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

四、总结

具体现网应用可以根据据体的实际情况选择最好的负载方式。三者中,lvs稳定性最好,可配置性最少;nginx针对域名、目录结构进行正则匹配是最强的,同时其对网络依赖比较小,不过性能上和lvs和haproxy相比稍差一点点;haproxy支持虚拟主机,尤其在session保持方面做的最好,其有三种算法可以实现session共享———— ip识别(source)、cookie识别、session识别三种,除此之外在对mysql做HA方案时也经常会用到该软件。

以上就介绍了lvs、nginx、haproxy中转模式总结,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'accès au fichier du site WordPress est restreint: pourquoi mon fichier .txt n'est-il pas accessible via le nom de domaine? L'accès au fichier du site WordPress est restreint: pourquoi mon fichier .txt n'est-il pas accessible via le nom de domaine? Apr 01, 2025 pm 03:00 PM

L'accès au fichier du site WordPress est restreint: dépannage de la raison pour laquelle le fichier .txt ne peut pas être accessible récemment. Certains utilisateurs ont rencontré un problème lors de la configuration du nom de domaine commercial du programme MINI: � ...

Comment faire coexister PHP5.6 et PHP7 via la configuration Nginx sur le même serveur? Comment faire coexister PHP5.6 et PHP7 via la configuration Nginx sur le même serveur? Apr 01, 2025 pm 03:15 PM

Exécuter plusieurs versions PHP simultanément dans le même système est une exigence commune, en particulier lorsque différents projets dépendent de différentes versions de PHP. Comment être sur la même chose ...

Comment exécuter le projet H5 Comment exécuter le projet H5 Apr 06, 2025 pm 12:21 PM

L'exécution du projet H5 nécessite les étapes suivantes: Installation des outils nécessaires tels que le serveur Web, Node.js, les outils de développement, etc. Créez un environnement de développement, créez des dossiers de projet, initialisez les projets et écrivez du code. Démarrez le serveur de développement et exécutez la commande à l'aide de la ligne de commande. Aperçu du projet dans votre navigateur et entrez l'URL du serveur de développement. Publier des projets, optimiser le code, déployer des projets et configurer la configuration du serveur Web.

Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Apr 01, 2025 pm 02:48 PM

De nombreux développeurs de sites Web sont confrontés au problème de l'intégration de Node.js ou des services Python sous l'architecture de lampe: la lampe existante (Linux Apache MySQL PHP) a besoin d'un site Web ...

Gitee Pages STATIQUE Le déploiement du site Web a échoué: comment dépanner et résoudre les erreurs de fichier unique 404? Gitee Pages STATIQUE Le déploiement du site Web a échoué: comment dépanner et résoudre les erreurs de fichier unique 404? Apr 04, 2025 pm 11:54 PM

GiteEpages STATIQUE Le déploiement du site Web a échoué: 404 Dépannage des erreurs et résolution lors de l'utilisation de Gitee ...

Comment partager la même page du côté PC et mobile et gérer les problèmes de cache? Comment partager la même page du côté PC et mobile et gérer les problèmes de cache? Apr 01, 2025 pm 01:57 PM

Comment partager la même page du côté PC et mobile et gérer les problèmes de cache? Dans l'environnement Nginx PHP MySQL construit à l'aide de l'arrière-plan Baota, comment faire le côté PC et ...

Quelle est la raison de la redirection des erreurs 404 après s'être connectée au sélénium? Comment le résoudre? Quelle est la raison de la redirection des erreurs 404 après s'être connectée au sélénium? Comment le résoudre? Apr 01, 2025 pm 10:54 PM

Solution pour rediriger 404 erreurs après la connexion de la simulation Lors de l'utilisation du sélénium pour la connexion de la simulation, nous rencontrons souvent des problèmes difficiles. � ...

Comment démarrer efficacement plusieurs services dans Dockerfile? Comment démarrer efficacement plusieurs services dans Dockerfile? Apr 01, 2025 pm 02:15 PM

À propos de l'utilisation efficace des commandes CMD dans Dockerfile De nombreux nouveaux utilisateurs de Docker utilisent CMD ...

See all articles