เบ—เบนเบ”. 1. เบšเบปเบ”เปเบ™เบฐเบ™เบณ

เบŠเบปเบกเป€เบŠเบตเบ! เบ™เบตเป‰เปเบกเปˆเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบชเบฑเป‰เบ™เป†เบ—เบตเปˆเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบก: "เบ—เบนเบ”เปเบกเปˆเบ™เบซเบเบฑเบ‡?", "เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡?" เปเบฅเบฐ "เบšเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™?".

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ™เบตเป‰

Envoy เปเบกเปˆเบ™เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡ L4-L7 เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ C++, เป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡ เปเบฅเบฐเบ„เบงเบฒเบกเบžเป‰เบญเบก. เปƒเบ™เบญเบตเบเบ”เป‰เบฒเบ™เบซเบ™เบถเปˆเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เปƒเบ™เบšเบฒเบ‡เบ—เบฒเบ‡เป€เบ›เบฑเบ™ analogue เบ‚เบญเบ‡ nginx เปเบฅเบฐ haproxy, เบ›เบฝเบšเบ—เบฝเบšเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ. เปƒเบ™เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก, เบกเบฑเบ™เปเบกเปˆเบ™เบเบฒเบ™เบฎเบฑเบ”เบเบธเบกเบซเบผเบฒเบเบ‚เบทเป‰เบ™เป„เบ›เบชเบนเปˆเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเบธเบฅเบฐเบžเบฒเบเปเบฅเบฐเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบšเปเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบเบงเปˆเบฒ java เปเบฅเบฐ go balancers, เป€เบŠเบฑเปˆเบ™ zuul เบซเบผเบท traefik.

เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ›เบฝเบšเบ—เบฝเบšเบ‚เบญเบ‡ haproxy/nginx/envoy, เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบญเป‰เบฒเบ‡เบงเปˆเบฒเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡, เปเบ•เปˆเปƒเบซเป‰เบฎเบนเบšเบžเบฒเบšเบ—เบปเปˆเบงเป„เบ›.

nginx
เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™
เบชเบปเปˆเบ‡
traefik

เบ”เบฒเบงเปƒเบ™ github
11.2k/เบเบฐเบˆเบปเบ
1.1k/เบเบฐเบˆเบปเบ
12.4k
27.6k

เบ‚เบฝเบ™เปƒเบ™
C
C
C ++
go

API
เบšเปเปˆโ€‹เบกเบต
เป€เบ•เบปเป‰เบฒเบฎเบฑเบšเบžเบฝเบ‡เปเบ•เปˆ / เบเบนเป‰
dataplane/เบ”เบถเบ‡
เบ”เบถเบ‡

เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบชเบธโ€‹เบ‚เบฐโ€‹เบžเบฒเบšโ€‹เบขเปˆเบฒเบ‡โ€‹เบซเป‰เบฒเบงโ€‹เบซเบฑเบ™โ€‹
เบšเปเปˆโ€‹เบกเบต
เปเบกเปˆเบ™โ€‹เปเบฅเป‰เบง
เปเบกเปˆเบ™โ€‹เปเบฅเป‰เบง
เปเบกเปˆเบ™โ€‹เปเบฅเป‰เบง

เป€เบ›เบตเบ”เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก
เบ›เบฅเบฑเบเบญเบดเบ™เบžเบฒเบเบ™เบญเบ
เบšเปเปˆโ€‹เบกเบต
เปเบกเปˆเบ™โ€‹เปเบฅเป‰เบง
เปเบกเปˆเบ™โ€‹เปเบฅเป‰เบง

J.W.T.
เบ›เบฅเบฑเบเบญเบดเบ™เบžเบฒเบเบ™เบญเบ
เบšเปเปˆโ€‹เบกเบต
เปเบกเปˆเบ™โ€‹เปเบฅเป‰เบง
เบšเปเปˆโ€‹เบกเบต

เบ™เบฒเบกเบชเบฐเบเบธเบ™
Lua/C
Lua/C
Lua/C++
เบšเปเปˆโ€‹เบกเบต

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡

เบ™เบตเป‰เปเบกเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™เป„เบงเบซเบ™เบธเปˆเบก, เบกเบตเบซเบผเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›, เบšเบฒเบ‡เบญเบฑเบ™เปƒเบ™เบ•เบปเป‰เบ™เบ›เบต. เปเบ•เปˆ เบชเบปเปˆเบ‡, เบเบฑเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเป„เบงเบซเบ™เบธเปˆเบกเบ‚เบญเบ‡เบ•เบปเบ™, เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เป„เบงเบงเบฒเปเบฅเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ: เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบซเบผเบฒเบ, เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‡เปˆเบฒเบเบ”เบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™เบ•เบปเบงเบเบญเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡.
เบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ™เบตเป‰, เปเบ•เปˆเบ—เปเบฒเบญเบดเบ”เบกเบต 2 antipatterns:

  • เบเบฒเบ™เบซเบปเบ”เบ•เบปเบงเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ.

เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบขเบนเปˆเปƒเบ™ เบชเบปเปˆเบ‡ เบšเปเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เบซเบ™เบฑเบšโ€‹เบชเบฐโ€‹เบซเบ™เบนเบ™โ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹. เบžเบงเบ Google เบเปเบฒเบฅเบฑเบ‡เบžเบฐเบเบฒเบเบฒเบกเบ™เบตเป‰ เปเบเป‰เป„เบ‚. เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบฑเป‰เบ‡เบ”เบฝเบง เบชเบปเปˆเบ‡ subtleties เบ—เบฑเบ‡เบซเบกเบปเบ” (เบซเบปเบงเบชเบงเบ™เบชเบฑเบ”) เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก RFC, เปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฐเป€เบžเบฒเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš. เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบšเปเปˆเบกเบตเป€เบžเบ”;, เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒ, PR เป€เบ›เบตเบ” (เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ‚เป‰เบญเบเบ‚เบฝเบ™เบšเบปเบ”เบ„เบงเบฒเบก PR, PR froze, เปเบ•เปˆเบˆเบธเบ”เบ™เบตเป‰เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡).

เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เปƒเบŠเป‰ nginx เบชเปเบฒเบฅเบฑเบš statics.

  • เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™, เปเบ•เปˆ เบชเบปเปˆเบ‡ เบ™เบฑเป‰เบ™เบšเปเปˆเปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบš. เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบ–เบทเบเป€เบ›เบตเบ”เป€เบœเบตเบ. เบกเบตเบซเบผเบฒเบเบŠเปˆเบงเบ‡เป€เบงเบฅเบฒ:

เป€เบกเบทเปˆเบญเปเบเป‰เป„เบ‚เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบ™ yaml, เป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบœเบดเบ”, เบ”เบนเบ–เบนเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ”เป‰เบงเบเบ„เปเบฒเป€เบงเบปเป‰เบฒเปเบฅเบฐเบ„เบดเบ”เบงเปˆเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ nginx / haproxy, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบซเบ™เป‰เบญเบ, เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒ. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบˆเบธเบ”. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡ Nginx เปเบฅเบฐ Haproxy เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เบฑเบ”เปเบเป‰เบ”เป‰เบงเบเบกเบท, เปเบฅเบฐ เบชเบปเปˆเบ‡ เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”เบˆเบฒเบเบฅเบฐเบซเบฑเบ”. เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปเบกเปˆเบ™โ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เปƒเบ™โ€‹ เบ•เบปเป‰เบ™เปเบšเบš, เบเบฒเบ™เบชเป‰เบฒเบ‡เบกเบฑเบ™เบˆเบฒเบเป„เบŸเบฅเปŒ proto เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”.

Canary, b/g deploy scenarios and much more เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบชเบฐเบ–เบดเบ•เบด, เบžเบงเบเป€เบฎเบปเบฒเบ—เบธเบเบ„เบปเบ™เป€เบฎเบฑเบ”เบกเบฑเบ™. เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เปƒเบชเปˆ crutches, เปƒเบ™เปƒเบ”เป†เบ‚เบญเบ‡ balancers, เปƒเบ™ เบชเบปเปˆเบ‡ เบฅเบงเบกเบ—เบฑเบ‡.

เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆ Envoy เปเบกเปˆเบ™เบ‚เบฒเบ”เบšเปเปˆเป„เบ”เป‰:

  • เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปƒเบ™เบฅเบฐเบšเบปเบšเบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบ™เบตเป‰เบ›เบฐเบเบญเบšเบกเบตเบ•เบฒเบซเบ™เปˆเบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เปเบ•เปˆเบกเบฑเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡.
  • เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เปเบˆเบเบขเบฒเบ, เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบทเบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™ เบชเบปเปˆเบ‡ เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡เบซเบผเบทเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เบชเบฐเบ”เบงเบ, เปเบ•เปˆเปƒเบ™ nginx / haproxy เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ–เบทเบเบฅเป‰เบญเบกเบฎเบญเบšเบ”เป‰เบงเบ lua เปเบฅเบฐ plugins เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ‡เป„เบช.

เบ—เบฑเบ‡เบชเบญเบ‡, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เปƒเบซเป‰เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰

Envoy เปเบกเปˆเบ™เปเบˆเบเบขเบฒเบเบขเบนเปˆเปƒเบ™เบชเบญเบ‡เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบฎเบนเบš docker. เบฎเบนเบšเบžเบฒเบšเบกเบตเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเปเบฅเป‰เบง. เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบปเบ™เปƒเบˆเบกเบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเป‚เบ„เบ‡เบชเป‰เบฒเบ‡.

envoy.yaml เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเบฐเบ–เบดเบ”

static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        protocol: TCP
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                route:
                  host_rewrite: www.google.com
                  cluster: service_google
          http_filters:
          - name: envoy.router
  clusters:
  - name: service_google
    connect_timeout: 0.25s
    type: LOGICAL_DNS
    # Comment out the following line to test on v6 networks
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: service_google
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: www.google.com
                port_value: 443
    transport_socket:
      name: envoy.transport_sockets.tls
      typed_config:
        "@type": type.googleapis.com/envoy.api.v2.auth.UpstreamTlsContext
        sni: www.google.com

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป„เบ”เบ™เบฒเบกเบดเบ

เบšเบฑเบ™เบซเบฒเปƒเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบŠเบญเบเบซเบฒเบงเบดเบ—เบตเปเบเป‰เป„เบ‚? เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบžเบฝเบ‡เปเบ•เปˆเป‚เบซเบผเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ load balancer เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”; เบšเบฑเบ™เบซเบฒ "เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ" เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™:

  • เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ.

config เบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบ, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒ overload เบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบง, เป‚เบญเบเบฒเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบšเบฒเบ‡เบšเปˆเบญเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

  • เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบกเบตเบญเบฒเบเบธเบเบฒเบงเบ™เบฒเบ™.

เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบœเบนเป‰เบŸเบฑเบ‡เปƒเบซเบกเปˆ, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบšเบดเปˆเบ‡เปเบเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบญเบฑเบ™เป€เบเบปเปˆเบฒ; เบ–เป‰เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบเบตเบ”เบ‚เบทเป‰เบ™เป€เบฅเบทเป‰เบญเบเป†เปเบฅเบฐเบกเบตเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบเบฒเบงเบ™เบฒเบ™, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบŠเบญเบเบซเบฒเบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบก. เบชเบฐเบšเบฒเบเบ”เบต, kubernetes ingress on nginx.

  • เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™.

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบžเบงเบเบกเบฑเบ™เบชเบญเบ‡เบ„เบฑเป‰เบ‡เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบซเบกเปˆเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™. เบ–เป‰เบฒเบกเบตเบ™เป‰เปเบฒเบซเบผเบฒเบ, เบ™เบตเป‰เปƒเบŠเป‰เป€เบงเบฅเบฒ. เบชเบฐเบšเบฒเบเบ”เบต haproxy.

เบ™เบตเป‰เบ–เบทเบเปเบเป‰เป„เบ‚เปเบ™เบงเปƒเบ”เปƒเบ™ เบชเบปเปˆเบ‡เป‚เบ”เบเบเบฒเบ™เป‚เบซเบผเบ” config เปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบ, เบญเบตเบ‡เบ•เบฒเบกเบฎเบนเบšเปเบšเบšเบชเบฐเบ™เบธเบเป€เบเบต, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบกเบฑเบ™เบญเบญเบเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบฅเบฐเบšเปเปˆ re-initialize เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบœเบนเป‰เบŸเบฑเบ‡, เป€เบŠเบดเปˆเบ‡เบฅเบฒเบ„เบฒเปเบžเบ‡เบ—เบตเปˆเบˆเบฐ reinitialize เปเบฅเบฐเบšเปเปˆเบ„เปˆเบญเบเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ เบชเบปเปˆเบ‡ (เบˆเบฒเบเป„เบŸเบฅเปŒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡) เบกเบตเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบœเบนเป‰เบŸเบฑเบ‡ โ€” เบœเบนเป‰เบŸเบฑเบ‡เบ—เบตเปˆเบซเป‰เบญเบเปƒเบชเปˆ ip/port เบชเบฐเป€เบžเบฒเบฐ
  • เป€เบˆเบปเป‰เบฒเบžเบฒเบš virtual - เป€เบˆเบปเป‰เบฒเบžเบฒเบš virtual เป‚เบ”เบเบŠเบทเปˆเป‚เบ”เป€เบกเบ™
  • เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ - เบเบปเบ”โ€‹เบฅเบฐโ€‹เบšเบฝเบšโ€‹เบเบฒเบ™โ€‹เบ”เบธเปˆเบ™โ€‹เบ”เปˆเบฝเบ‡โ€‹
  • เบเบธเปˆเบก - เบเบธเปˆเบกเบ‚เบญเบ‡เบชเบฒเบเบ™เป‰เปเบฒเบ—เบตเปˆเบกเบตเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡
  • endpoint โ€” เบ—เบตเปˆโ€‹เบขเบนเปˆโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เบ•เบปเป‰เบ™โ€‹เบ•เปโ€‹

เปเบ•เปˆเบฅเบฐเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเบงเบเบเบฑเบšเบšเบฒเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบญเบทเปˆเบ™เป†เบชเบฒเบกเบฒเบ”เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบ; เบชเปเบฒเบฅเบฑเบšเบ™เบตเป‰, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเปเบฒเบ™เบปเบ”เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบšเปเบฅเบดเบเบฒเบ™เบˆเบฒเบเบšเปˆเบญเบ™เบ—เบตเปˆ config เบˆเบฐเป„เบ”เป‰เบฎเบฑเบš. เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบชเบฒเบกเบฒเบ” REST เบซเบผเบท gRPC, gRPC เปเบกเปˆเบ™เบ”เบตเบเบงเปˆเบฒ.

เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบกเบตเบŠเบทเปˆเบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš: LDS, VHDS, RDS, CDS เปเบฅเบฐ EDS. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเบกเบ—เบปเบšเบเบฒเบ™เบ›เบฑเบšเบ„เปˆเบฒเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ เปเบฅเบฐเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เป‚เบ”เบเบกเบตเบ‚เปเป‰เบˆเบณเบเบฑเบ”เบ—เบตเปˆเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบšเปเปˆเบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ.

เบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบกเบฑเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฒเบกเบšเปเบฅเบดเบเบฒเบ™เบชเบธเบ”เบ—เป‰เบฒเบ, เบžเบงเบเบกเบฑเบ™เบ–เบทเบเป€เบญเบตเป‰เบ™เบงเปˆเบฒ ADS (Aggregated Discovery Service), เบชเปเบฒเบฅเบฑเบš java เปเบฅเบฐเป„เบ›เบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบ‚เบญเบ‡เปเบœเบ™เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™ gRPC เบ—เบตเปˆเบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเบงเบฑเบ”เบ–เบธเบˆเบฒเบเปเบซเบผเปˆเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹เบกเบตโ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

envoy.yaml เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง

dynamic_resources:
  ads_config:
    api_type: GRPC
    grpc_services:
      envoy_grpc:
        cluster_name: xds_clr
  cds_config:
    ads: {}
static_resources:
  listeners:
  - name: listener_0
    address:
      socket_address:
        protocol: TCP
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
          stat_prefix: ingress_http
          rds:
            route_config_name: local_route
            config_source:
              ads: {}
          http_filters:
          - name: envoy.router
  clusters:
  - name: xds_clr
    connect_timeout: 0.25s
    type: LOGICAL_DNS
    dns_lookup_family: V4_ONLY
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: xds_clr
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: xds
                port_value: 6565

เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ เบชเบปเปˆเบ‡ เบ”เป‰เบงเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰, เบกเบฑเบ™เบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบเบปเบ™เบ„เบงเบšเบ„เบธเบกเปเบฅเบฐเบžเบฐเบเบฒเบเบฒเบกเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ RDS, CDS เปเบฅเบฐ EDS. เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปเบกเปˆเบ™เบญเบฐเบ—เบดเบšเบฒเบ เบ—เบตเปˆเบ™เบตเป‰.

เปƒเบ™เบชเบฑเป‰เบ™, เบชเบปเปˆเบ‡ เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เบตเปˆเบŠเบตเป‰เบšเบญเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบ–เบทเบเบฎเป‰เบญเบ‡เบ‚เป, เบฎเบธเปˆเบ™เปเบฅเบฐเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ‚เบญเบ‡ node. เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบญเบšโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹, เบกเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบŠเบฑเบšโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบญเบ™โ€‹เปเบฅเบฐโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบซเบ™เบถเปˆเบ‡โ€‹; เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เปƒเบ™โ€‹เบเบปเบ™โ€‹เบ„เบงเบšโ€‹เบ„เบธเบกโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹, เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เบ•เบญเบšโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹.
เบกเบต 4 เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบš:

  • เบซเบ™เบถเปˆเบ‡ gRPC stream เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™, เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเป€เบ•เบฑเบกเบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปเบกเปˆเบ™เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›.
  • เปเบเบเบเบฐเปเบชเป„เบŸเบŸเป‰เบฒ, เบชเบฐเบžเบฒเบšเป€เบ•เบฑเบก.
  • เบ™เบถเปˆเบ‡เบเบฐเปเบช, เบชเบฐเบ–เบฒเบ™เบฐเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.
  • เปเบเบเบเบฐเปเบช, เบชเบฐเบ–เบฒเบ™เบฐเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™ xDS เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบปเบ™เบ„เบงเบšเบ„เบธเบกเปเบฅเบฐ เบชเบปเปˆเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ. เปเบ•เปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบชเบฑเบšเบชเบปเบ™; เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ›เบฐเบเบญเบšเบกเบตเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบˆเบญเบ‡เปเบฅเบฐเบเบฒเบ™เบชเบฐเบซเบกเบฑเบ.

เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ ADS - เบซเบ™เบถเปˆเบ‡เปƒเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบชเปเบฒเบฅเบฑเบš RDS, CDS, EDS เปเบฅเบฐเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เป€เบžเบตเปˆเบก. เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบžเบตเปˆเบก, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธ api_type: DELTA_GRPC

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ›เบฐเบเบญเบšเบกเบตเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™ node, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป„เบ›เบซเบฒเบเบปเบ™เบ„เบงเบšเบ„เบธเบกเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ เบชเบปเปˆเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เบชเบฐเบ”เบงเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ•เบฒเบซเบ™เปˆเบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™.

เบญเบปเบšเบญเบธเปˆเบ™

เบเปˆเบฝเบงเบเบฑเบš เบชเบปเปˆเบ‡ เปƒเบ™เป€เบงเบฅเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบซเบผเบทเป€เบกเบทเปˆเบญเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเบซเบกเปˆเบˆเบฒเบเบเบปเบ™เบ„เบงเบšเบ„เบธเบก, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบญเบปเบšเบญเบธเปˆเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบˆเบฐเบ–เบทเบเป€เบ›เบตเบ”เบ•เบปเบง. เบกเบฑเบ™เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบเบฒเบ™เบญเบปเบšเบญเบธเปˆเบ™เบœเบนเป‰เบŸเบฑเบ‡ เปเบฅเบฐ เบญเบธเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบเบธเปˆเบก. เบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป€เบกเบทเปˆเบญเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™ RDS/LDS, เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เป€เบกเบทเปˆเบญ CDS/EDS. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆ upstreams เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบœเบนเป‰เบŸเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ.

เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบญเบปเบšเบญเบธเปˆเบ™เบ‚เบถเป‰เบ™, เบ„เบฒเบ”เบงเปˆเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบˆเบฒเบเบเบปเบ™เบ„เบงเบšเบ„เบธเบกเปƒเบ™เป€เบงเบฅเบฒเบซเบกเบปเบ”เป€เบงเบฅเบฒ. เบ–เป‰เบฒเป€เบงเบฅเบฒเบซเบกเบปเบ”เป€เบงเบฅเบฒเป€เบเบตเบ”เบ‚เบถเป‰เบ™, เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฐเบšเปเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เปเบฅเบฐเบœเบนเป‰เบŸเบฑเบ‡เปƒเบซเบกเปˆเบˆเบฐเบšเปเปˆเป€เบฅเบตเปˆเบกเบŸเบฑเบ‡เบขเบนเปˆเปƒเบ™เบ—เปˆเบฒเป€เบฎเบทเบญ.
เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™: EDS, CDS, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบšเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, RDS, LDS. เบ”เป‰เบงเบเบเบฒเบ™เป€เบ›เบตเบ”เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเปเบฅเป‰เบง, เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบˆเบฐเป„เบ›เบฎเบญเบ”เบ•เบปเป‰เบ™เบ—เบฒเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเบชเบณเป€เบฅเบฑเบ”เบ„เบฑเป‰เบ‡เบ”เบฝเบงเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

เบ–เป‰เบฒเบœเบนเป‰เบŸเบฑเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ, เบญเบฑเบ™เป€เบเบปเปˆเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบ–เบฒเบ™เบฐ DRAIN เปเบฅเบฐเบˆเบฐเบ–เบทเบเบฅเบถเบšเบ–เบดเป‰เบกเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเบ›เบดเบ”เบซเบผเบทเบซเบกเบปเบ”เป€เบงเบฅเบฒเบซเบกเบปเบ”เป€เบงเบฅเบฒ. --drain-time-s, เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ 10 เบ™เบฒเบ—เบต.

เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบ•เบญเบ™โ€‹เบ•เปเปˆโ€‹เป„เบ›.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™