OpenNJet v2.0.0: Dynamische Funktionen schlagen ein neues Kapitel auf

NGINX entwickelt sich zu Cloud Native weiter, alles in  OpenNJet 


Die OpenNJet- Anwendungs-Engine ist ein auf NGINX basierendes Laufzeitkonfigurationsdienstprogramm für Internet- und Cloud-native Anwendungen. Als zugrunde liegende Engine implementiert OpenNJet die cloudnative Funktionserweiterung, Sicherheitshärtung und Code-Rekonstruktion von NGINX und nutzt den dynamischen Lademechanismus, um unterschiedliche Ziele zu erreichen Produktformen wie Webserver, Streaming-Media-Server, Lastausgleich, Proxy (Proxy), Anwendungs-Middleware, API-Gateway, Nachrichtenwarteschlange und andere Produktformen usw. Als Datenebene in einer Cloud-nativen Architektur bietet OpenNJet nicht nur Nord-Süd-Kommunikations-Gateway-Funktionen, sondern auch Ost-West-Kommunikationsfunktionen im Service Grid. Basierend auf den ursprünglichen Funktionen werden neue Funktionen wie transparentes Traffic-Hijacking, Fusion, Telemetrie und Fehlerinjektion hinzugefügt.

In der neuesten Version v2.0.0 wurde das Grundgerüst erheblich optimiert, Unterstützung für HTTP/3 hinzugefügt, was das OpenNJet-Ökosystem weiter bereichert, und dynamische Funktionen sind nach und nach ausgereift. Dieses Update umfasst hauptsächlich die folgenden fünf Aspekte:

  • Das Grundgerüst wurde stark optimiert. Durch die Optimierung des Frameworks wurden CoPilots gestärkt und Funktionen wie Lua VM, High-Privilege-Ausführungsframework und Konfigurationssandbox implementiert, wodurch die Stabilität und Ausführungseffizienz von OpenNJet weiter verbessert wurde.
  • Ausgereifte dynamische Fähigkeiten. Das Modul durchläuft weiterhin eine dynamische Transformation, optimiert die dynamische Zertifikatsverwaltung und deckt wichtige Szenarien wie die Graustufenfreigabe für Unternehmen ab. Die dynamische Standortfunktion ist in Version 2.0.0 in ein ausgereiftes Stadium eingetreten.
  • Treten Sie dem neuen Protokoll HTTP/3 bei. Es implementiert hauptsächlich die Serverfunktionen von HTTP/3 und die Proxy-Funktionen des FTP-Protokolls. Flexibler Lastausgleich basierend auf Sicherheit
  • Effizienz und Sicherheit weiter stärken. Stärken Sie die Systemsicherheit und stärken Sie sich selbst; erreichen Sie Unternehmenssicherheit, reparieren Sie Ihr Unternehmen ohne Leistungsverlust, schützen Sie Daten besser, stellen Sie zuverlässige Dienste bereit und vereinfachen Sie Betriebs- und Wartungsaufgaben.
  • Zwei Geschäftsmerkmale. Verwirklichen Sie den grundlegenden Aufbau des Clusters, um manuelle Vorgänge wie Failover und Cluster-Erweiterung sowie das Hinzufügen neuer Knoten zu vermeiden und die Betriebsunterbrechungszeit ohne Leistungsverlust zu reduzieren. Versuchen Sie, Intelligenz einzuführen und Ressourcen rational zuzuweisen.

Grundlegende Framework-Optimierung

Im Vergleich zu OpenNJet v1.0.0 hat OpenNJet v2.0.0 das in der frühen Phase implementierte Grundgerüst erheblich optimiert. CoPilot-Framework:

  • Erstens ist der Überwachungsmechanismus von CoPilot so optimiert, dass CoPilot beim Neuladen von OpenNJet nicht neu gestartet wird, um die Stabilität des OpenNJet-Ereignisbusses sicherzustellen.
  • Gleichzeitig können je nach Funktion unterschiedliche Berechtigungen für CoPilot konfiguriert werden, sodass CoPilot über Funktionen auf Systemebene wie Netzwerk und Kernel verfügen kann.
  • Schließlich ermöglicht die Verbindung von CoPilot mit einem einheitlichen Ereignisbus die Implementierung von CoPilot, um auf natürliche Weise die Möglichkeit zu haben, andere Module und CoPilot dynamisch zu konfigurieren und mit ihnen zu interagieren.

Gemäß diesem Framework hat v2.0.0 die in v1.0.0 implementierten CoPilots, einschließlich Strg, HA und Broker, gestärkt und Lua VM, ein High-Privilege-Ausführungsframework, eine Konfigurationssandbox und andere Funktionen implementiert, um die Funktionen der oberen Ebene zu erfüllen. Dies erfordert insbesondere den OpenNJet-Kubernetes Ingress Controller (im Folgenden: KIC).

Konfigurations-Sandboxing ist eine der Hauptfunktionen, die in OpenNJet v2.0.0 entwickelt wurden . Alle dynamischen Konfigurationen müssen von der Konfigurationssandbox überprüft und dann auf OpenNJet angewendet werden, wodurch die Stabilität von OpenNJet selbst erheblich verbessert und sichergestellt wird, dass die Stabilität und Ausführungseffizienz der OpenNJet-Datenebene nicht durch Fehler in der neuen Konfiguration beeinträchtigt werden.

Die externe Schnittstelle in OpenNJet übernimmt das OpenAPI-Standardprotokoll. Um die Entwicklungsschwierigkeiten der Protokollserverimplementierung zu verringern und die Auswirkungen menschlicher Fehler auf die Systemstabilität zu vermeiden, hat OpenNJet v2.0.0 das entsprechende JSON Schema 2c-Codegenerierungstool entwickelt, das Schema zur Beschreibung der Geschäftsverifizierungsstandards und zur Generierung des entsprechenden C verwendet Code, ändern Sie alle im v1.0.0-Segment implementierten Schnittstellen, um die Stabilität von OpenNJet weiter zu verbessern.

Dynamische Fähigkeiten

Was die dynamischen Funktionen angeht, transformiert OpenNJet v2.0.0 das Modul weiterhin dynamisch basierend auf den Anforderungen von Anwendungen der oberen Schicht oder dem Feedback von Partnern und optimiert die dynamische Zertifikatsverwaltung, sodass RSA/ECC/nationale Geheimzertifikate dynamisch konfiguriert werden können Gleichzeitig wurde das Idempotenzproblem der Zertifikatsverwaltung in Version 1.0.0 behoben.

Die Map- Anweisung wurde außerdem dynamisch gemacht, sodass sie auf KIC angewendet werden kann, um die wichtigste Funktion von OpenNJet KIC zu erreichen – die Konfigurationsisolation zwischen Anwendungen; außerdem bietet die dynamische Entführung des TCP-Verkehrs die Garantie dafür, dass KIC die universelle TCP-Protokoll-Proxy-Unterstützung implementiert. Da der dynamische Standort komplexes Ausdrucksrouting konfigurieren kann, von Unternehmen geforderte Graustufenszenarien abdecken kann und in Sidecar/KIC usw. weit verbreitet ist, kann man nun sagen, dass die dynamische Standortfähigkeit von OpenNJet in Version 2.0.0 in ein ausgereiftes Stadium eingetreten ist.

Treten Sie dem neuen Protokoll HTTP/3 bei

Das neue Protokoll steht im Mittelpunkt der Entwicklung von OpenNJet v2.0.0. In diesem Zyklus implementiert OpenNJet hauptsächlich die Serverfunktionen von HTTP/3 und die Proxy-Funktionen des FTP-Protokolls. Basierend auf der zugrunde liegenden dynamischen Entführung des TCP-Verkehrs implementiert OpenNJet die PASV-FTP/SFTP-Unterstützung, die den FTP-Datenübertragungsport auf dem Proxy-bereitgestellten Computer dynamisch umschalten kann, um einen flexiblen Lastausgleich zu erreichen und gleichzeitig die Sicherheit zu gewährleisten.

HTTP/3 erbt in Bezug auf die Protokollanalyse von NGINX. Der Code von OpenNJet HTT/P3 wurde rechtzeitig verfolgt und zusammengeführt. Er wurde mit v1.25.3 zusammengeführt. Die Arbeit von OpenNJet in HTTP/3 besteht hauptsächlich darin, eine dynamische Transformation durchzuführen. Das heißt, unter dem HTTP/3-Protokoll kann OpenNJet auch Zertifikate dynamisch verwalten und virtuelle Server hinzufügen. Der andere ist die Transformation zur Anpassung an das nationale Geheimnis und die Sicherheitsverstärkung. Obwohl der nationale Geheimstandard noch nicht auf HTTP/3 eingeführt wurde, wurden HTTP/3 und nationale Geheimnisse basierend auf RFC8998 verabschiedet. Natürlich aufgrund der Mangel an relevanter Client- und Browserunterstützung. Zu diesem Zeitpunkt hat OpenNJet auch den entsprechenden Client und die entsprechenden Tools transformiert: xquic (unterstützt rfc8998), Curl (HTTP/3), HTTP/3-Leistungstesttools usw.

Effizienz und Sicherheit weiter stärken

Sicherheit ist eine wichtige Mission, an der OpenNJet stets festgehalten hat. OpenNJet v2.0.0 umfasst hauptsächlich die folgenden zwei Teile:

  • Stärken Sie die Systemsicherheit und verhindern Sie, dass OpenNJet selbst zum Mangel wird. Im Codeentwicklungszyklus v2.0.0 wird die Sicherheitsentwicklung weiter gestärkt. In der externen API-Schnittstelle wird eine ACL-Zugriffskontrolle implementiert, und feinkörnigere Berechtigungen können basierend auf Lesen und Schreiben aufgeteilt werden; bei der Integration mit externen Systemen ist dies der Fall Wird einheitlich verwendet, vermeidet TLS/HTTPs auch das Speichern von Authentifizierungsinformationen im Klartext; der Ereignisbus ist so optimiert, dass er die lokale/Unix-Socket-Kommunikationsschnittstelle so weit wie möglich offenlegt, anstelle des für die Außenwelt zugänglichen TCP-Ports.
  • Um Unternehmenssicherheit zu erreichen, kann OpenNJet durch die Einführung von Grenzwerten für gleichzeitige Verbindungen, gleichzeitige Anforderungen und RPS-Grenzwerte die Auswirkungen von DOS/DDOS auf OpenNJet und die von ihm repräsentierten Back-End-Unternehmen abmildern und so die Nachhaltigkeit der Dienste sicherstellen; und durch HA+ Sharding-Funktion, reibungslose Reaktion auf normale Geschäftsschwankungen. Als Reaktion auf häufige Web-Sicherheitsbedrohungen führte OpenNJet in der Version 2.0.0 auch ModSecurity ein und nahm dynamische Änderungen daran vor. Wenn eine Bedrohung erkannt wird, kann sie daher zur Erhöhung der Sicherheit vorübergehend und dynamisch aktiviert und rechtzeitig nach Abschluss der Anwendungsreparatur deaktiviert werden, um eine Beeinträchtigung der Leistung zu vermeiden.

Hervorragende Unternehmenseigenschaften

Zusätzlich zur oben genannten funktionalen Einführung hat OpenNJet in v2.0.0 auch zwei hervorragende „Enterprise“-Funktionen implementiert:

1. Synchronisierung auf dem Cluster. In Version 1.0.0 implementierte OpenNJet grundlegende Cluster-Konstruktionsfunktionen. In Version 2.0.0 wurde die Synchronisierung von Konfiguration und Status weiter realisiert. Unabhängig davon, ob es sich um die aktiven und Backup-Räume von HA oder die Multi-Knoten von MA handelt, erfolgt die Konfiguration auf der aktiven Seite Knoten ist Operationen können zeitnah an andere Knoten zurückgegeben werden, wodurch manuelle Vorgänge bei Failover, Clustererweiterung, Hinzufügen neuer Knoten usw. vermieden und die Zeit für Betriebsunterbrechungen verkürzt werden.

Versuchen Sie zweitens, Intelligenz einzuführen . Da sich die Ressourcenanforderungen eines Systems im Laufe der Zeit elastisch ändern, führt die Schätzung auf der Grundlage des höchsten Bedarfs in den meisten Fällen zu einer enormen Verschwendung. Wenn die Konfiguration nicht gemäß der maximalen Schätzung erfolgt, führt dies zu Ausfällen, was zu einer „Lawine“ führt. OpenNJet wird versuchen, Ressourcen bei Bedarf auf der Grundlage der geschäftlichen Auslastungsbedingungen zu beantragen und sie rechtzeitig freizugeben, wenn sie nicht benötigt werden.

Bereichern Sie nach und nach die Ökologie

Im Hinblick auf die Bereicherung des Ökosystems macht OpenNJet weiterhin stetige Fortschritte.

Erstens ist OpenNJet an verschiedene Betriebssysteme angepasst, insbesondere an inländische Betriebssysteme.

Zweitens wurde die Systemintegration erweitert. Derzeit können zusätzlich zur externen Indikatorenausgabe von Prometheus Indikatoren extern über das SNMP-Protokoll ausgegeben werden. Erwähnenswert ist, dass hier der zuvor beschriebene CoPilot verwendet wird: lua vm. Durch die Integration mit Front-End-ADC-Geräten beseitigt OpenNJet die Leistungseinschränkungen einzelner Punkte und kann durch den Sharding-Mechanismus horizontal erweitert werden, um den höheren Geschäftsanforderungen von Unternehmen gerecht zu werden. In der v2.0.0-Stufe hat OpenNJet die Anpassung an Yunke Tongminghu-Lastausgleichsgeräte und F5-Lastausgleichsgeräte realisiert, und der CoPilot-Mechanismus ermöglicht OpenNJet die Möglichkeit, durch Betriebs- und Wartungstechniker vor Ort eine Verbindung zu anderen Geräten herzustellen.

Drittens implementieren Sie die Anwendungsbereitstellungsform von OpenNJet. Die Panoramaansicht von OpenNJet ist zur Grundlage des Cloud-Computing-Bereichs geworden und wurde in die derzeit weit verbreiteten k8s-Cluster und Service-Grids, also Sidecar/KIC/Anwendungscontainer, implementiert. In der Version 1.0.0 wurde Sidecar veröffentlicht, und zu Version 2.0.0 gehört OpenNJet KIC. Die detaillierten Funktionen werden hier nicht beschrieben. Sie können sich auf das später bereitgestellte Einführungsdokument beziehen.

Neben KIC ist die Anwendungsbeschleunigung, eine der neuen Funktionen von v2.0.0, der Versuch von OpenNJet, sie auf Edge-Computing-Knoten ohne DC anzuwenden. Nutzen Sie die Cache-Funktion und erstellen Sie den Inhalt, der bei Bedarf zwischengespeichert werden muss, durch dynamischen Standort und verschieben Sie den Inhalt aktiv in den Cache, um eine „Vorwärmung“ zu erreichen, den Zugriff der Edge-Knoten auf Anwendungsinhalte sicherzustellen und ein konsistentes Hochgeschwindigkeitserlebnis aufrechtzuerhalten.


Danksagungen

Der gesamte Entwicklungszyklus dauerte ein halbes Jahr und insgesamt wurden 21 neue Funktionen implementiert, 23 erweiterte Funktionen, 31 Fehler behoben, 4 unterstützende Tools entwickelt und an die Betriebssysteme openEuler und OpenCloudOS angepasst. Während des Entwicklungsprozesses übernahm OpenNJet v2.0.0 eine schnelle Iterationsmethode und brachte insgesamt sieben kleine Versionen heraus, um aktiv auf die Bedürfnisse der Community und der Unternehmen zu reagieren. An dieser Stelle möchte ich auch der Open Atomic Foundation für ihre starke Unterstützung und Förderung danken, ich danke Ihnen für den Nachfrage-Input und das Test-Feedback von Inspur, der China Merchants Bank und der Industrial and Commercial Bank of China und danke vielen Mitwirkenden für ihr Engagement !

Referenzlinks:

OpenNJet KIC v1.0发布!K8s Ingress Controller :https://njet.org.cn/cases/opennjet-kic-v1.0-%E5%8F%91%E5%B8%83k8s-ingress-controller/

[Praktische Erfahrung] Wie konfiguriere ich NGINX Map dynamisch ? https://my.oschina.net/u/6606114/blog/10116956

In diesem Artikel erfahren Sie, wie Sie einen HTTP/3-Webdienst erstellen: https://my.oschina.net/u/6606114/blog/10112475

[Best Practice] Verwenden Sie OpenNJet, um eine Graustufenveröffentlichung zu erreichen :https://njet.org.cn/cases/case-gray/

OpenNJet basierte zunächst auf dem Basiszweig von NGINX1.19 und entwickelte sich unabhängig davon. Es zeichnet sich durch hohe Leistung, Stabilität und einfache Erweiterung aus. Es löst auch die seit langem bestehenden Probleme von NGINX, wie z. B. Schwierigkeiten bei der dynamischen Konfiguration und die Auswirkungen auf Verwaltungsfunktionen Geschäft.  Offizielle Website der Mail-Gruppe 

Broadcom kündigte die Beendigung des bestehenden VMware-Partnerprogramms Deepin-IDE-Versionsupdate, ein neues Erscheinungsbild, an. WAVE SUMMIT feiert seine 10. Ausgabe. Wen Xinyiyan wird die neueste Enthüllung haben! Zhou Hongyi: Der gebürtige Hongmeng wird auf jeden Fall Erfolg haben. Der komplette Quellcode von GTA 5 wurde öffentlich durchgesickert. Linus: Ich werde den Code an Heiligabend nicht lesen. Ich werde eine neue Version des Java-Tool-Sets Hutool-5.8.24 veröffentlichen nächstes Jahr. Lasst uns gemeinsam über Furion klagen. Kommerzielle Erkundung: Das Boot ist vorbei. Wan Zhongshan, v4.9.1.15 Apple veröffentlicht Open-Source-Multimodal-Großsprachenmodell Ferret Yakult Company bestätigt, dass 95 G-Daten durchgesickert sind
{{o.name}}
{{m.name}}

Je suppose que tu aimes

Origine my.oschina.net/u/6606114/blog/10456620
conseillé
Classement