Maison >Opération et maintenance >Nginx >Comment créer un serveur d'équilibrage de charge basé sur Centos7+Nginx+Tomcat8

Comment créer un serveur d'équilibrage de charge basé sur Centos7+Nginx+Tomcat8

PHPz
PHPzavant
2023-05-26 11:43:131661parcourir

Après avoir installé manuellement nginx, tout est normal et il n'y a aucun problème avec la configuration de l'hôte virtuel et l'équilibrage de charge. Il a été activé avec succès. Le fichier de configuration spécifique est le suivant :

Dans le fichier nginx.conf de conf, ajoutez : include vhost/*.conf pour introduire tous les fichiers .conf dans le répertoire vhost. facile à configurer à l'avenir, bien sûr si nécessaire, vous pouvez les ajouter un par un.

Étant donné que le service de chargement est un service API, le nom du fichier de configuration ici s'appelle api.xxx.com.conf. La configuration d'ouverture du fichier est la suivante :

Comment créer un serveur déquilibrage de charge basé sur Centos7+Nginx+Tomcat8

La méthode d'interrogation IP n'est pas utilisée ici. , mais celle-ci est la méthode usstream. Pour les différences spécifiques entre ces méthodes, vous pouvez utiliser Baidu ou Google pour des introductions pertinentes. Il convient de noter que proxy_pass est configuré ici comme nom d'amont. Les autres ne sont pas autorisés à être utilisés. Si l'adresse IP est configurée directement, l'équilibrage de charge ne sera pas obtenu.

Le poids représenté par le poids, plus le nombre est grand, plus le poids est élevé, plus les chances d'allocation représentent le serveur de secours chaud, c'est-à-dire qu'en cas de problème avec les deux premières charges, le serveur de secours chaud. assumera automatiquement la responsabilité de ces visites.

La configuration du configurateur d'équilibrage de charge nginx est maintenant terminée, mais en raison de la charge impliquée, s'il s'agit d'une URL ordinaire, la perte de session se produira lors de l'accès. Par conséquent, à ce stade, le problème de perte de session doit être présent. Il existe plusieurs solutions à ce problème. L'une consiste à utiliser les cookies comme proxy et l'autre consiste à implémenter le partage de session. Pour implémenter le partage, les configurations appropriées doivent être effectuées dans Tomcat. Pour répondre à cette exigence, ici Le serveur partagé de session configuré est un service de mémoire Redis, principalement pour assurer une lecture et un stockage efficaces des données. Lorsque vous utilisez Redis pour le partage de session, vous devez ajouter les noms suivants :

Comment créer un serveur déquilibrage de charge basé sur Centos7+Nginx+Tomcat8Ces packages prennent en charge Tomcat8 sans aucune question : Concernant le statut de support spécifique des autres versions, aucun test pertinent n'a été effectué.

Modifiez ensuite le fichier de configuration dans tomcat :

Comment créer un serveur déquilibrage de charge basé sur Centos7+Nginx+Tomcat8

Les adresses de 10.0.0.x vues ici sont toutes complétées sur le réseau interne Le réseau externe n'est pas accessible Seul le serveur responsable de la charge est directement connecté. au réseau externe.

À ce stade, le serveur Tomcat et le serveur nginx peuvent démarrer en douceur, mais avant cela, le serveur nginx doit être démarré en premier, sinon Tomcat risque de ne pas démarrer. Le service nginx peut être démarré en douceur

Les trois configurations sont les suivantes :

Le contenu de référence ajouté dans nginx.conf

include vhost/*.conf;

Configuration de l'équilibrage de charge :

upstream api.xxx.com {
 server 10.0.0.12:8080 weight=5;
 server 10.0.0.15:8081 weight=5 ;
 server 10.0.0.16:8080 weight=5 backup;
}
server {
 listen    80;
 server_name api.xxx.com;
 location /
  {
   proxy_set_header host $host;
   proxy_set_header x-real-ip $remote_addr;
   proxy_set_header x-forwarded-for $remote_addr;
   proxy_pass http://api.xxx.com;
    }
}

configuration Tomcat

<valve classname="com.radiadesign.catalina.session.redissessionhandlervalve" />
<manager classname="com.radiadesign.catalina.session.redissessionmanager" 
       host="10.0.0.16" 
       port="10000" 
       database="0" 
       maxinactiveinterval="60" />

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer