Migratio ab Nginx ad Legatum proxy

Salve, Habr! Tuam operam affero translationem epistulae; Migratio ab Nginx ad Legatum proxy.

Legatus summus operandi procuratorem distribuit (scriptum in C++) ad singula officia et applicationes destinata, est etiam in bus communicationis et "planum universale notitiae" ad magnas microserviae "reticuli muneris" architecturas destinata. Cum eam creando, solutiones quaestionum ortae sunt in evolutione servientium ut NGINX, HAProxy, librariorum ferramentorum onera et nubes librariorum onera inspecta sunt. Legatus operatur in unaquaque applicatione et retia abstrahens ad communes functiones cuiuscumque suggesti providendum. Cum omne ministerium mercaturae infrastructurae per reticulum Legatum fluit, facile fit ut problematum areas visualizare cum observatione constanti, modo altiore effectus, et nucleum functionis in certo loco addere.

occasiones

  • Ex-processus architecturae: legatus est auto-continens, summus perficientur servo qui parvam RAM capit. Operatur in conjunctione cum aliqua applicatione linguae seu compage.
  • http/2 et grpc subsidium: legatus habet primae classis http/2 et grpc subsidium pro advenientibus et exitu necessariis. Hoc perspicuum est procuratorem a http/1.1 ad http/2.
  • Provectus Lond Librans: Legatus subsidia provectae notae onus aequans possidet retrias latas, catenam fractionem, ratem globalem limitationem, petitionem obumbrans, zonam localem onus librans, etc.
  • Configurationis Management API: legatus robustum API praebet ad conformationem alacriter gerendi.
  • Observabilitas: Alta observabilitas commercii L7, subsidia indigena ad distribuendum vestigandum et observabilitatem mongodb, dynamodb et multa alia applicationes.

Gradus 1 - Exemplum Mando NGINX

Hoc scriptum utitur specialiter ficti file nginx.confsecundum plenum exemplum a NGINX Wiki. Configurationem videre potes in editore aperiendo nginx.conf

nginx fons aboutconfig

user  www www;
pid /var/run/nginx.pid;
worker_processes  2;

events {
  worker_connections   2000;
}

http {
  gzip on;
  gzip_min_length  1100;
  gzip_buffers     4 8k;
  gzip_types       text/plain;

  log_format main      '$remote_addr - $remote_user [$time_local]  '
    '"$request" $status $bytes_sent '
    '"$http_referer" "$http_user_agent" '
    '"$gzip_ratio"';

  log_format download  '$remote_addr - $remote_user [$time_local]  '
    '"$request" $status $bytes_sent '
    '"$http_referer" "$http_user_agent" '
    '"$http_range" "$sent_http_content_range"';

  upstream targetCluster {
    172.18.0.3:80;
    172.18.0.4:80;
  }

  server {
    listen        8080;
    server_name   one.example.com  www.one.example.com;

    access_log   /var/log/nginx.access_log  main;
    error_log  /var/log/nginx.error_log  info;

    location / {
      proxy_pass         http://targetCluster/;
      proxy_redirect     off;

      proxy_set_header   Host             $host;
      proxy_set_header   X-Real-IP        $remote_addr;
    }
  }
}

NGINX figurationes typice habent tria elementa praecipua:

  1. Configurans NGINX servo, log structuram et functionem Gzip. Hoc globally in omnibus casibus definitur.
  2. Vestibulum NGINX petitiones accipere ad exercitum one.example.com supra portum 8080 .
  3. Locus scopo locare, negotiationes tractare pro diversis partibus domicilii.

Non omnis figuratio ad Legatum Proxy applicabit, nec aliquas occasus configurare debes. Legatus proxy quattuor key generaquae nucleum infrastructuram exhibentibus NGINX. Core est:

  • Auditores: Statuunt quomodo Internuntius Proxy acceptet petitiones advenientes. Legatus Proxy nunc tantum sustinet TCP-fundatur auditores. Cum nexus constituitur, ad filorum processus decernitur.
  • Filtra: Pars architecturae pipelineae sunt quae in ineuntes et exitu notitias procedere possunt. Haec officia filamenta includit ut Gzip, quae notitias comprimit antequam eam ad clientem mittant.
  • Iter: Negotiationem proferunt ad destinationem debitam, ut botrus definitam.
  • Botri: Terminum definiunt negotiationis et configurationis parametri.

His quattuor partibus utemur ad configurationem Proxy creandum ad certae NGINX conformationem. Propositum legatio est cum APIs et dynamica configuratione laborare. In hoc casu, basis configurationis utetur static, duris-codedibus ab NGINX.

Gradus II - NGINX configurationis

In prima parte, nginx.conf interna aliqua NGINX configurari definit.

Faciens Contrahentes

Configuratio infra numerum processus et nexus opificum determinat. Hoc indicat quomodo NGINX scandet obviam postulatio.

worker_processes  2;

events {
  worker_connections   2000;
}

Legatus Proxy laborat ac nexus diversimode administrat.

Legatus facit artificem filum pro singulis ferramentis stamina in systematis. Quisque opifex filum res loop non-obturans exequitur quod est reus

  1. Audire unumquemque
  2. Accipiens novas hospites
  3. Statuto de Filtra in nexu creando
  4. Processus omnes I/O operationes viventes nexus.

Omnis ulterior connexio processus omnino in filo laborantis tractatur, inclusa quaelibet agendi ratio.

Ad unumquodque opus linum in Internuntio, nexus est piscinae. Itaque HTTP/2 connexiones lacus solum unum nexum per externum exercitum ad tempus constituunt, si quattuor stamina operariorum quattuor HTTP/2 hospites per exercitum externum in statu stabulo erunt. Omnia in uno laborantis filo servando, omnes fere codicei sine impedimento scribi possunt, quasi singula lina. Si plures stamina laborantium quam necessaria sunt partita, hoc ad memoriam perditam ducere potest, magnum numerum otiosorum nexuum creans et pluries nexus in piscinam revertitur.

Pro magis notitia visita Legatus proxy.

HTTP configurationis

Sequenti NGINX configuratione scandalum definit HTTP occasus ut:

  • Quod mimi genera sustentantur?
  • Default Timeouts
  • Gzip configurationis

Has rationes consuescere potes utentes columellas in Proxy Internuntius, de quibus postea dicemus.

Gradus III - Servo configurationis

In HTTP configurationis clausus, figura NGINX designat audiendi in portu 8080 et in ineuntes petitiones respondere pro dominiis. one.example.com ΠΈ www.one.example.com.

 server {
    listen        8080;
    server_name   one.example.com  www.one.example.com;

Interius Internuntius, ab Auditoribus regitur.

Auditores legatus

Maxima pars initii apud Legatum Proxy incepit auditores tuos definit. Opus configurationem limam creare describentem quam vis ad instantiam Legati currere.

Snippet infra novum auditorem creabit et eum ad portum 8080 ligabit. Configuratio narrat Proxy Legatum qui portum debet obligare ad petitiones ineuntes.

Legatus proxy utitur YAML notatione ad suam configurationem. Introductio ad hanc notationem vide hic Link.

Copy to Editorstatic_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 8080 }

Non opus est definire SERVER_NAMEcum Internuntius proxy hoc tractabit.

Gradus IV - Location configurationis

Cum in NGINX petitio venit, locus clausus quomodo se expediat et ubi negotiatio iter faciat. In sequenti fragmento, omnia negotiatio ad situm transfertur ad flumen (nota interpres: fluminis solitum applicationem servo) botrus nominatus est. targetCluster. Botrus flumineus nodos definit, qui petitionem debent procedere. De hoc in proximo gradu dicemus.

location / {
    proxy_pass         http://targetCluster/;
    proxy_redirect     off;

    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
}

Apud Legatum Filtra hoc facit.

Legatus Filtra

Pro static configuratione, Filtra decernunt quomodo ad petitiones venientium processus. In hoc casu eliquamenta quae inserere constituimus server_names in priorem gradum. Cum petitiones advenientes pervenerunt ut certae ditiones et itinera quaedam aequant, negotiatio ad botrum fusa est. Hoc est instar figurae NGINX solum-sursum.

Copy to Editor    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: backend
              domains:
                - "one.example.com"
                - "www.one.example.com"
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: targetCluster
          http_filters:
          - name: envoy.router

nomine envoy.http_connection_manager est constructum-in filter in Proxy. Aliae Filtra includunt redis, Brunfelsia, TCP. Potes invenire album in completum documentum.

Pro magis informationes de aliis onus consiliis librandis, visita Legatus Documentation.

Gradus V - proxy et flumine configurationis

In NGINX, fluminis configuratione definit certae clypei servers qui negotiationis processuri sunt. In hoc casu duae ligaturae decretae sunt.

  upstream targetCluster {
    172.18.0.3:80;
    172.18.0.4:80;
  }

In Internuntius, hoc a botris curatur.

Legatus Clusters

Fluvius aequivalens dicitur botri. In hoc casu exercitus qui negocii servient notati sunt. Via hostiae accesserunt, ut timeouts, figura botri definitur. Hoc permittit ut plus granularis potestas in aspectus, ut latentiam et libramen oneris, permittat.

Copy to Editor  clusters:
  - name: targetCluster
    connect_timeout: 0.25s
    type: STRICT_DNS
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    hosts: [
      { socket_address: { address: 172.18.0.3, port_value: 80 }},
      { socket_address: { address: 172.18.0.4, port_value: 80 }}
    ]

Cum per servitium inventionis STRICT_DNS Legatus continuo et asynchrone DNS scuta determinata componet. Singuli redditus IP inscriptionis e DNS eventum habebunt exercitum expressum in botro flumine. Hoc significat, si petitio redit ad duas IP inscriptiones, Legatus assumet duas turmas in botro esse, et utrumque ponderare debet. Si hospes ab effectu removetur, Legatus id iam non existet et negotiationem e lacunis iunctis existentibus trahet.

Pro magis notitia video Internuntius procuratorem documentorum.

Gradus VI - Log Access et Errores

Ultima figura est adnotatione. Loco erroris tigna ad orbem propellentibus, Legatus Proxy accipit nubem subnixam accessum. Omnia application omnia sunt output ad stdout ΠΈ stderr.

Cum usores petitionem faciunt, accessus tigna ad libitum sunt et defalta debilitantur. Ut accessum omnia HTTP petitiones efficiat, conformationem da access_log ad HTTP nexum procurator. Aut fabrica ut semita esse potest stdoutaut fasciculus in orbe, pro tuis necessariis.

De hac configuratione omnia accessum ad redirigere erit stdout (Notae interpres - stdout legatus intus navale uti debet. Si usus sine navale, deinde /dev/stdout cum via ad fasciculi regularis repone). Effingo PRAECISIO in configuration sectionem pro nexu procurator:

Copy to Clipboardaccess_log:
- name: envoy.file_access_log
  config:
    path: "/dev/stdout"

Eventus sic debent spectare:

      - name: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_prefix: ingress_http
          access_log:
          - name: envoy.file_access_log
            config:
              path: "/dev/stdout"
          route_config:

Defalta, Legatus formam chordae habet quae singula petitionis HTTP includit:

[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%" "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"n

Effectus huius format chordae est:

[2018-11-23T04:51:00.281Z] "GET / HTTP/1.1" 200 - 0 58 4 1 "-" "curl/7.47.0" "f21ebd42-6770-4aa5-88d4-e56118165a7d" "one.example.com" "172.18.0.4:80"

Contentum output esse potest nativus per campum formato constituendo. Exempli gratia:

access_log:
- name: envoy.file_access_log
  config:
    path: "/dev/stdout"
    format: "[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%" %RESPONSE_CODE% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"n"

Linea stipes potest etiam esse output in forma JSON constituendo campum json_format. For example:

access_log:
- name: envoy.file_access_log
  config:
    path: "/dev/stdout"
    json_format: {"protocol": "%PROTOCOL%", "duration": "%DURATION%", "request_method": "%REQ(:METHOD)%"}

Pro magis notitia in Registration Methodologiae Legatus, visita

https://www.envoyproxy.io/docs/envoy/latest/configuration/access_log#config-access-log-format-dictionaries

Logging not only way to gain perspection to working with Internuntius Proxy. Res repetendi et metri facultates in eam excogitatas processit. Invenies plus apud te usque repetens hunc documentum aut per Interactive typum scriptum.

Step 7 - Launch

Transmigrasti iam tuam configurationem ab NGINX ad Legatum Proxy. Ultimus gradus est instantiam Proxy mittere ad Legatum probandum.

Curre ut user

In summitate NGINX lineam lineam user www www; cificat currere NGINX sicut user privilegiatus humilis securitatem meliorem.

Legatus Proxy accipit nubem fundatam accessum ad administrandi qui habet processum. Cum Legatum Proxy currimus per vas, notare possumus usorem humilem privilegiatum.

Deductio Proxy

Mandatum infra mittet Legatus Proxy per Docker continens in exercitu. Hoc mandatum Legato facultatem dat audiendi petitiones adveniendi in portum 80. Tamen, sicut in audiente configuratione definitum, Proxy audit Proxy advenientis mercaturam in portu 8080. Hoc permittit processum currere ut user privilegiatus ignobilis.

docker run --name proxy1 -p 80:8080 --user 1000:1000 -v /root/envoy.yaml:/etc/envoy/envoy.yaml envoyproxy/envoy

temptationis

Cum procuratore cursu, probationes fieri nunc possunt et processus fieri. Hoc mandatum URL postulationem emittit cum caput exercitus in configuratione procuratoris definitum.

curl -H "Host: one.example.com" localhost -i

HTTP petitio erit in errore 503. Causa fluminis nexus non operatur nec non in promptu est. Ideo Legatus Proxy non habet destinata ad petitionem. Praeceptum sequens incipiet seriem officiorum HTTP quae cum configuratione definita Internuntio congruit.

docker run -d katacoda/docker-http-server; docker run -d katacoda/docker-http-server;

Cum in promptu servitiis, Legatus negotiationem procuratorem suum feliciter destinare potest.

curl -H "Host: one.example.com" localhost -i

Responsum demonstrare debes videre quod Docker continens per petitionem processit. In acta Proxy Proxy etiam accessum chordarum output videre debes.

Additional HTTP Response capitis

Capitulos additos HTTP videbis in responsione capitis capitis postulationis actualis. The header displays of the time of the streaming host spent dispensando in request. Expressa in milliseconds. Hoc utile est si cliens munus temporis ad latentiam retis comparandam determinare vult.

x-envoy-upstream-service-time: 0
server: envoy

Final aboutconfig

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address: { address: 0.0.0.0, port_value: 8080 }
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        config:
          codec_type: auto
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: backend
              domains:
                - "one.example.com"
                - "www.one.example.com"
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: targetCluster
          http_filters:
          - name: envoy.router
          clusters:
  - name: targetCluster
    connect_timeout: 0.25s
    type: STRICT_DNS
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    hosts: [
      { socket_address: { address: 172.18.0.3, port_value: 80 }},
      { socket_address: { address: 172.18.0.4, port_value: 80 }}
    ]

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address: { address: 0.0.0.0, port_value: 9090 }

Additional information from the translator

Instructiones ad Proxy installing in pagina inveniri possunt https://www.getenvoy.io/

Per defaltam, rpm munus systematicum config non habet.

Adde officium systemd config /etc/systemd/system/envoy.service:

[Unit]
Description=Envoy Proxy
Documentation=https://www.envoyproxy.io/
After=network-online.target
Requires=envoy-auth-server.service
Wants=nginx.service

[Service]
User=root
Restart=on-failure
ExecStart=/usr/bin/envoy --config-path /etc/envoy/config.yaml
[Install]
WantedBy=multi-user.target

Opus directorium /etc/envoy/ creare et config.yaml config ibi ponere.

Est telegraphum chat per procuratorem legatum uti: https://t.me/envoyproxy_ru

Internuntius proxy non adiuvat contentus static servientes. Unde quis ferat in pluma; https://github.com/envoyproxy/envoy/issues/378

Tantum usores descripserunt in aliquet participare possunt. InscribeTe gratissimum esse.

Nonne haec post te hortatus est ut procuratorem instituere ac probare possis?

  • yes

  • no

75 utentes censuerunt. 18 Utentes abstinuerunt.

Source: www.habr.com