ከNginx ወደ መልእክተኛ ፕሮክሲ በመሰደድ ላይ

ሰላም ሀብር! የልጥፉን ትርጉም ወደ እርስዎ ትኩረት አመጣለሁ፡- ከNginx ወደ መልእክተኛ ፕሮክሲ በመሰደድ ላይ.

መልእክተኛ ለግል አገልግሎቶች እና አፕሊኬሽኖች ተብሎ የተነደፈ ከፍተኛ አፈጻጸም ያለው የተከፋፈለ ፕሮክሲ ሰርቨር (በC++ የተጻፈ) ሲሆን በተጨማሪም የመገናኛ አውቶቡስ እና "ሁለንተናዊ ዳታ አውሮፕላን" ለትልቅ ማይክሮ አገልግሎት "የአገልግሎት መረብ" አርክቴክቸር የተነደፈ ነው። በሚፈጥሩበት ጊዜ እንደ NGINX, HAProxy, የሃርድዌር ጭነት ሚዛን እና የደመና ጭነት ሚዛን የመሳሰሉ አገልጋዮች በሚፈጠሩበት ጊዜ ለተነሱ ችግሮች መፍትሄዎች ተወስደዋል. መልእክተኛ ከእያንዳንዱ መተግበሪያ ጋር አብሮ ይሰራል እና መድረክ ምንም ይሁን ምን የጋራ ተግባራትን ለማቅረብ አውታረ መረቡን ያጠቃልል። በመሠረተ ልማት ውስጥ ያለው ሁሉም የአገልግሎት ትራፊክ በተላላኪው መረብ ውስጥ ሲፈስ፣ የችግር ቦታዎችን በተከታታይ ታዛቢነት ለማየት፣ አጠቃላይ አፈጻጸምን ለማስተካከል እና በአንድ የተወሰነ ቦታ ላይ ዋና ተግባራትን ለመጨመር ቀላል ይሆናል።

ባህሪዎች

  • ከሂደት ውጭ የሆነ አርክቴክቸር፡ መልእክተኛ ራሱን የቻለ፣ ከፍተኛ አፈጻጸም ያለው አገልጋይ ሲሆን ትንሽ መጠን ያለው RAM የሚወስድ ነው። ከማንኛውም የመተግበሪያ ቋንቋ ወይም ማዕቀፍ ጋር አብሮ ይሰራል።
  • http/2 እና grpc ድጋፍ፡ መልዕክተኛው ለገቢ እና ወጪ ግንኙነቶች የመጀመሪያ ደረጃ http/2 እና grpc ድጋፍ አለው። ይህ ከ http/1.1 ወደ http/2 ግልጽ ተኪ ነው።
  • የላቀ ጭነት ማመጣጠን፡ መልዕክተኛው አውቶማቲክ ሙከራዎችን፣ ሰንሰለት መሰባበርን፣ ዓለም አቀፍ ደረጃን መገደብ፣ የጥያቄ ጥላ፣ የአካባቢ ዞን ጭነት ማመጣጠን፣ ወዘተ ጨምሮ የላቀ ጭነት ማመጣጠን ባህሪያትን ይደግፋል።
  • የማዋቀር አስተዳደር ኤፒአይ፡ መልእክተኛ ውቅርዎን በተለዋዋጭ መንገድ ለማስተዳደር ጠንካራ ኤፒአይ ይሰጣል።
  • ታዛቢነት፡ የኤል 7 ትራፊክ ጥልቅ ታዛቢነት፣ ለተከፋፈለ ፍለጋ እና የሞንጎድብ፣ ዳይናሞድብ እና ሌሎች ብዙ መተግበሪያዎች ቤተኛ ድጋፍ።

ደረጃ 1 - ምሳሌ NGINX Config

ይህ ስክሪፕት በተለየ መልኩ የተሰራ ፋይል ይጠቀማል 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 አገልጋይ፣ የምዝግብ ማስታወሻ መዋቅር እና የጂዚፕ ተግባርን በማዋቀር ላይ። ይህ በሁሉም ሁኔታዎች በዓለም አቀፍ ደረጃ ይገለጻል.
  2. ለአስተናጋጁ ጥያቄዎችን ለመቀበል NGINXን በማዋቀር ላይ አንድ.eample.com ወደብ 8080.
  3. የታለመውን ቦታ ማቀናበር፣ ለተለያዩ የዩአርኤል ክፍሎች ትራፊክ እንዴት እንደሚይዝ።

ሁሉም ውቅር በEnvoy Proxy ላይ አይተገበርም፣ እና አንዳንድ ቅንብሮችን ማዋቀር አያስፈልግዎትም። የተላላኪ ፕሮክሲ አለው። አራት ቁልፍ ዓይነቶችበ NGINX የቀረበውን ዋና መሠረተ ልማት የሚደግፉ። ዋናው ነገር፡-

  • አድማጮች፡- የመልእክት ተኪ ገቢ ጥያቄዎችን እንዴት እንደሚቀበል ይወስናሉ። የመልእክት ተኪ በአሁኑ ጊዜ በTCP ላይ የተመሰረቱ አድማጮችን ብቻ ይደግፋል። ግንኙነት ከተፈጠረ በኋላ ለማቀነባበር ወደ ማጣሪያዎች ስብስብ ይተላለፋል.
  • ማጣሪያዎች፡- ገቢ እና ወጪ ውሂብን ማካሄድ የሚችል የቧንቧ መሾመር አርክቴክቸር አካል ናቸው። ይህ ተግባር ለደንበኛው ከመላኩ በፊት ውሂቡን የሚጨምቀው እንደ Gzip ያሉ ማጣሪያዎችን ያካትታል።
  • ራውተሮች እንደ ዘለላ ወደተገለጸው ትራፊክ ወደሚፈለገው መድረሻ ያስተላልፋሉ።
  • ዘለላዎች ለትራፊክ እና ውቅረት መለኪያዎች የመጨረሻውን ነጥብ ይገልጻሉ.

ከተወሰነ የNGINX ውቅር ጋር ለማዛመድ የEnvoy Proxy ውቅር ለመፍጠር እነዚህን አራት አካላት እንጠቀማለን። የመልእክተኛው አላማ ከኤፒአይ እና ከተለዋዋጭ ውቅረት ጋር መስራት ነው። በዚህ አጋጣሚ የመሠረት ውቅር ከNGINX የማይለዋወጡ፣ በደረቅ ኮድ የተደረገባቸው ቅንብሮችን ይጠቀማል።

ደረጃ 2 - የ NGINX ውቅር

የመጀመሪያ ክፍል nginx.conf መዋቀር ያለባቸውን አንዳንድ የ NGINX የውስጥ አካላትን ይገልጻል።

የሰራተኛ ግንኙነቶች

ከታች ያለው ውቅር የሰራተኛ ሂደቶችን እና ግንኙነቶችን ብዛት ይወስናል. ይህ NGINX ፍላጎትን ለማሟላት እንዴት እንደሚመዘን ያሳያል።

worker_processes  2;

events {
  worker_connections   2000;
}

የመልእክት ተኪ የስራ ሂደቶችን እና ግንኙነቶችን በተለያዩ መንገዶች ያስተዳድራል።

መልእክተኛ በስርዓቱ ላይ ለእያንዳንዱ የሃርድዌር ክር የሰራተኛ ክር ይፈጥራል። እያንዳንዱ የሰራተኛ ክር ኃላፊነት ያለበትን የማያግድ የክስተት ምልልስ ያስፈጽማል

  1. እያንዳንዱን አድማጭ ማዳመጥ
  2. አዳዲስ ግንኙነቶችን መቀበል
  3. ለግንኙነት የማጣሪያዎች ስብስብ መፍጠር
  4. በግንኙነቱ የህይወት ዘመን ሁሉንም የI/O ስራዎችን ያስኬዱ።

ሁሉም ተጨማሪ የግንኙነት ሂደቶች ማንኛውንም የማስተላለፊያ ባህሪን ጨምሮ ሙሉ በሙሉ በሠራተኛ ክር ውስጥ ይያዛሉ.

በEnvoy ውስጥ ላለው እያንዳንዱ የሰራተኛ ክር፣ የግንኙነት ገንዳ አለ። ስለዚህ የኤችቲቲፒ/2 ማገናኛ ገንዳዎች በአንድ ጊዜ ለአንድ የውጭ አስተናጋጅ አንድ ግንኙነት ብቻ ይመሰርታሉ፣ አራት የሰራተኛ ክሮች ካሉ በተረጋጋ ሁኔታ ውስጥ በአንድ የውጪ አስተናጋጅ አራት HTTP/2 ግንኙነቶች ይኖራሉ። ሁሉንም ነገር በአንድ የሰራተኛ ክር ውስጥ በማቆየት, ሁሉም ማለት ይቻላል ሁሉም ኮድ ልክ እንደ ነጠላ ክር ያለ እገዳ ሊፃፍ ይችላል. ከአስፈላጊው በላይ ብዙ የሰራተኛ ክሮች ከተመደቡ, ይህ ወደ ብክነት ማህደረ ትውስታ, ብዙ ቁጥር የሌላቸው የስራ ፈት ግንኙነቶችን ይፈጥራል, እና ወደ ገንዳው የሚመለሱትን ግንኙነቶች ቁጥር ይቀንሳል.

ለበለጠ መረጃ ጎብኝ የመልእክተኛ ተኪ ብሎግ.

HTTP ውቅር

የሚከተለው የ NGINX ውቅር እገዳ እንደ HTTP ቅንብሮችን ይገልፃል፡

  • ምን ዓይነት ማይም ዓይነቶች ይደገፋሉ
  • ነባሪ የጊዜ ማብቂያዎች
  • የጂዚፕ ውቅር

በEnvoy Proxy ውስጥ ማጣሪያዎችን በመጠቀም እነዚህን ገጽታዎች ማበጀት ይችላሉ፣ ይህም በኋላ የምንወያይበት።

ደረጃ 3 - የአገልጋይ ውቅር

በኤችቲቲፒ ውቅር ብሎክ ውስጥ፣ የNGINX ውቅር በፖርት 8080 ላይ ለማዳመጥ እና ለገቢ የጎራ ጥያቄዎች ምላሽ ይሰጣል። አንድ.eample.com и www.one.example.com.

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

በውስጥ መልዕክተኛው፣ በአድማጮች ቁጥጥር ስር ነው።

ተላላኪ አድማጮች

በEnvoy Proxy ለመጀመር በጣም አስፈላጊው ገጽታ አድማጮችዎን መግለጽ ነው። የመልእክተኛውን ምሳሌ እንዴት ማሄድ እንደሚፈልጉ የሚገልጽ የውቅር ፋይል መፍጠር ያስፈልግዎታል።

ከታች ያለው ቅንጭብጭብ አዲስ አድማጭ ይፈጥራል እና ከፖርት 8080 ጋር ያስራል፡ ውቅሩ ለሚመጡ ጥያቄዎች ከየትኞቹ ወደቦች ጋር ማያያዝ እንዳለበት ለኢንቮይ ፕሮክሲ ይነግረዋል።

የኢንቮይ ፕሮክሲ ለማዋቀር የ YAML ምልክትን ይጠቀማል። ለዚህ ማስታወሻ መግቢያ፣ እዚህ ይመልከቱ አገናኝ.

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

መግለፅ አያስፈልግም የአገልጋይ_ስም, የEnvoy Proxy filters ይህንን ስለሚያስተናግዱ።

ደረጃ 4 - የአካባቢ ውቅር

ጥያቄ ወደ NGINX ሲመጣ፣ የመገኛ ቦታ እገዳው የትራፊኩን ሂደት እና የት እንደሚሄድ ይወስናል። በሚከተለው ቁርጥራጭ፣ ሁሉም የጣቢያው ትራፊክ ወደ ላይኛው ዥረት ይተላለፋል (የአስተርጓሚ ማስታወሻ፡ ወደላይ አብዛኛው ጊዜ የመተግበሪያ አገልጋይ ነው) ክላስተር ተሰይሟል። ኢላማ ክላስተር. ወደ ላይ ያለው ዘለላ ጥያቄውን ማስተናገድ ያለባቸውን አንጓዎች ይገልጻል። ይህንን በሚቀጥለው ደረጃ እንነጋገራለን.

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

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

በEnvoy፣ ማጣሪያዎች ይህን ያደርጋሉ።

የመልእክት ማጣሪያዎች

ለስታቲስቲክ ውቅረት ማጣሪያዎች ገቢ ጥያቄዎችን እንዴት እንደሚያስተናግዱ ይወስናሉ። በዚህ አጋጣሚ የሚዛመዱ ማጣሪያዎችን እናዘጋጃለን የአገልጋይ_ስሞች በቀደመው ደረጃ. ከተወሰኑ ጎራዎች እና መስመሮች ጋር የሚዛመዱ ገቢ ጥያቄዎች ሲደርሱ፣ ትራፊክ ወደ ክላስተር ይመራል። ይህ ከ 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 በEnvoy Proxy ውስጥ አብሮ የተሰራ ማጣሪያ ነው። ሌሎች ማጣሪያዎች ያካትታሉ Redis, mongo, TCP. ሙሉውን ዝርዝር በ ላይ ማግኘት ይችላሉ። ሰነድ.

ስለ ሌሎች ጭነት ማመጣጠን ፖሊሲዎች የበለጠ መረጃ ለማግኘት ይጎብኙ የተላላኪ ሰነድ.

ደረጃ 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 መልዕክተኛው የተገለጹትን የዲ ኤን ኤስ ኢላማዎች ያለማቋረጥ እና በማይመሳሰል መልኩ ይፈታል። እያንዳንዱ የተመለሰ የአይ ፒ አድራሻ ከዲኤንኤስ ውጤት በላይኛው ተፋሰስ ውስጥ እንደ ግልጽ አስተናጋጅ ይቆጠራል። ይህ ማለት አንድ ጥያቄ ሁለት አይፒ አድራሻዎችን ከመለሰ፣ መልዕክተኛው በክላስተር ውስጥ ሁለት አስተናጋጆች እንዳሉ ያስባል እና ሁለቱም ሚዛናዊ መሆን አለባቸው። አንድ አስተናጋጅ ከውጤቱ ከተወገደ፣ መልዕክተኛው አሁን እንደሌለ ያስባል እና ትራፊክን ከማንኛውም የግንኙነት ገንዳዎች ይጎትታል።

ለበለጠ መረጃ ይመልከቱ የመልእክት ተኪ ሰነድ.

ደረጃ 6 - የመግቢያ መዳረሻ እና ስህተቶች

የመጨረሻው ውቅረት ምዝገባ ነው. የስህተት ምዝግብ ማስታወሻዎችን ወደ ዲስክ ከመግፋት ይልቅ የኢንቮይ ፕሮክሲ ደመናን መሰረት ያደረገ አካሄድ ይወስዳል። ሁሉም የመተግበሪያ ምዝግብ ማስታወሻዎች ይወጣሉ ስቶት и እስቴደር.

ተጠቃሚዎች ጥያቄ ሲያቀርቡ የመዳረሻ ምዝግብ ማስታወሻዎች አማራጭ ናቸው እና በነባሪነት ተሰናክለዋል። ለኤችቲቲፒ ጥያቄዎች የመዳረሻ ምዝግብ ማስታወሻዎችን ለማንቃት አወቃቀሩን አንቃ መዳረሻ_ሎግ ለኤችቲቲፒ ግንኙነት አስተዳዳሪ። መንገዱ እንደ መሳሪያ ሊሆን ይችላል ስቶት, ወይም በዲስክ ላይ ያለ ፋይል, እንደ ፍላጎቶችዎ ይወሰናል.

የሚከተለው ውቅር ሁሉንም የመዳረሻ ምዝግብ ማስታወሻዎች ወደ እሱ ያዞራል። ስቶት (የአስተርጓሚ ማስታወሻ - 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:

በነባሪ፣ ኤንቬይ የኤችቲቲፒ ጥያቄ ዝርዝሮችን ያካተተ የቅርጸት ሕብረቁምፊ አለው፡

[%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_ቅርጸት።. ለምሳሌ:

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; ደህንነትን ለማሻሻል NGINX እንደ ዝቅተኛ መብት ያለው ተጠቃሚ እንደሚያሄድ ይገልጻል።

የመልእክት ተኪ ሂደት የማን እንደሆነ ለማስተዳደር ደመናን መሰረት ያደረገ አካሄድ ይወስዳል። የኢንቮይ ፕሮክሲን በኮንቴይነር ውስጥ ስናካሂድ ዝቅተኛ መብት ያለው ተጠቃሚን መግለፅ እንችላለን።

የተላላኪ ፕሮክሲን በማስጀመር ላይ

ከዚህ በታች ያለው ትዕዛዝ የኢንቮይ ፕሮክሲን በአስተናጋጁ ላይ ባለው Docker ኮንቴይነር በኩል ያስኬዳል። ይህ ትእዛዝ ለመልእክተኛ ወደብ 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

የኤችቲቲፒ ጥያቄ ስህተትን ያስከትላል 503. ይህ የሆነበት ምክንያት የላይኞቹ ግንኙነቶች የማይሰሩ እና የማይገኙ ስለሆኑ ነው። ስለዚህ የመልእክት ተኪ ለጥያቄው ምንም መድረሻዎች የሉትም። የሚከተለው ትዕዛዝ ለመልእክተኛ ከተገለጸው ውቅር ጋር የሚዛመዱ ተከታታይ የኤችቲቲፒ አገልግሎቶችን ይጀምራል።

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

ካሉት አገልግሎቶች ጋር፣ መልእክተኛ በተሳካ ሁኔታ ወደ መድረሻው ትራፊክን ተኪ ማድረግ ይችላል።

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

የትኛው ዶከር ኮንቴነር ጥያቄውን እንዳስተናገደ የሚያመለክት ምላሽ ማየት አለቦት። በEnvoy Proxy ምዝግብ ማስታወሻዎች ውስጥ የመዳረሻ ሕብረቁምፊ ውፅዓትንም ማየት አለብዎት።

ተጨማሪ የኤችቲቲፒ ምላሽ ራስጌዎች

በእውነተኛው ጥያቄ ምላሽ ራስጌዎች ውስጥ ተጨማሪ የኤችቲቲፒ አርዕስቶችን ታያለህ። ራስጌው ወደ ላይ ያለው አስተናጋጅ ጥያቄውን በማስኬድ ያሳለፈውን ጊዜ ያሳያል። በሚሊሰከንዶች ይገለጻል። ደንበኛው ከአውታረ መረብ መዘግየት ጋር ሲነጻጸር የአገልግሎት ጊዜን ለመወሰን ከፈለገ ይህ ጠቃሚ ነው.

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 ውቅረትን እዚያ ላይ ማስቀመጥ ያስፈልግዎታል።

የመልእክተኛ ፕሮክሲን በመጠቀም የቴሌግራም ውይይት አለ፡- https://t.me/envoyproxy_ru

የመልእክት ተኪ የማይንቀሳቀስ ይዘት ማቅረብን አይደግፍም። ስለዚህ ለባህሪው ማን መምረጥ ይችላል፡- https://github.com/envoyproxy/envoy/issues/378

በዳሰሳ ጥናቱ ውስጥ የተመዘገቡ ተጠቃሚዎች ብቻ መሳተፍ ይችላሉ። ስግን እንእባክህን።

ይህ ልጥፍ የተላላኪ ፕሮክሲን እንድትጭን እና እንድትሞክር አበረታቶሃል?

  • አዎ

  • የለም

75 ተጠቃሚዎች ድምጽ ሰጥተዋል። 18 ተጠቃሚዎች ድምፀ ተአቅቦ አድርገዋል።

ምንጭ: hab.com

አስተያየት ያክሉ