Nginx ನಿಂದ ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಗೆ ವಲಸೆ

ಹಲೋ, ಹಬ್ರ್! ಪೋಸ್ಟ್‌ನ ಅನುವಾದವನ್ನು ನಾನು ನಿಮ್ಮ ಗಮನಕ್ಕೆ ತರುತ್ತೇನೆ: Nginx ನಿಂದ ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಗೆ ವಲಸೆ.

ಎನ್ವಾಯ್ ಎಂಬುದು ವೈಯಕ್ತಿಕ ಸೇವೆಗಳು ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ವಿತರಣೆ ಪ್ರಾಕ್ಸಿ ಸರ್ವರ್ ಆಗಿದೆ (C++ ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ), ಇದು ಸಂವಹನ ಬಸ್ ಮತ್ತು "ಸಾರ್ವತ್ರಿಕ ಡೇಟಾ ಪ್ಲೇನ್" ದೊಡ್ಡ ಮೈಕ್ರೋ ಸರ್ವಿಸ್ "ಸೇವೆ ಮೆಶ್" ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಇದನ್ನು ರಚಿಸುವಾಗ, NGINX, HAProxy, ಹಾರ್ಡ್‌ವೇರ್ ಲೋಡ್ ಬ್ಯಾಲೆನ್ಸರ್‌ಗಳು ಮತ್ತು ಕ್ಲೌಡ್ ಲೋಡ್ ಬ್ಯಾಲೆನ್ಸರ್‌ಗಳಂತಹ ಸರ್ವರ್‌ಗಳ ಅಭಿವೃದ್ಧಿಯ ಸಮಯದಲ್ಲಿ ಉದ್ಭವಿಸಿದ ಸಮಸ್ಯೆಗಳಿಗೆ ಪರಿಹಾರಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತದೆ. ಎನ್ವಾಯ್ ಪ್ರತಿ ಅಪ್ಲಿಕೇಶನ್ ಜೊತೆಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಅನ್ನು ಲೆಕ್ಕಿಸದೆ ಸಾಮಾನ್ಯ ಕಾರ್ಯವನ್ನು ಒದಗಿಸಲು ನೆಟ್‌ವರ್ಕ್ ಅನ್ನು ಅಮೂರ್ತಗೊಳಿಸುತ್ತದೆ. ಮೂಲಸೌಕರ್ಯದಲ್ಲಿನ ಎಲ್ಲಾ ಸೇವಾ ದಟ್ಟಣೆಯು ಎನ್ವಾಯ್ ಮೆಶ್ ಮೂಲಕ ಹರಿಯುವಾಗ, ಸಮಸ್ಯೆಯ ಪ್ರದೇಶಗಳನ್ನು ಸ್ಥಿರವಾದ ವೀಕ್ಷಣೆಯೊಂದಿಗೆ ದೃಶ್ಯೀಕರಿಸುವುದು, ಒಟ್ಟಾರೆ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಟ್ಯೂನ್ ಮಾಡುವುದು ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಸ್ಥಳದಲ್ಲಿ ಪ್ರಮುಖ ಕಾರ್ಯವನ್ನು ಸೇರಿಸುವುದು ಸುಲಭವಾಗುತ್ತದೆ.

ವೈಶಿಷ್ಟ್ಯಗಳು

  • ಪ್ರಕ್ರಿಯೆಯಿಂದ ಹೊರಗಿರುವ ಆರ್ಕಿಟೆಕ್ಚರ್: ರಾಯಭಾರಿಯು ಸ್ವಯಂ-ಒಳಗೊಂಡಿರುವ, ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ಸರ್ವರ್ ಆಗಿದ್ದು ಅದು ಸಣ್ಣ ಪ್ರಮಾಣದ RAM ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಇದು ಯಾವುದೇ ಅಪ್ಲಿಕೇಶನ್ ಭಾಷೆ ಅಥವಾ ಚೌಕಟ್ಟಿನ ಜೊತೆಯಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
  • 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 ನೀಡುವ ಪ್ರಮುಖ ಮೂಲಸೌಕರ್ಯವನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಕೋರ್ ಹೀಗಿದೆ:

  • ಕೇಳುಗರು: ಒಳಬರುವ ವಿನಂತಿಗಳನ್ನು ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿ ಹೇಗೆ ಸ್ವೀಕರಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅವರು ನಿರ್ಧರಿಸುತ್ತಾರೆ. ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿ ಪ್ರಸ್ತುತ TCP ಆಧಾರಿತ ಕೇಳುಗರನ್ನು ಮಾತ್ರ ಬೆಂಬಲಿಸುತ್ತದೆ. ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ, ಅದನ್ನು ಪ್ರಕ್ರಿಯೆಗಾಗಿ ಫಿಲ್ಟರ್‌ಗಳ ಗುಂಪಿಗೆ ರವಾನಿಸಲಾಗುತ್ತದೆ.
  • ಫಿಲ್ಟರ್‌ಗಳು: ಒಳಬರುವ ಮತ್ತು ಹೊರಹೋಗುವ ಡೇಟಾವನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಬಹುದಾದ ಪೈಪ್‌ಲೈನ್ ಆರ್ಕಿಟೆಕ್ಚರ್‌ನ ಭಾಗವಾಗಿದೆ. ಈ ಕಾರ್ಯವು Gzip ನಂತಹ ಫಿಲ್ಟರ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಇದು ಕ್ಲೈಂಟ್‌ಗೆ ಕಳುಹಿಸುವ ಮೊದಲು ಡೇಟಾವನ್ನು ಸಂಕುಚಿತಗೊಳಿಸುತ್ತದೆ.
  • ಮಾರ್ಗನಿರ್ದೇಶಕಗಳು: ಅವರು ಕ್ಲಸ್ಟರ್ ಎಂದು ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಅಗತ್ಯವಿರುವ ಗಮ್ಯಸ್ಥಾನಕ್ಕೆ ಸಂಚಾರವನ್ನು ರವಾನಿಸುತ್ತಾರೆ.
  • ಸಮೂಹಗಳು: ಅವರು ಟ್ರಾಫಿಕ್ ಮತ್ತು ಕಾನ್ಫಿಗರೇಶನ್ ನಿಯತಾಂಕಗಳಿಗಾಗಿ ಅಂತಿಮ ಬಿಂದುವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತಾರೆ.

ನಿರ್ದಿಷ್ಟ NGINX ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಹೊಂದಿಸಲು ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ರಚಿಸಲು ನಾವು ಈ ನಾಲ್ಕು ಘಟಕಗಳನ್ನು ಬಳಸುತ್ತೇವೆ. ಎಪಿಐಗಳು ಮತ್ತು ಡೈನಾಮಿಕ್ ಕಾನ್ಫಿಗರೇಶನ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು ರಾಯಭಾರಿಯ ಗುರಿಯಾಗಿದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಮೂಲ ಸಂರಚನೆಯು NGINX ನಿಂದ ಸ್ಥಿರ, ಹಾರ್ಡ್-ಕೋಡೆಡ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬಳಸುತ್ತದೆ.

ಹಂತ 2 - NGINX ಕಾನ್ಫಿಗರೇಶನ್

ಮೊದಲ ಭಾಗ nginx.conf ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾದ ಕೆಲವು NGINX ಇಂಟರ್ನಲ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.

ಕಾರ್ಮಿಕರ ಸಂಪರ್ಕಗಳು

ಕೆಳಗಿನ ಸಂರಚನೆಯು ಕೆಲಸಗಾರರ ಪ್ರಕ್ರಿಯೆಗಳು ಮತ್ತು ಸಂಪರ್ಕಗಳ ಸಂಖ್ಯೆಯನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ಬೇಡಿಕೆಯನ್ನು ಪೂರೈಸಲು NGINX ಹೇಗೆ ಅಳೆಯುತ್ತದೆ ಎಂಬುದನ್ನು ಇದು ಸೂಚಿಸುತ್ತದೆ.

worker_processes  2;

events {
  worker_connections   2000;
}

ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿ ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿ ವರ್ಕ್‌ಫ್ಲೋಗಳು ಮತ್ತು ಸಂಪರ್ಕಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.

ಸಿಸ್ಟಂನಲ್ಲಿನ ಪ್ರತಿ ಹಾರ್ಡ್‌ವೇರ್ ಥ್ರೆಡ್‌ಗೆ ಎನ್ವಾಯ್ ವರ್ಕರ್ ಥ್ರೆಡ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ. ಪ್ರತಿ ವರ್ಕರ್ ಥ್ರೆಡ್ ಜವಾಬ್ದಾರರಾಗಿರುವ ತಡೆರಹಿತ ಈವೆಂಟ್ ಲೂಪ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ

  1. ಪ್ರತಿ ಕೇಳುಗನನ್ನು ಆಲಿಸುವುದು
  2. ಹೊಸ ಸಂಪರ್ಕಗಳನ್ನು ಸ್ವೀಕರಿಸಲಾಗುತ್ತಿದೆ
  3. ಸಂಪರ್ಕಕ್ಕಾಗಿ ಫಿಲ್ಟರ್‌ಗಳ ಗುಂಪನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ
  4. ಸಂಪರ್ಕದ ಜೀವಿತಾವಧಿಯಲ್ಲಿ ಎಲ್ಲಾ I/O ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ.

ಯಾವುದೇ ಫಾರ್ವರ್ಡ್ ಮಾಡುವ ನಡವಳಿಕೆಯನ್ನು ಒಳಗೊಂಡಂತೆ ಎಲ್ಲಾ ಮುಂದಿನ ಸಂಪರ್ಕ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ವರ್ಕರ್ ಥ್ರೆಡ್‌ನಲ್ಲಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ.

ಎನ್ವಾಯ್ನಲ್ಲಿನ ಪ್ರತಿ ಕೆಲಸಗಾರ ಥ್ರೆಡ್ಗೆ, ಪೂಲ್ನಲ್ಲಿ ಸಂಪರ್ಕವಿದೆ. ಆದ್ದರಿಂದ HTTP/2 ಸಂಪರ್ಕ ಪೂಲ್‌ಗಳು ಒಂದು ಸಮಯದಲ್ಲಿ ಬಾಹ್ಯ ಹೋಸ್ಟ್‌ಗೆ ಒಂದು ಸಂಪರ್ಕವನ್ನು ಮಾತ್ರ ಸ್ಥಾಪಿಸುತ್ತವೆ, ನಾಲ್ಕು ವರ್ಕರ್ ಥ್ರೆಡ್‌ಗಳಿದ್ದರೆ ಸ್ಥಿರ ಸ್ಥಿತಿಯಲ್ಲಿ ಪ್ರತಿ ಬಾಹ್ಯ ಹೋಸ್ಟ್‌ಗೆ ನಾಲ್ಕು HTTP/2 ಸಂಪರ್ಕಗಳು ಇರುತ್ತವೆ. ಎಲ್ಲವನ್ನೂ ಒಂದೇ ವರ್ಕರ್ ಥ್ರೆಡ್‌ನಲ್ಲಿ ಇರಿಸುವ ಮೂಲಕ, ಬಹುತೇಕ ಎಲ್ಲಾ ಕೋಡ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸದೆ ಬರೆಯಬಹುದು, ಅದು ಒಂದೇ ಥ್ರೆಡ್‌ನಂತೆ. ಅಗತ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚು ವರ್ಕರ್ ಥ್ರೆಡ್‌ಗಳನ್ನು ನಿಯೋಜಿಸಿದರೆ, ಇದು ವ್ಯರ್ಥವಾದ ಮೆಮೊರಿಗೆ ಕಾರಣವಾಗಬಹುದು, ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ಐಡಲ್ ಸಂಪರ್ಕಗಳನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ ಮತ್ತು ಸಂಪರ್ಕಗಳನ್ನು ಪೂಲ್‌ಗೆ ಹಿಂತಿರುಗಿಸುವ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ಭೇಟಿ ನೀಡಿ ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿ ಬ್ಲಾಗ್.

HTTP ಕಾನ್ಫಿಗರೇಶನ್

ಕೆಳಗಿನ NGINX ಕಾನ್ಫಿಗರೇಶನ್ ಬ್ಲಾಕ್ HTTP ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ:

  • ಯಾವ ಮೈಮ್ ಪ್ರಕಾರಗಳನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ
  • ಡೀಫಾಲ್ಟ್ ಸಮಯಾವಧಿಗಳು
  • Gzip ಕಾನ್ಫಿಗರೇಶನ್

ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಯಲ್ಲಿ ಫಿಲ್ಟರ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನೀವು ಈ ಅಂಶಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಬಹುದು, ಅದನ್ನು ನಾವು ನಂತರ ಚರ್ಚಿಸುತ್ತೇವೆ.

ಹಂತ 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 }

ವ್ಯಾಖ್ಯಾನಿಸುವ ಅಗತ್ಯವಿಲ್ಲ ಸರ್ವರ್ ಹೆಸರು, ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿ ಫಿಲ್ಟರ್‌ಗಳು ಇದನ್ನು ನಿರ್ವಹಿಸುವುದರಿಂದ.

ಹಂತ 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 ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಯಲ್ಲಿ ಅಂತರ್ನಿರ್ಮಿತ ಫಿಲ್ಟರ್ ಆಗಿದೆ. ಇತರ ಫಿಲ್ಟರ್‌ಗಳು ಸೇರಿವೆ ಕೆಂಪು, ಮೊಂಗೋ, 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 ದೂತರು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ DNS ಗುರಿಗಳನ್ನು ನಿರಂತರವಾಗಿ ಮತ್ತು ಅಸಮಕಾಲಿಕವಾಗಿ ಪರಿಹರಿಸುತ್ತಾರೆ. DNS ಫಲಿತಾಂಶದಿಂದ ಹಿಂದಿರುಗಿದ ಪ್ರತಿಯೊಂದು IP ವಿಳಾಸವನ್ನು ಅಪ್‌ಸ್ಟ್ರೀಮ್ ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಸ್ಪಷ್ಟವಾದ ಹೋಸ್ಟ್ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಇದರರ್ಥ ವಿನಂತಿಯು ಎರಡು IP ವಿಳಾಸಗಳನ್ನು ಹಿಂದಿರುಗಿಸಿದರೆ, ಕ್ಲಸ್ಟರ್‌ನಲ್ಲಿ ಎರಡು ಹೋಸ್ಟ್‌ಗಳು ಇವೆ ಎಂದು ದೂತರು ಊಹಿಸುತ್ತಾರೆ ಮತ್ತು ಎರಡೂ ಲೋಡ್ ಸಮತೋಲನದಲ್ಲಿರಬೇಕು. ಫಲಿತಾಂಶದಿಂದ ಹೋಸ್ಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿದರೆ, ಅದು ಇನ್ನು ಮುಂದೆ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ ಎಂದು ದೂತರು ಊಹಿಸುತ್ತಾರೆ ಮತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಯಾವುದೇ ಸಂಪರ್ಕ ಪೂಲ್‌ಗಳಿಂದ ದಟ್ಟಣೆಯನ್ನು ಎಳೆಯುತ್ತಾರೆ.

ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ ನೋಡಿ ಪ್ರತಿನಿಧಿ ಪ್ರಾಕ್ಸಿ ದಸ್ತಾವೇಜನ್ನು.

ಹಂತ 6 - ಲಾಗ್ ಪ್ರವೇಶ ಮತ್ತು ದೋಷಗಳು

ಅಂತಿಮ ಸಂರಚನೆಯು ನೋಂದಣಿಯಾಗಿದೆ. ದೋಷ ಲಾಗ್‌ಗಳನ್ನು ಡಿಸ್ಕ್‌ಗೆ ತಳ್ಳುವ ಬದಲು, ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿ ಕ್ಲೌಡ್-ಆಧಾರಿತ ವಿಧಾನವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್ ಲಾಗ್‌ಗಳು ಔಟ್‌ಪುಟ್ ಆಗಿವೆ stdout и stderr.

ಬಳಕೆದಾರರು ವಿನಂತಿಯನ್ನು ಮಾಡಿದಾಗ, ಪ್ರವೇಶ ಲಾಗ್‌ಗಳು ಐಚ್ಛಿಕವಾಗಿರುತ್ತವೆ ಮತ್ತು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ. HTTP ವಿನಂತಿಗಳಿಗಾಗಿ ಪ್ರವೇಶ ಲಾಗ್‌ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ ಪ್ರವೇಶ_ಲಾಗ್ HTTP ಸಂಪರ್ಕ ನಿರ್ವಾಹಕಕ್ಕಾಗಿ. ಮಾರ್ಗವು ಅಂತಹ ಸಾಧನವಾಗಿರಬಹುದು stdout, ಅಥವಾ ನಿಮ್ಮ ಅವಶ್ಯಕತೆಗಳನ್ನು ಅವಲಂಬಿಸಿ ಡಿಸ್ಕ್‌ನಲ್ಲಿರುವ ಫೈಲ್.

ಕೆಳಗಿನ ಸಂರಚನೆಯು ಎಲ್ಲಾ ಪ್ರವೇಶ ಲಾಗ್‌ಗಳನ್ನು ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ stdout (ಅನುವಾದಕರ ಟಿಪ್ಪಣಿ - ಡಾಕರ್‌ನ ಒಳಗೆ ರಾಯಭಾರಿಯನ್ನು ಬಳಸಲು 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 ವಿನಂತಿಯ ವಿವರಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಫಾರ್ಮ್ಯಾಟ್ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಹೊಂದಿದೆ:

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

ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಒಳನೋಟವನ್ನು ಪಡೆಯಲು ಲಾಗಿಂಗ್ ಒಂದೇ ಮಾರ್ಗವಲ್ಲ. ಇದು ಸುಧಾರಿತ ಟ್ರ್ಯಾಕಿಂಗ್ ಮತ್ತು ಮೆಟ್ರಿಕ್ಸ್ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಹೊಂದಿದೆ. ನಲ್ಲಿ ನೀವು ಹೆಚ್ಚಿನದನ್ನು ಕಂಡುಹಿಡಿಯಬಹುದು ದಸ್ತಾವೇಜನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ಅಥವಾ ಮೂಲಕ ಇಂಟರಾಕ್ಟಿವ್ ಟ್ರೇಸಿಂಗ್ ಸ್ಕ್ರಿಪ್ಟ್.

ಹಂತ 7 - ಉಡಾವಣೆ

ನೀವು ಈಗ ನಿಮ್ಮ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು NGINX ನಿಂದ ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಗೆ ಸ್ಥಳಾಂತರಿಸಿದ್ದೀರಿ. ಅದನ್ನು ಪರೀಕ್ಷಿಸಲು ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿ ನಿದರ್ಶನವನ್ನು ಪ್ರಾರಂಭಿಸುವುದು ಕೊನೆಯ ಹಂತವಾಗಿದೆ.

ಬಳಕೆದಾರರಂತೆ ರನ್ ಮಾಡಿ

NGINX ಕಾನ್ಫಿಗರೇಶನ್ ಲೈನ್‌ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಬಳಕೆದಾರ www www; ಭದ್ರತೆಯನ್ನು ಸುಧಾರಿಸಲು ಕಡಿಮೆ-ಸವಲತ್ತು ಹೊಂದಿರುವ ಬಳಕೆದಾರರಂತೆ NGINX ಅನ್ನು ಚಲಾಯಿಸಲು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.

ಪ್ರಕ್ರಿಯೆಯ ಮಾಲೀಕತ್ವವನ್ನು ನಿರ್ವಹಿಸಲು ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿ ಕ್ಲೌಡ್-ಆಧಾರಿತ ವಿಧಾನವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನಾವು ಕಂಟೇನರ್ ಮೂಲಕ ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಯನ್ನು ರನ್ ಮಾಡಿದಾಗ, ನಾವು ಕಡಿಮೆ ಸವಲತ್ತು ಹೊಂದಿರುವ ಬಳಕೆದಾರರನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು.

ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಯನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ

ಕೆಳಗಿನ ಆಜ್ಞೆಯು ಹೋಸ್ಟ್‌ನಲ್ಲಿ ಡಾಕರ್ ಕಂಟೇನರ್ ಮೂಲಕ ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಯನ್ನು ರನ್ ಮಾಡುತ್ತದೆ. ಈ ಆಜ್ಞೆಯು ಪೋರ್ಟ್ 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

ವಿನಂತಿಯನ್ನು ಯಾವ ಡಾಕರ್ ಕಂಟೇನರ್ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದೆ ಎಂಬುದನ್ನು ಸೂಚಿಸುವ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನೀವು ನೋಡಬೇಕು. ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿ ಲಾಗ್‌ಗಳಲ್ಲಿ ನೀವು ಪ್ರವೇಶ ಸ್ಟ್ರಿಂಗ್ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಸಹ ನೋಡಬೇಕು.

ಹೆಚ್ಚುವರಿ 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 }

ಅನುವಾದಕರಿಂದ ಹೆಚ್ಚುವರಿ ಮಾಹಿತಿ

ಎನ್ವಾಯ್ ಪ್ರಾಕ್ಸಿಯನ್ನು ಸ್ಥಾಪಿಸಲು ಸೂಚನೆಗಳನ್ನು ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ಕಾಣಬಹುದು 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

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ