Maison >Opération et maintenance >Nginx >NGINX PM2 VPS : créez une architecture de services d'applications hautement disponible et évolutive

NGINX PM2 VPS : créez une architecture de services d'applications hautement disponible et évolutive

WBOY
WBOYoriginal
2023-09-27 08:09:391070parcourir

NGINX PM2 VPS: 构建高可用和可扩展的应用服务架构

NGINX PM2 VPS : Construisez une architecture de services applicatifs hautement disponible et évolutive

Avec le développement rapide de la technologie Internet, la construction d'une architecture de services applicatifs hautement disponible et évolutive est devenue de plus en plus importante. NGINX, PM2 et VPS sont des outils couramment utilisés qui peuvent nous aider à atteindre cet objectif. Cet article expliquera comment utiliser NGINX, PM2 et VPS pour créer une architecture de services d'application hautement disponible et évolutive, et fournira des exemples de code spécifiques.

1. NGINX : serveur proxy inverse hautes performances

NGINX est un serveur proxy inverse hautes performances qui peut être utilisé pour l'équilibrage de charge, la mise en cache des ressources statiques, les terminaux SSL et d'autres fonctions. Voici un exemple simple de configuration NGINX pour transférer tout le trafic vers le serveur d'applications backend :

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
        }
    }
}

Dans la configuration ci-dessus, nous avons défini un groupe de serveurs backend nommé backend contenant plusieurs serveurs d'applications backend. La directive proxy_pass transfère le trafic vers le groupe de serveurs back-end. backend的后端服务器组,包含了多个后端应用服务器。proxy_pass指令将流量转发到后端服务器组。

2. PM2:进程管理工具

PM2是一个强大的进程管理工具,可以帮助我们管理和监控Node.js应用。以下是一个简单的PM2配置示例:

{
    "apps": [{
        "name": "my-app",
        "script": "app.js",
        "instances": "max",
        "exec_mode": "cluster",
        "error_file": "logs/error.log",
        "out_file": "logs/out.log",
        "log_date_format": "YYYY-MM-DD HH:mm:ss",
        "env": {
            "NODE_ENV": "production"
        }
    }]
}

在上述配置中,我们定义了一个名为my-app的应用,并指定了应用的主文件app.jsinstances指定了应用的实例数,exec_mode指定了应用的执行模式。此外,我们还可以配置应用的日志文件、环境变量等。

3. VPS:虚拟专用服务器

VPS是一种虚拟化技术,可以将一台物理服务器划分为多个虚拟专用服务器。VPS提供了独立的资源,可以满足应用的需求。以下是一个简单的VPS配置示例:

{
    "name": "my-vps",
    "provider": "digitalocean",
    "region": "nyc3",
    "size": "s-1vcpu-1gb",
    "ssh_keys": ["my-public-key"],
    "backups": false
}

在上述配置中,我们定义了一个名为my-vps

2. PM2 : Outil de gestion de processus

PM2 est un puissant outil de gestion de processus qui peut nous aider à gérer et à surveiller les applications Node.js. Ce qui suit est un exemple simple de configuration PM2 :

          +---------+
          |   NGINX |
          +---------+
               |
          +---------+
          |   PM2   |
          +---------+
               |
          +---------+
          |   VPS   |
          +---------+
               |
          +---------+
          |   APP   |
          +---------+

Dans la configuration ci-dessus, nous définissons une application nommée my-app et spécifions le fichier principal de l'application app.js. <code>instances spécifie le nombre d'instances de l'application, et exec_mode spécifie le mode d'exécution de l'application. De plus, nous pouvons également configurer les fichiers journaux de l’application, les variables d’environnement, etc.

3. VPS : Serveur Privé Virtuel

VPS est une technologie de virtualisation qui permet de diviser un serveur physique en plusieurs serveurs privés virtuels. VPS fournit des ressources indépendantes pour répondre aux besoins des applications. Ce qui suit est un exemple simple de configuration VPS :

# 安装 NGINX
sudo apt-get install nginx

# 安装 PM2
sudo npm install -g pm2

# 创建 NGINX 配置文件
sudo nano /etc/nginx/conf.d/my-app.conf

Dans la configuration ci-dessus, nous avons défini un VPS nommé my-vps et spécifié le fournisseur VPS, la région, la taille, la clé de mot de passe SSH, la sauvegarde et d'autres configurations. .

4. Construire une architecture de services applicatifs hautement disponible et évolutive

Pour construire une architecture de services applicatifs hautement disponible et évolutive, nous pouvons combiner NGINX, PM2 et VPS. Voici un schéma simple d'architecture de service d'application :

upstream backend {
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
}

server {
    listen 80;
    server_name my-app.com;

    location / {
        proxy_pass http://backend;
    }
}

Dans l'architecture ci-dessus, NGINX est responsable de la réception des requêtes externes et du transfert du trafic vers le cluster PM2 back-end. PM2 est responsable de la gestion et de la surveillance des processus des applications Node.js. VPS fournit des ressources indépendantes pour garantir la disponibilité et l'évolutivité des applications.

5. Exemple de code spécifique

Ce qui suit est un exemple de code spécifique qui montre comment utiliser NGINX, PM2 et VPS pour créer une architecture de service d'application hautement disponible et évolutive.

Tout d'abord, installez NGINX et PM2 sur votre VPS et configurez le proxy inverse de NGINX : 🎜
# 在 VPS 上克隆应用代码
git clone https://github.com/my-app.git

# 进入应用目录
cd my-app

# 安装应用依赖
npm install

# 启动应用
pm2 start app.js -i max
🎜Dans le fichier de configuration NGINX, ajoutez ce qui suit : 🎜
sudo systemctl restart nginx
🎜Enregistrez et quittez le fichier. Ensuite, déployez l'application Node.js sur le VPS et utilisez PM2 pour gérer le processus de l'application : 🎜rrreee🎜Enregistrez et quittez le fichier. Enfin, redémarrez le serveur NGINX : 🎜rrreee🎜 Maintenant, nous avons réussi à construire une architecture de service d'application hautement disponible et évolutive qui peut accéder à notre application via le nom de domaine NGINX. 🎜🎜🎜Conclusion🎜🎜🎜Cet article explique comment utiliser NGINX, PM2 et VPS pour créer une architecture de services d'applications hautement disponible et évolutive. En configurant et en gérant correctement ces outils, nous pouvons améliorer la disponibilité et les performances des applications et réaliser une expansion rapide. J'espère que ces exemples de code seront utiles aux lecteurs pour créer leur propre architecture de services d'application. 🎜

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:
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