NGINX évolue vers le cloud natif, tout dans OpenNJet
1. Introduction
Une fois que NJet a modifié et adapté le module STS (https://github.com/vozlt/nginx-module-sts) fourni par la communauté open source, il est utilisé pour afficher les informations d'indicateur du serveur Stream et prend en charge le retour de json, formats HTML et Prometheus.
2. Instructions de configuration
Instructions de configuration du plan de données
serveur_traffic_status_zone
grammaire | server_traffic_status_zone [partagé: nom: taille] |
valeur par défaut | partagé : stream_server_traffic_status : 1 min |
Emplacement de configuration | flux |
Description : configurez une zone de mémoire partagée qui stocke l'état d'exécution du serveur de flux.
statut_trafic_serveur
grammaire | server_traffic_status<on |
valeur par défaut | désactivé |
Emplacement de configuration | flux, serveur |
Description : s'il faut enregistrer les indicateurs du serveur de flux. Si la commande server_traffic_status_zone est configurée, la collecte des indicateurs sera automatiquement activée.
serveur_traffic_status_filter_by_set_key
grammaire | clé server_traffic_status_filter_by_set_key [nom] |
valeur par défaut | - |
Emplacement de configuration | flux, serveur |
Description : Groupe (nom) et sous-groupe (clé) les statistiques de trafic de Stream. Vous pouvez utiliser des variables, telles que $server_addr, $server_port, etc. Lorsque le nom du paramètre n'est pas spécifié, la valeur par défaut est streamFilterZones.
Instructions de configuration du plan de contrôle
stream_server_traffic_status_display
grammaire | stream_server_traffic_status_display |
valeur par défaut | - |
Emplacement de configuration | emplacement |
Description : Cette commande est utilisée pour obtenir les informations sur l'indicateur du serveur de flux. Le format de sortie par défaut est défini par la commande stream_server_traffic_status_display.
stream_server_traffic_status_display_format
grammaire | stream_server_traffic_status_display_format <json |
valeur par défaut | json |
Emplacement de configuration | emplacement |
Description : Cette commande permet de configurer le format de retour par défaut de l'indicateur.
3. Exemple de fichier de configuration
Le module njet.conf njt_stream_stsc_module est compilé statiquement et n'a pas besoin d'être chargé séparément.
worker_processes auto;
cluster_name njet;
node_name node1;
error_log logs/error.log error;
helper ctrl /usr/local/njet/modules/njt_helper_ctrl_module.so /usr/local/njet/conf/njet_ctrl.conf;
helper broker /usr/local/njet/modules/njt_helper_broker_module.so;
events {
worker_connections 1024;
}
http {
}
stream {
server_traffic_status_zone shared:aabbcc:2m;
upstream tcpa {
server 127.0.0.1:1234;
}
server {
listen 1234;
server_traffic_status off;
server_traffic_status_filter_by_set_key * $server_addr;
return "aa\n";
}
server {
listen 1235;
server_traffic_status on;
proxy_pass tcpa;
}
}
njet_ctrl.conf doit charger le module dynamique njt_stream_stsd_module.so
load_module /usr/local/njet/modules/njt_http_sendmsg_module.so;
load_module /usr/local/njet/modules/njt_ctrl_config_api_module.so;
load_module /usr/local/njet/modules/njt_helper_health_check_module.so;
load_module /usr/local/njet/modules/njt_http_upstream_api_module.so;
load_module /usr/local/njet/modules/njt_http_location_api_module.so;
load_module /usr/local/njet/modules/njt_doc_module.so;
load_module /usr/local/njet/modules/njt_http_vtsd_module.so;
load_module /usr/local/njet/modules/njt_stream_stsd_module.so;
error_log logs/error_ctrl.log error;
events {
worker_connections 1024;
}
http {
include mime.types;
access_log off;
server {
listen 8081;
location / {
return 200 "njet control panel\n";
}
location /api {
dyn_module_api;
}
location /doc {
doc_api;
}
location /metrics {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
location /stream_metrics {
stream_server_traffic_status_display;
stream_server_traffic_status_display_format html;
}
}
}
4.4.Configuration dynamique
NJet peut configurer dynamiquement si le serveur de flux collecte des indicateurs.
Pour utiliser la fonction de configuration dynamique, le module de configuration dynamique sts doit être chargé dans njet.conf :
load_module /usr/local/njet/modules/njt_stream_dyn_sts_module.so;
Le schéma du message API de configuration dynamique est défini comme suit :
{
"$id": "dynsts",
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"type": "object",
"required": ["servers"],
"properties": {
"servers": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["listens", "server_traffic_status"],
"properties": {
"listens": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"server_traffic_status": {
"type": "boolean"
},
"server_traffic_status_filter_by_set_key": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
}
}
}
}
}
}
Exemple de message :
{
"servers": [
{
"listens": [
"0.0.0.0:18082"
],
"server_traffic_status": true,
"server_traffic_status_filter_by_set_key":
[
"* $server_addr"
]
}
]
}
Utilisez GET pour interroger la configuration actuelle
curl localhost:8081/api/v1/config/stream_dyn_sts
Utilisez PUT pour mettre à jour la configuration
curl -X PUT -d
'{"servers":[{"listens":["0.0.0.0:1234"],"server_traffic_status":false,"server_traffic_status_filter_by_set_key":["\"*\" \"$server_addr\""]},{"listens":["0.0.0.0:1235"],"server_traffic_status":true,"server_traffic_status_filter_by_set_key":[]}]}'
localhost:8081/api/v1/config/stream_dyn_sts
Linus a pris les choses en main pour empêcher les développeurs du noyau de remplacer les tabulations par des espaces. Son père est l'un des rares dirigeants capables d'écrire du code, son deuxième fils est directeur du département de technologie open source et son plus jeune fils est un noyau. contributeur à l'open source. Huawei : Il a fallu 1 an pour convertir 5 000 applications mobiles couramment utilisées Migration complète vers Hongmeng Java est le langage le plus sujet aux vulnérabilités tierces Wang Chenglu, le père de Hongmeng : l'open source Hongmeng est la seule innovation architecturale. dans le domaine des logiciels de base en Chine, Ma Huateng et Zhou Hongyi se serrent la main pour « éliminer les rancunes ». Ancien développeur de Microsoft : les performances de Windows 11 sont « ridiculement mauvaises » " Bien que ce que Laoxiangji est open source, ce ne soit pas le code, les raisons qui le sous-tendent. sont très réconfortants. Meta Llama 3 est officiellement publié. Google annonce une restructuration à grande échelle.Le moteur d'application NJet offre des capacités uniques de chargement de configuration dynamique d'exécution grâce à la reconstruction du noyau et constitue une nouvelle génération de moteur d'application Web hautes performances . NJet dispose de capacités de traitement de plan de données hautes performances et planifie plusieurs fonctions auxiliaires telles que le clustering, la haute disponibilité, les contrôles de santé actifs et les API déclaratives via le cadre de service copilote unique CoPilot de NJet pour faciliter l'expansion des fonctions et isoler les paires de fonctions de gestion/contrôle dues. Compte tenu de l'impact sur le plan des données, les performances du moteur d'application NJet dépassent trois fois celles du moteur d'application Envoy recommandé par la CNCF. Site officiel du groupe de messagerie