Nginx کان ايلچي پراکسي ڏانهن لڏپلاڻ

هيلو، حبر! مان توهان جي ڌيان ڏانهن آڻيان ٿو پوسٽ جو ترجمو: Nginx کان ايلچي پراکسي ڏانهن لڏپلاڻ.

Envoy هڪ اعليٰ ڪارڪردگيءَ وارو ورهايل پراکسي سرور آهي (لکيل C++) انفرادي خدمتن ۽ ايپليڪيشنن لاءِ ٺهيل آهي، اهو پڻ هڪ ڪميونيڪيشن بس آهي ۽ ”يونيورسل ڊيٽا جهاز“ وڏي مائڪرو سروس ”سروس ميش“ آرڪيٽيڪچرز لاءِ ٺهيل آهي. جڏهن ان کي ٺاهيندي، سرور جي ترقي جي دوران پيدا ٿيندڙ مسئلن جو حل جهڙوڪ NGINX، HAProxy، هارڊويئر لوڊ بيلنسرز ۽ ڪلائوڊ لوڊ بيلنسرز کي حساب ۾ ورتو ويو. ايلچي هر ايپليڪيشن سان گڏ ڪم ڪري ٿو ۽ نيٽ ورڪ کي ختم ڪري ٿو عام ڪارڪردگي مهيا ڪرڻ لاءِ پليٽ فارم جي قطع نظر. جڏهن هڪ انفراسٽرڪچر ۾ سموري سروس ٽريفڪ Envoy ميش ذريعي وهندي آهي، اهو آسان ٿي ويندو آهي مسئلن جي علائقن کي مسلسل مشاهدي سان ڏسڻ، مجموعي ڪارڪردگي کي ترتيب ڏيڻ، ۽ هڪ خاص هنڌ ۾ بنيادي ڪارڪردگي شامل ڪرڻ.

خاصيتون

  • آئوٽ آف پراسيس آرڪيٽيڪچر: اينوائي هڪ خودمختيار، اعليٰ ڪارڪردگي وارو سرور آهي جيڪو ٿورڙي مقدار ۾ رام وٺي ٿو. اهو ڪنهن به ايپليڪيشن ٻولي يا فريم ورڪ سان گڏ ڪم ڪري ٿو.
  • http/2 ۽ grpc سپورٽ: ايلچي وٽ فرسٽ ڪلاس http/2 ۽ grpc جي سپورٽ ايندڙ ۽ ٻاهر نڪرندڙ ڪنيڪشن لاءِ. هي هڪ شفاف پراکسي آهي http/1.1 کان http/2 تائين.
  • ايڊوانسڊ لوڊ بيلنسنگ: ايلچي ايڊوانس لوڊ بيلنسنگ فيچرز کي سپورٽ ڪري ٿو جنهن ۾ آٽوميٽڪ ريٽريس، چين بريڪنگ، گلوبل ريٽ ليمنگ، ريڪوسٽ شيڊونگ، لوڪل زون لوڊ بيلنسنگ وغيره شامل آهن.
  • ڪنفيگريشن مئنيجمينٽ API: سفير هڪ مضبوط API مهيا ڪري ٿو توهان جي ترتيب کي متحرڪ طور تي منظم ڪرڻ لاءِ.
  • مشاهدو: L7 ٽرئفڪ جي گہرے مشاهدي، ورهايل ٽريڪنگ لاءِ اصلي مدد ۽ منگوڊ بي، ڊينا موڊ بي ۽ ٻين ڪيترن ئي ايپليڪيشنن جي مشاهدي.

قدم 1 - مثال NGINX ترتيب

ھي اسڪرپٽ خاص طور تي ٺاھيل فائل استعمال ڪري ٿو nginx.conf، مڪمل مثال جي بنياد تي NGINX Wiki. توهان کولڻ سان ايڊيٽر ۾ ترتيب ڏسي سگهو ٿا 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 جي مختلف حصن لاء ٽرئفڪ کي ڪيئن سنڀالڻ.

سڀ ٺاھ جوڙ Envoy Proxy تي لاڳو نه ٿينديون، ۽ توھان کي ڪجھ سيٽنگون ترتيب ڏيڻ جي ضرورت ناھي. سفير پراکسي آهي چار اهم قسم، جيڪو NGINX پاران پيش ڪيل بنيادي ڍانچي جي حمايت ڪري ٿو. بنيادي آهي:

  • ٻڌندڙ: اهي طئي ڪندا آهن ته ڪيئن ايلچي پراکسي ايندڙ درخواستن کي قبول ڪري ٿي. Envoy Proxy في الحال صرف TCP تي ٻڌل ٻڌندڙن کي سپورٽ ڪري ٿو. هڪ دفعو هڪ ڪنيڪشن قائم ڪيو ويو آهي، اهو پروسيسنگ لاء فلٽر جي هڪ سيٽ ڏانهن منتقل ڪيو ويو آهي.
  • فلٽر: اهي هڪ پائپ لائن فن تعمير جو حصو آهن جيڪي ايندڙ ۽ ٻاهرئين ڊيٽا کي پروسيس ڪري سگهن ٿيون. ھن ڪارڪردگي ۾ فلٽر شامل آھن جھڙوڪ Gzip، جيڪو ڪلائنٽ ڏانھن موڪلڻ کان اڳ ڊيٽا کي دٻائي ٿو.
  • روٽر: اهي ٽريفڪ کي گهربل منزل ڏانهن اڳتي وڌائين ٿا، ڪلستر طور بيان ڪيل.
  • ڪلستر: اهي ٽريفڪ ۽ ترتيب جي پيٽرولن لاء آخري پوائنٽ بيان ڪن ٿا.

اسان انهن چئن حصن کي استعمال ڪنداسين هڪ اينجائيٽ پراکسي ترتيب ڏيڻ لاءِ هڪ مخصوص NGINX ترتيب سان ملائڻ لاءِ. ايلچي جو مقصد APIs ۽ متحرڪ ترتيب سان ڪم ڪرڻ آهي. انهي صورت ۾، بنيادي جوڙجڪ NGINX کان جامد، سخت ڪوڊ ٿيل سيٽنگون استعمال ڪندي.

قدم 2 - NGINX ترتيب

پهريون حصو nginx.conf وضاحت ڪري ٿو ڪجهه NGINX اندروني جيڪي ترتيب ڏيڻ جي ضرورت آهي.

ڪم ڪندڙ ڪنيڪشن

هيٺ ڏنل تشڪيل ڪم ڪندڙ عملن ۽ ڪنيڪشن جو تعداد طئي ڪري ٿي. اهو ظاهر ڪري ٿو ته NGINX ڪيئن مطالبن کي پورو ڪرڻ لاء ماپ ڪندو.

worker_processes  2;

events {
  worker_connections   2000;
}

Envoy Proxy مختلف طريقن سان ڪم جي وهڪري ۽ ڪنيڪشن کي منظم ڪري ٿو.

ايلچي سسٽم ۾ هر هارڊويئر سلسلي لاءِ هڪ ورڪر ٿريڊ ٺاهي ٿو. هر ورڪر ٿريڊ هڪ غير بلاڪنگ ايونٽ لوپ تي عمل ڪري ٿو جيڪو ذميوار آهي

  1. هر ٻڌندڙ کي ٻڌڻ
  2. نوان ڪنيڪشن قبول ڪرڻ
  3. ڪنيڪشن لاءِ فلٽر جو هڪ سيٽ ٺاهيو
  4. ڪنيڪشن جي زندگي دوران سڀني I/O عملن کي پروسيس ڪريو.

سڀ وڌيڪ ڪنيڪشن پروسيسنگ مڪمل طور تي ڪم ڪندڙ سلسلي ۾ سنڀاليو ويندو آهي، ڪنهن به اڳتي وڌڻ واري رويي سميت.

Envoy ۾ هر ڪم ڪندڙ سلسلي لاء، اتي هڪ ڪنيڪشن پول آهي. تنهن ڪري HTTP/2 ڪنيڪشن پول صرف هڪ ڪنيڪشن في خارجي ميزبان کي هڪ وقت ۾ قائم ڪن ٿا، جيڪڏهن چار ورڪر ٿريڊس آهن اتي چار HTTP/2 ڪنيڪشن في خارجي ميزبان هڪ مستحڪم حالت ۾ هوندا. هر شيءِ کي هڪ ورڪر ٿريڊ ۾ رکڻ سان، لڳ ڀڳ سڀئي ڪوڊ بلاڪ ڪرڻ کان سواءِ لکي سگھجن ٿا، ڄڻ ته اهو اڪيلو ٿريڊ هجي. جيڪڏهن ضرورت کان وڌيڪ ڪم ڪندڙ سلسلا مختص ڪيا ويا آهن، اهو ٿي سگهي ٿو ضايع ٿيل ياداشت، هڪ وڏي تعداد ۾ بيڪار ڪنيڪشن ٺاهي، ۽ ڪنيڪشن جي تعداد کي گھٽائڻ جي ڀيٽ ۾ واپس پول ڏانهن موٽڻ.

وڌيڪ معلومات لاءِ دورو ڪريو سفير پراکسي بلاگ.

HTTP ترتيب

ھيٺ ڏنل NGINX ٺاھ جوڙ بلاڪ HTTP سيٽنگون بيان ڪري ٿو جھڙوڪ:

  • ڪھڙي قسم جي mime سپورٽ آھن
  • ڊفالٽ ٽائيم آئوٽ
  • 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;

ايلچي جي اندر، اهو ٻڌندڙن جي ڪنٽرول آهي.

ٻڌندڙن جو نمائندو

Envoy Proxy سان شروع ڪرڻ جو سڀ کان اهم پاسو توهان جي ٻڌندڙن جي تعريف ڪرڻ آهي. توھان کي ھڪڙي ٺاھ جوڙ واري فائل ٺاهڻ جي ضرورت آھي جيڪا بيان ڪري ٿي ته توھان ڪيئن چاھيو ٿا Envoy مثال کي هلائڻ.

هيٺ ڏنل ٽڪرا هڪ نئون ٻڌندڙ ٺاهيندو ۽ ان کي بندرگاهه 8080 تي پابند ڪندو. ڪنفيگريشن Envoy Proxy کي ٻڌائي ٿي ته ان کي ايندڙ درخواستن لاءِ ڪهڙن بندرگاهن سان پابند ڪرڻ گهرجي.

Envoy Proxy ان جي تشڪيل لاءِ 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

نالو envoy.http_connection_manager Envoy Proxy ۾ هڪ بلٽ ان فلٽر آهي. ٻيا فلٽر شامل آهن Redis, منڊو, ٽي پي. توھان ڳولي سگھوٿا مڪمل فهرست تي دستاويز.

ٻين لوڊ بيلنسنگ پاليسين بابت وڌيڪ معلومات لاءِ، دورو ڪريو سفير دستاويز.

قدم 5 - پراکسي ۽ اپ اسٽريم ترتيب

NGINX ۾، اپ اسٽريم ترتيب کي ٽارگيٽ سرورز جو هڪ سيٽ بيان ڪري ٿو جيڪو ٽرئفڪ کي پروسيس ڪندو. هن معاملي ۾، ٻه ڪلستر مقرر ڪيا ويا.

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

Envoy ۾، اهو ڪلستر پاران منظم ڪيو ويندو آهي.

سفير ڪلستر

اپ اسٽريم برابر ڪلستر طور بيان ڪيو ويو آهي. انهي صورت ۾، لشڪر جيڪي ٽريفڪ جي خدمت ڪندا، سڃاڻپ ڪئي وئي آهي. ميزبانن تائين رسائي جو طريقو، جهڙوڪ ٽائيم آئوٽ، ڪلستر جي ترتيب جي طور تي بيان ڪيو ويو آهي. هي اجازت ڏئي ٿو وڌيڪ گرينولر ڪنٽرول جي پهلوئن تي جيئن ويڪرائي ۽ لوڊ بيلنسنگ.

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 پتي کي اپ اسٽريم ڪلستر ۾ واضح ميزبان سمجهيو ويندو. هن جو مطلب اهو آهي ته جيڪڏهن هڪ درخواست ٻه IP پتي واپس آڻيندي، ايلچي فرض ڪندو ته ڪلستر ۾ ٻه ميزبان آهن، ۽ ٻنهي کي لوڊ متوازن هجڻ گهرجي. جيڪڏهن هڪ ميزبان کي نتيجي مان هٽايو ويو آهي، ايلچي فرض ڪندو ته اهو هاڻي موجود ناهي ۽ ڪنهن به موجوده ڪنيڪشن پول مان ٽرئفڪ کي ڇڪيندو.

و moreيڪ معلومات لاءِ ڏسو سفير پراکسي دستاويز.

قدم 6 - لاگ رسائي ۽ غلطيون

آخري ٺاھ جوڙ رجسٽريشن آھي. غلطي جي لاگن کي ڊسڪ ڏانهن ڌڪڻ جي بدران، Envoy Proxy ڪلائوڊ تي ٻڌل طريقو اختيار ڪري ٿو. سڀ اپليڪيشن لاگ ان جي پيداوار آهن اسٽوريج и ڏاڪڻ.

جڏهن صارف هڪ درخواست ڪن ٿا، رسائي لاگز اختياري آهن ۽ ڊفالٽ طور بند ٿيل آهن. HTTP درخواستن لاء رسائي لاگز کي فعال ڪرڻ لاء، ترتيب ڏيڻ کي فعال ڪريو access_log HTTP ڪنيڪشن مينيجر لاءِ. رستو يا ته ٿي سگهي ٿو هڪ ڊوائيس جهڙوڪ اسٽوريج، يا ڊسڪ تي هڪ فائل، توهان جي گهرجن تي منحصر ڪري ٿو.

ھيٺ ڏنل ٺاھ جوڙ سڀني رسائي لاگز کي ريڊائريٽ ڪندو اسٽوريج (مترجم جو نوٽ - stdout گھربل آھي envoy envoy docker جي اندر استعمال ڪرڻ لاءِ. جيڪڏھن docker کان سواءِ استعمال ڪيو وڃي، ته پوءِ /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:

ڊفالٽ طور، Envoy هڪ فارميٽ اسٽرنگ آهي جنهن ۾ HTTP درخواست جا تفصيل شامل آهن:

[%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)%"}

Envoy Registration Methodology تي وڌيڪ معلومات لاءِ، دورو ڪريو

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

Envoy Proxy سان ڪم ڪرڻ ۾ بصيرت حاصل ڪرڻ جو واحد طريقو لاگنگ ناهي. ان ۾ ترقي يافته ٽريڪنگ ۽ ميٽرڪ صلاحيتون ٺهيل آهن. توھان وڌيڪ ڳولي سگھوٿا تي ٽريڪنگ دستاويز يا انهي جي ذريعي انٽرويو ٽريڪنگ اسڪرپٽ.

قدم 7 - لانچ

توھان ھاڻي پنھنجي ترتيب کي NGINX کان Envoy Proxy ڏانھن منتقل ڪيو آھي. آخري قدم ان کي جانچڻ لاءِ اينوائي پراڪسي مثال لانچ ڪرڻ آهي.

استعمال ڪندڙ جي طور تي هلائي

NGINX ترتيب واري لائن جي چوٽي تي استعمال ڪندڙ www؛ حفاظت کي بهتر ڪرڻ لاءِ NGINX کي گهٽ امتيازي صارف طور هلائڻ جي وضاحت ڪري ٿو.

Envoy Proxy ڪلائوڊ تي ٻڌل طريقو اختيار ڪري ٿو انتظام ڪرڻ لاءِ جيڪو عمل جو مالڪ آهي. جڏهن اسان هڪ ڪنٽينر ذريعي Envoy Proxy هلائيندا آهيون، اسان هڪ گهٽ امتيازي صارف جي وضاحت ڪري سگهون ٿا.

ايلچي پراکسي لانچ ڪرڻ

ھيٺ ڏنل حڪم ھوسٽ تي ڊاڪر ڪنٽينر ذريعي Envoy Proxy هلائيندو. هي حڪم Envoy کي بندرگاهه 80 تي ايندڙ ايندڙ درخواستن کي ٻڌڻ جي صلاحيت ڏئي ٿو. جڏهن ته، جيئن ٻڌندڙ جي ترتيب ۾ بيان ڪيو ويو آهي، Envoy Proxy بندرگاهه 8080 تي ايندڙ ايندڙ ٽرئفڪ لاءِ ٻڌندو آهي. اهو عمل کي اجازت ڏئي ٿو ته گهٽ امتيازي صارف جي طور تي.

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

جاچ

پراکسي هلائڻ سان، ٽيسٽ ھاڻي ڪري سگھجن ٿيون ۽ پروسيس ڪري سگھجن ٿيون. هيٺ ڏنل سي آر ايل حڪم هڪ درخواست پيش ڪري ٿو ميزبان هيڊر سان پراکسي ترتيب ۾ بيان ڪيل.

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

HTTP درخواست جي نتيجي ۾ غلطي ٿيندي 503. اهو ئي سبب آهي ته اپ اسٽريم ڪنيڪشن ڪم نه ڪري رهيا آهن ۽ دستياب نه آهن. تنهن ڪري، Envoy Proxy وٽ درخواست لاءِ ڪي به دستياب منزلون نه آهن. هيٺ ڏنل حڪم 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 وٽ سسٽم ڊي سروس ترتيب نه آهي.

سسٽم ڊي سروس ترتيب شامل ڪريو /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

Envoy Proxy جامد مواد پيش ڪرڻ جي حمايت نٿو ڪري. تنهن ڪري، ڪير ووٽ ڏئي سگهي ٿو فيچر لاءِ: https://github.com/envoyproxy/envoy/issues/378

صرف رجسٽرڊ استعمال ڪندڙ سروي ۾ حصو وٺي سگهن ٿا. سائن ان ڪريو، توهان جي مهرباني.

ڇا هي پوسٽ توهان کي انسائيڪلوپيڊيا پراکسي کي انسٽال ڪرڻ ۽ جانچڻ جي حوصلا افزائي ڪئي؟

  • ها

  • في

75 صارفين ووٽ ڏنو. 18 استعمال ڪندڙن کي روڪيو ويو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو