Debug di MQTT su websocket su Envoy 1.28.0

Ho migrato la nostra installazione di Envoy da Envoy 1.11.1 a 1.28.0 e ora sto usando anche SNI per selezionare il certificato corretto. Una parte importante di questa migrazione è l'aggiornamento della sintassi della configurazione di Envoy dall'API v2 all'API v3. L'aggiornamento è andato bene, tranne che per il nostro servizio MQTT basato su websocket...

Weiterlesen

correzione di envoy per servire grandi file dal backend / timeout / download interrotti

I clienti si lamentavano di non essere in grado di scaricare grandi file dai nostri siti web (ad esempio PiDoctor su PiCockpit.com). Inizialmente non potevo replicare il problema localmente, i file sembravano scaricare bene. Dopo ulteriori indagini ho determinato che i download venivano interrotti dopo un certo tempo - a seconda della velocità di download, quindi,...

Weiterlesen

envoy che serve una risposta statica

Oltre al routing e al reindirizzamento è possibile servire risposte statiche con Envoy. In questo caso voglio servire una risposta vietata (403) route_config: virtual_hosts: - nome: picockpit domini: ["picockpit.local:443", "picockpit.local"] route: - match: { prefisso: "/demo" } direct_response: status: 403 body: inline_string: "Proibito". - match: {prefix: "/"} route: {cluster: target_picockpit} Può anche servire...

Weiterlesen

envoy non si connette a VerneMQ per MQTT su websockets, codice di errore 503

Alcune rapide informazioni di base per chiunque si imbatta negli stessi problemi, e come debuggarli. Codice di errore 503 Questo è il codice di errore che sto ottenendo: Errore durante il WebSocket handshake: Codice di risposta inaspettato: 503. Imposta la registrazione di envoy su debug Ecco il mio docker-compose.yaml per envoy: versione: '3.7' servizi: envoy: build: context: ./ dockerfile: Dockerfile container_name:...

Weiterlesen

websockets di envoy per configurazione delle rotte, impostazione del test JavaScript

Nel mio articolo di ieri ho discusso a lungo la configurazione e il test di envoy per il proxy dei websockets. Oggi vorrei aggiungere alcune informazioni aggiuntive. sintassi corretta per l'aggiornamento dei websocket per rotta È possibile abilitare l'aggiornamento dei websocket per rotta. Non è necessario aggiungerlo globalmente: - nome: envoy.http_connection_manager config: #upgrade_configs: # - upgrade_type: websocket ...

Weiterlesen

envoy, docker e websockets - debug e configurazione

I websockets sono una tecnologia eccitante, che permette di aggiornare una connessione HTTP a una connessione binaria persistente di lunga durata, che si può usare per inviare messaggi bidirezionali. Per inciso, il protocollo MQTT può essere trasportato utilizzando websockets - che è l'unico (?) modo per un client JavaScript consegnato dal sito web, per esempio. In...

Weiterlesen

Rotta e reindirizzamento con envoy

Un esempio di envoy.yaml che mostra come instradare e reindirizzare. Ci sono diverse opzioni, vedi qui https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#route-redirectaction Questo envoy.yaml instrada /taxgod e /taxgod/ (il secondo potrebbe probabilmente essere omesso perché il primo dovrebbe anche corrispondere, penso) ad una nuova porta e un protocollo diverso. /picockpit è semplicemente reindirizzato a / e poi finalmente...

Weiterlesen

Envoy routing e snippet di riscrittura

È possibile riscrivere gli URL con Envoy per il backend. Si prega di notare che l'output HTML deve avere i percorsi appropriati! (Ecco perché non ho intenzione di indagare ulteriormente in questa direzione). REF: https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#route-route Nota anche che la stringa sarà resa letteralmente per direct_response -> body -> inline_string,...

Weiterlesen