Nginx இலிருந்து Envoy Proxyக்கு இடம்பெயர்தல்

வணக்கம், ஹப்ர்! இடுகையின் மொழிபெயர்ப்பை உங்கள் கவனத்திற்குக் கொண்டு வருகிறேன்: Nginx இலிருந்து Envoy Proxyக்கு இடம்பெயர்தல்.

Envoy என்பது தனிப்பட்ட சேவைகள் மற்றும் பயன்பாடுகளுக்காக வடிவமைக்கப்பட்ட உயர் செயல்திறன் கொண்ட விநியோகிக்கப்பட்ட ப்ராக்ஸி சர்வர் (C++ இல் எழுதப்பட்டது), இது ஒரு தகவல் தொடர்பு பேருந்து மற்றும் பெரிய மைக்ரோ சர்வீஸ் "சர்வீஸ் மெஷ்" கட்டமைப்புகளுக்காக வடிவமைக்கப்பட்ட "யுனிவர்சல் டேட்டா பிளேன்" ஆகும். அதை உருவாக்கும் போது, ​​NGINX, HAProxy, ஹார்டுவேர் லோட் பேலன்சர்கள் மற்றும் கிளவுட் லோட் பேலன்சர்கள் போன்ற சேவையகங்களின் வளர்ச்சியின் போது எழுந்த சிக்கல்களுக்கான தீர்வுகள் கணக்கில் எடுத்துக்கொள்ளப்பட்டன. தூதர் ஒவ்வொரு பயன்பாட்டிலும் இணைந்து செயல்படுகிறது மற்றும் தளத்தைப் பொருட்படுத்தாமல் பொதுவான செயல்பாட்டை வழங்க நெட்வொர்க்கை சுருக்குகிறது. ஒரு உள்கட்டமைப்பில் உள்ள அனைத்து சேவைப் போக்குவரமும் என்வாய் மெஷ் மூலம் பாயும் போது, ​​சிக்கல் பகுதிகளை சீரான கண்காணிப்பு, ஒட்டுமொத்த செயல்திறனை மாற்றியமைத்தல் மற்றும் ஒரு குறிப்பிட்ட இடத்தில் முக்கிய செயல்பாட்டைச் சேர்ப்பது எளிதாகிறது.

வாய்ப்புகளை

  • செயல்பாட்டிற்கு வெளியே உள்ள கட்டமைப்பு: தூதுவர் என்பது ஒரு சிறிய அளவிலான ரேமை எடுத்துக் கொள்ளும் தன்னியக்கமான, உயர் செயல்திறன் கொண்ட சர்வர் ஆகும். இது எந்த பயன்பாட்டு மொழி அல்லது கட்டமைப்புடன் இணைந்து செயல்படுகிறது.
  • http/2 மற்றும் grpc ஆதரவு: தூதர் முதல்-வகுப்பு http/2 மற்றும் உள்வரும் மற்றும் வெளிச்செல்லும் இணைப்புகளுக்கான grpc ஆதரவைக் கொண்டுள்ளது. இது http/1.1 முதல் http/2 வரையிலான வெளிப்படையான ப்ராக்ஸி ஆகும்.
  • மேம்பட்ட சுமை சமநிலை: தானியங்கி மறு முயற்சிகள், சங்கிலி உடைத்தல், உலகளாவிய விகிதத்தை கட்டுப்படுத்துதல், கோரிக்கை நிழல், உள்ளூர் மண்டல சுமை சமநிலை போன்ற மேம்பட்ட சுமை சமநிலை அம்சங்களை தூதுவர் ஆதரிக்கிறார்.
  • உள்ளமைவு மேலாண்மை API: உங்கள் உள்ளமைவை மாறும் வகையில் நிர்வகிப்பதற்கான ஒரு வலுவான API ஐ தூதர் வழங்குகிறது.
  • கவனிக்கக்கூடிய தன்மை: L7 போக்குவரத்தின் ஆழமான அவதானிப்பு, விநியோகிக்கப்பட்ட டிரேசிங்கிற்கான சொந்த ஆதரவு மற்றும் mongodb, dynamodb மற்றும் பல பயன்பாடுகளின் அவதானிப்பு.

படி 1 - எடுத்துக்காட்டு NGINX கட்டமைப்பு

இந்த ஸ்கிரிப்ட் சிறப்பாக வடிவமைக்கப்பட்ட கோப்பைப் பயன்படுத்துகிறது nginx.conf, இருந்து முழு உதாரணம் அடிப்படையில் NGINX விக்கி. திறப்பதன் மூலம் எடிட்டரில் உள்ளமைவைக் காணலாம் nginx.conf

nginx மூல கட்டமைப்பு

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 கட்டமைப்புகளில் பொதுவாக மூன்று முக்கிய கூறுகள் உள்ளன:

  1. NGINX சேவையகம், பதிவு அமைப்பு மற்றும் Gzip செயல்பாடுகளை கட்டமைக்கிறது. இது எல்லா நிகழ்வுகளிலும் உலகளவில் வரையறுக்கப்படுகிறது.
  2. ஹோஸ்டுக்கான கோரிக்கைகளை ஏற்க NGINX ஐ உள்ளமைக்கிறது one.example.com போர்ட் 8080 இல்.
  3. இலக்கு இருப்பிடத்தை அமைத்தல், URL இன் வெவ்வேறு பகுதிகளுக்கான போக்குவரத்தை எவ்வாறு கையாள்வது.

அனைத்து உள்ளமைவுகளும் என்வாய் ப்ராக்ஸிக்கு பொருந்தாது, மேலும் நீங்கள் சில அமைப்புகளை உள்ளமைக்க வேண்டியதில்லை. தூதர் ப்ராக்ஸி உள்ளது நான்கு முக்கிய வகைகள்NGINX வழங்கும் முக்கிய உள்கட்டமைப்பை ஆதரிக்கிறது. மையமானது:

  • கேட்போர்: உள்வரும் கோரிக்கைகளை தூதர் ப்ராக்ஸி எவ்வாறு ஏற்றுக்கொள்கிறது என்பதை அவர்கள் தீர்மானிக்கிறார்கள். Envoy Proxy தற்போது TCP அடிப்படையிலான கேட்போரை மட்டுமே ஆதரிக்கிறது. ஒரு இணைப்பு நிறுவப்பட்டதும், அது செயலாக்கத்திற்கான வடிகட்டிகளின் தொகுப்பிற்கு அனுப்பப்படும்.
  • வடிப்பான்கள்: அவை உள்வரும் மற்றும் வெளிச்செல்லும் தரவைச் செயலாக்கக்கூடிய பைப்லைன் கட்டமைப்பின் ஒரு பகுதியாகும். இந்த செயல்பாடு Gzip போன்ற வடிப்பான்களை உள்ளடக்கியது, இது கிளையண்டிற்கு அனுப்பும் முன் தரவை சுருக்குகிறது.
  • திசைவிகள்: அவை ட்ராஃபிக்கை தேவையான இடத்திற்கு அனுப்புகின்றன, இது ஒரு கிளஸ்டர் என வரையறுக்கப்படுகிறது.
  • கொத்துகள்: அவை போக்குவரத்து மற்றும் உள்ளமைவு அளவுருக்களுக்கான இறுதிப்புள்ளியை வரையறுக்கின்றன.

ஒரு குறிப்பிட்ட NGINX உள்ளமைவுடன் பொருந்துவதற்கு ஒரு Envoy Proxy உள்ளமைவை உருவாக்க இந்த நான்கு கூறுகளையும் பயன்படுத்துவோம். ஏபிஐகள் மற்றும் டைனமிக் உள்ளமைவுடன் பணிபுரிவதே தூதுவரின் குறிக்கோள். இந்த வழக்கில், அடிப்படை உள்ளமைவு NGINX இலிருந்து நிலையான, கடின-குறியிடப்பட்ட அமைப்புகளைப் பயன்படுத்தும்.

படி 2 - NGINX கட்டமைப்பு

முதல் பகுதி nginx.conf கட்டமைக்க வேண்டிய சில NGINX இன்டர்னல்களை வரையறுக்கிறது.

தொழிலாளர் இணைப்புகள்

கீழே உள்ள கட்டமைப்பு தொழிலாளர் செயல்முறைகள் மற்றும் இணைப்புகளின் எண்ணிக்கையை தீர்மானிக்கிறது. தேவையை பூர்த்தி செய்ய NGINX எவ்வாறு அளவிடப்படும் என்பதை இது குறிக்கிறது.

worker_processes  2;

events {
  worker_connections   2000;
}

Envoy Proxy வெவ்வேறு வழிகளில் பணிப்பாய்வு மற்றும் இணைப்புகளை நிர்வகிக்கிறது.

அமைப்பில் உள்ள ஒவ்வொரு ஹார்டுவேர் நூலுக்கும் தூதர் ஒரு தொழிலாளி நூலை உருவாக்குகிறார். ஒவ்வொரு தொழிலாளி நூலும் ஒரு தடையற்ற நிகழ்வு வளையத்தை செயல்படுத்துகிறது, அது பொறுப்பாகும்

  1. ஒவ்வொரு கேட்பவரையும் கேட்பது
  2. புதிய இணைப்புகளை ஏற்றுக்கொள்வது
  3. இணைப்பிற்கான வடிப்பான்களின் தொகுப்பை உருவாக்குதல்
  4. இணைப்பின் வாழ்நாளில் அனைத்து I/O செயல்பாடுகளையும் செயல்படுத்தவும்.

எந்தவொரு முன்னனுப்புதல் நடத்தை உட்பட, மேலும் அனைத்து இணைப்புச் செயலாக்கமும் பணியாளர் நூலில் முழுமையாகக் கையாளப்படுகிறது.

தூதுவர் ஒவ்வொரு தொழிலாளி நூலுக்கும், ஒரு இணைப்புக் குளம் உள்ளது. எனவே HTTP/2 இணைப்புக் குளங்கள் ஒரு நேரத்தில் ஒரு வெளிப்புற ஹோஸ்டுக்கு ஒரு இணைப்பை மட்டுமே நிறுவுகின்றன, நான்கு வேலை செய்பவர் நூல்கள் இருந்தால், ஒரு நிலையான நிலையில் ஒரு வெளிப்புற ஹோஸ்டுக்கு நான்கு HTTP/2 இணைப்புகள் இருக்கும். ஒரு தொழிலாளி நூலில் அனைத்தையும் வைத்திருப்பதன் மூலம், கிட்டத்தட்ட அனைத்து குறியீடுகளும் ஒற்றை திரிக்கப்பட்டதைப் போல் தடுக்காமல் எழுதலாம். தேவைக்கு அதிகமாக வேலை செய்பவர் த்ரெட்கள் ஒதுக்கப்பட்டால், இது நினைவகத்தை வீணடித்து, அதிக எண்ணிக்கையிலான செயலற்ற இணைப்புகளை உருவாக்கி, குளத்திற்குத் திரும்பும் இணைப்புகளின் எண்ணிக்கையைக் குறைக்கும்.

மேலும் தகவலுக்கு பார்வையிடவும் தூதர் ப்ராக்ஸி வலைப்பதிவு.

HTTP கட்டமைப்பு

பின்வரும் NGINX உள்ளமைவுத் தொகுதி HTTP அமைப்புகளை வரையறுக்கிறது:

  • என்ன மைம் வகைகள் ஆதரிக்கப்படுகின்றன
  • இயல்புநிலை காலக்கெடு
  • Gzip கட்டமைப்பு

Envoy Proxy இல் உள்ள வடிப்பான்களைப் பயன்படுத்தி இந்த அம்சங்களை நீங்கள் தனிப்பயனாக்கலாம், அதை நாங்கள் பின்னர் விவாதிப்போம்.

படி 3 - சர்வர் கட்டமைப்பு

HTTP உள்ளமைவுத் தொகுதியில், NGINX கட்டமைப்பு போர்ட் 8080 இல் கேட்கவும், டொமைன்களுக்கான உள்வரும் கோரிக்கைகளுக்கு பதிலளிக்கவும் குறிப்பிடுகிறது. one.example.com и www.one.example.com.

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

தூதுவரின் உள்ளே, அது கேட்பவர்களால் கட்டுப்படுத்தப்படுகிறது.

தூதர் கேட்போர்

என்வாய் ப்ராக்ஸியுடன் தொடங்குவதற்கான மிக முக்கியமான அம்சம் உங்கள் கேட்பவர்களை வரையறுப்பதாகும். நீங்கள் என்வாய் நிகழ்வை எவ்வாறு இயக்க விரும்புகிறீர்கள் என்பதை விவரிக்கும் உள்ளமைவு கோப்பை உருவாக்க வேண்டும்.

கீழே உள்ள துணுக்கை ஒரு புதிய கேட்பவரை உருவாக்கி அதை போர்ட் 8080 உடன் இணைக்கும். உள்வரும் கோரிக்கைகளுக்கு எந்த போர்ட்களை இணைக்க வேண்டும் என்பதை உள்ளமைவு தூதர் ப்ராக்ஸியிடம் கூறுகிறது.

என்வாய் ப்ராக்ஸி அதன் உள்ளமைவுக்கு YAML குறியீட்டைப் பயன்படுத்துகிறது. இந்த குறியீட்டின் அறிமுகத்திற்கு, இங்கே பார்க்கவும் இணைப்பை.

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

வரையறுக்க வேண்டிய அவசியமில்லை சர்வருடனான, Envoy Proxy வடிப்பான்கள் இதை கையாளும் என்பதால்.

படி 4 - இருப்பிட கட்டமைப்பு

NGINX இல் கோரிக்கை வரும்போது, ​​ட்ராஃபிக்கை எப்படிச் செயலாக்குவது மற்றும் எங்கு வழிநடத்துவது என்பதை இருப்பிடத் தொகுதி தீர்மானிக்கிறது. பின்வரும் துண்டில், தளத்திற்கான அனைத்து போக்குவரமும் அப்ஸ்ட்ரீமுக்கு மாற்றப்படும் (மொழிபெயர்ப்பாளரின் குறிப்பு: அப்ஸ்ட்ரீம் பொதுவாக ஒரு பயன்பாட்டு சேவையகம்) என்ற பெயரிடப்பட்ட கிளஸ்டருக்கு இலக்கு கிளஸ்டர். அப்ஸ்ட்ரீம் கிளஸ்டர் கோரிக்கையைச் செயல்படுத்த வேண்டிய முனைகளை வரையறுக்கிறது. அடுத்த கட்டத்தில் இதைப் பற்றி விவாதிப்போம்.

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

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

தூதுவளையில், வடிகட்டிகள் இதைச் செய்கின்றன.

தூதுவர் வடிப்பான்கள்

நிலையான உள்ளமைவுக்கு, உள்வரும் கோரிக்கைகளை எவ்வாறு செயலாக்குவது என்பதை வடிப்பான்கள் தீர்மானிக்கின்றன. இந்த வழக்கில் பொருந்தக்கூடிய வடிப்பான்களை அமைக்கிறோம் சர்வர்_பெயர்கள் முந்தைய கட்டத்தில். குறிப்பிட்ட டொமைன்கள் மற்றும் வழிகளுடன் பொருந்தக்கூடிய உள்வரும் கோரிக்கைகள் வரும்போது, ​​ட்ராஃபிக் கிளஸ்டருக்கு அனுப்பப்படும். இது NGINX பாட்டம்-அப் உள்ளமைவுக்குச் சமம்.

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

பெயர் தூதுவர்.http_connection_manager என்வாய் ப்ராக்ஸியில் உள்ளமைக்கப்பட்ட வடிகட்டியாகும். பிற வடிப்பான்கள் அடங்கும் Redis, மோங்கோ, டிசிபி. முழுமையான பட்டியலை நீங்கள் இங்கே காணலாம் ஆவணங்கள்.

பிற சுமை சமநிலைக் கொள்கைகள் பற்றிய கூடுதல் தகவலுக்கு, பார்வையிடவும் தூதுவர் ஆவணம்.

படி 5 - ப்ராக்ஸி மற்றும் அப்ஸ்ட்ரீம் உள்ளமைவு

NGINX இல், அப்ஸ்ட்ரீம் உள்ளமைவு போக்குவரத்தைச் செயலாக்கும் இலக்கு சேவையகங்களின் தொகுப்பை வரையறுக்கிறது. இந்த வழக்கில், இரண்டு கிளஸ்டர்கள் ஒதுக்கப்பட்டன.

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

தூதுவளையில், இது கிளஸ்டர்களால் நிர்வகிக்கப்படுகிறது.

தூதுவர்கள் கிளஸ்டர்கள்

அப்ஸ்ட்ரீம் சமமானது கிளஸ்டர்களாக வரையறுக்கப்படுகிறது. இந்த வழக்கில், போக்குவரத்திற்கு சேவை செய்யும் ஹோஸ்ட்கள் அடையாளம் காணப்பட்டுள்ளன. ஹோஸ்ட்களை அணுகும் விதம், நேரமுடிவுகள் போன்றவை, கிளஸ்டர் உள்ளமைவாக வரையறுக்கப்படுகிறது. இது தாமதம் மற்றும் சுமை சமநிலை போன்ற அம்சங்களில் அதிக நுண்ணிய கட்டுப்பாட்டை அனுமதிக்கிறது.

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 }}
    ]

சேவை கண்டுபிடிப்பைப் பயன்படுத்தும் போது STRICT_DNS குறிப்பிட்ட DNS இலக்குகளைத் தூதுவர் தொடர்ந்து மற்றும் ஒத்திசைவின்றித் தீர்ப்பார். DNS முடிவில் இருந்து திரும்பிய ஒவ்வொரு IP முகவரியும் அப்ஸ்ட்ரீம் கிளஸ்டரில் வெளிப்படையான ஹோஸ்டாகக் கருதப்படும். இதன் பொருள், கோரிக்கை இரண்டு ஐபி முகவரிகளை வழங்கினால், கிளஸ்டரில் இரண்டு ஹோஸ்ட்கள் இருப்பதாகவும், இரண்டும் சுமை சமநிலையில் இருக்க வேண்டும் என்றும் தூதர் கருதுவார். முடிவுகளில் இருந்து ஒரு ஹோஸ்ட் அகற்றப்பட்டால், அது இனி இல்லை என்று தூதர் கருதி, ஏற்கனவே உள்ள இணைப்புக் குளங்களில் இருந்து போக்குவரத்தை இழுப்பார்.

மேலும் தகவலுக்கு பார்க்கவும் தூதர் ப்ராக்ஸி ஆவணங்கள்.

படி 6 - பதிவு அணுகல் மற்றும் பிழைகள்

இறுதி கட்டமைப்பு பதிவு ஆகும். பிழை பதிவுகளை வட்டுக்குத் தள்ளுவதற்குப் பதிலாக, என்வாய் ப்ராக்ஸி கிளவுட் அடிப்படையிலான அணுகுமுறையை எடுக்கிறது. அனைத்து பயன்பாட்டுப் பதிவுகளும் வெளியிடப்படுகின்றன stdout и stderr.

பயனர்கள் கோரிக்கை வைக்கும் போது, ​​அணுகல் பதிவுகள் விருப்பமானது மற்றும் இயல்பாகவே முடக்கப்படும். HTTP கோரிக்கைகளுக்கான அணுகல் பதிவுகளை இயக்க, உள்ளமைவை இயக்கவும் அணுகல்_பதிவு HTTP இணைப்பு மேலாளருக்கு. பாதை ஒரு சாதனமாக இருக்கலாம் stdout, அல்லது வட்டில் உள்ள கோப்பு, உங்கள் தேவைகளைப் பொறுத்து.

பின்வரும் உள்ளமைவு அனைத்து அணுகல் பதிவுகளையும் திருப்பிவிடும் stdout (மொழிபெயர்ப்பாளரின் குறிப்பு - docker இன் உள்ளே envoy ஐப் பயன்படுத்த stdout தேவை. டோக்கர் இல்லாமல் பயன்படுத்தினால், வழக்கமான பதிவுக் கோப்பிற்கான பாதையுடன் /dev/stdout ஐ மாற்றவும்). இணைப்பு மேலாளருக்கான உள்ளமைவுப் பகுதிக்கு துணுக்கை நகலெடுக்கவும்:

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

முடிவுகள் இப்படி இருக்க வேண்டும்:

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

இயல்பாக, HTTP கோரிக்கையின் விவரங்களை உள்ளடக்கிய ஒரு வடிவமைப்பு சரத்தை Envoy கொண்டுள்ளது:

[%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

இந்த வடிவமைப்பு சரத்தின் முடிவு:

[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"

வடிவமைப்பு புலத்தை அமைப்பதன் மூலம் வெளியீட்டு உள்ளடக்கத்தை தனிப்பயனாக்கலாம். உதாரணத்திற்கு:

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"

புலத்தை அமைப்பதன் மூலம் பதிவு வரியை JSON வடிவத்தில் வெளியிடலாம் json_format. உதாரணமாக:

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

தூதர் பதிவு முறை பற்றிய கூடுதல் தகவலுக்கு, பார்வையிடவும்

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

பதிவுசெய்தல் மட்டுமே Envoy Proxy உடன் பணிபுரிவதற்கான நுண்ணறிவைப் பெறுவதற்கான ஒரே வழி அல்ல. இது மேம்பட்ட டிரேசிங் மற்றும் மெட்ரிக்ஸ் திறன்களைக் கொண்டுள்ளது. நீங்கள் மேலும் அறியலாம் ஆவணங்களைத் தடமறிதல் அல்லது மூலம் ஊடாடும் டிரேசிங் ஸ்கிரிப்ட்.

படி 7 - துவக்கவும்

நீங்கள் இப்போது உங்கள் உள்ளமைவை NGINX இலிருந்து Envoy Proxyக்கு மாற்றியுள்ளீர்கள். கடைசிப் படி, அதைச் சோதிக்க ஒரு தூதர் ப்ராக்ஸி நிகழ்வைத் தொடங்க வேண்டும்.

பயனராக இயக்கவும்

NGINX உள்ளமைவு வரியின் மேலே பயனர் www www; பாதுகாப்பை மேம்படுத்த குறைந்த சலுகை பெற்ற பயனராக NGINX ஐ இயக்கக் குறிப்பிடுகிறது.

செயல்பாட்டின் உரிமையாளர் யார் என்பதை நிர்வகிப்பதற்கு என்வாய் ப்ராக்ஸி கிளவுட் அடிப்படையிலான அணுகுமுறையை எடுக்கிறது. கன்டெய்னர் மூலம் Envoy Proxyஐ இயக்கும்போது, ​​குறைந்த சலுகை பெற்ற பயனரைக் குறிப்பிடலாம்.

தூதர் பதிலாள் தொடங்குதல்

கீழே உள்ள கட்டளை, ஹோஸ்டில் உள்ள டோக்கர் கண்டெய்னர் மூலம் என்வாய் ப்ராக்ஸியை இயக்கும். இந்த கட்டளை போர்ட் 80 இல் உள்வரும் கோரிக்கைகளை கேட்கும் திறனை என்வாய்க்கு வழங்குகிறது. இருப்பினும், கேட்பவர் கட்டமைப்பில் குறிப்பிடப்பட்டுள்ளபடி, போர்ட் 8080 இல் உள்வரும் போக்குவரத்தை என்வாய் ப்ராக்ஸி கேட்கிறது. இது குறைந்த சலுகை பெற்ற பயனராக செயல்பட அனுமதிக்கிறது.

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

சோதனை

ப்ராக்ஸி இயங்குவதன் மூலம், இப்போது சோதனைகள் செய்யப்பட்டு செயலாக்கப்படும். பின்வரும் cURL கட்டளையானது ப்ராக்ஸி உள்ளமைவில் வரையறுக்கப்பட்ட ஹோஸ்ட் தலைப்புடன் கோரிக்கையை வழங்குகிறது.

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

HTTP கோரிக்கை பிழையை ஏற்படுத்தும் 503. அப்ஸ்ட்ரீம் இணைப்புகள் வேலை செய்யாதது மற்றும் கிடைக்காததே இதற்குக் காரணம். எனவே, என்வாய் ப்ராக்ஸியிடம் கோரிக்கைக்கு எந்த இடமும் இல்லை. பின்வரும் கட்டளையானது தூதுவருக்காக வரையறுக்கப்பட்ட உள்ளமைவுடன் பொருந்தக்கூடிய HTTP சேவைகளின் தொடரைத் தொடங்கும்.

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

கிடைக்கும் சேவைகள் மூலம், தூதர் தனது இலக்குக்கு டிராஃபிக்கை வெற்றிகரமாக மாற்ற முடியும்.

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

எந்த டோக்கர் கொள்கலன் கோரிக்கையைச் செயலாக்கியது என்பதைக் குறிக்கும் பதிலை நீங்கள் பார்க்க வேண்டும். Envoy Proxy பதிவுகளில் நீங்கள் அணுகல் சர வெளியீட்டையும் பார்க்க வேண்டும்.

கூடுதல் HTTP பதில் தலைப்புகள்

உண்மையான கோரிக்கையின் பதில் தலைப்புகளில் கூடுதல் HTTP தலைப்புகளைக் காண்பீர்கள். கோரிக்கையைச் செயலாக்க அப்ஸ்ட்ரீம் ஹோஸ்ட் செலவழித்த நேரத்தை தலைப்பு காட்டுகிறது. மில்லி விநாடிகளில் வெளிப்படுத்தப்பட்டது. நெட்வொர்க் தாமதத்துடன் ஒப்பிடும்போது கிளையன்ட் சேவை நேரத்தை தீர்மானிக்க விரும்பினால் இது பயனுள்ளதாக இருக்கும்.

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

இறுதி கட்டமைப்பு

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 }

மொழிபெயர்ப்பாளரிடமிருந்து கூடுதல் தகவல்

Envoy Proxy ஐ நிறுவுவதற்கான வழிமுறைகளை இணையதளத்தில் காணலாம் https://www.getenvoy.io/

முன்னிருப்பாக, rpm இல் systemd சேவை கட்டமைப்பு இல்லை.

systemd சேவை கட்டமைப்பைச் சேர்க்கவும் /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

நீங்கள் ஒரு கோப்பகத்தை /etc/envoy/ உருவாக்கி அங்கு config.yaml config ஐ வைக்க வேண்டும்.

தூதர் ப்ராக்ஸியைப் பயன்படுத்தி தந்தி அரட்டை உள்ளது: https://t.me/envoyproxy_ru

தூதர் ப்ராக்ஸி நிலையான உள்ளடக்கத்தை வழங்குவதை ஆதரிக்காது. எனவே, அம்சத்திற்கு யார் வாக்களிக்க முடியும்: https://github.com/envoyproxy/envoy/issues/378

பதிவு செய்த பயனர்கள் மட்டுமே கணக்கெடுப்பில் பங்கேற்க முடியும். உள்நுழையவும், தயவு செய்து.

இந்த இடுகை தூதுவர் ப்ராக்ஸியை நிறுவி சோதிக்க உங்களை ஊக்குவித்ததா?

  • ஆம்

  • எந்த

75 பயனர்கள் வாக்களித்தனர். 18 பயனர்கள் வாக்களிக்கவில்லை.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்