HTTP/TCP balancer HAProxy 2.0 නිකුත් කිරීම

පළ කළා load balancer නිකුතුව හැප්‍රොක්සි 2.0, බොහෝ සාධක සැලකිල්ලට ගනිමින්, සේවාදායක සමූහයක් අතර HTTP ගමනාගමනය සහ අත්තනෝමතික TCP ඉල්ලීම් බෙදා හැරීමට ඔබට ඉඩ සලසයි (නිදසුනක් ලෙස, එය සේවාදායකයන් තිබේද යන්න පරීක්ෂා කරයි, පැටවීමේ මට්ටම තක්සේරු කරයි, DDoS ප්‍රතිවිපාක ඇත) සහ ප්‍රාථමික දත්ත පෙරීම සිදු කරයි ( උදාහරණයක් ලෙස, ඔබට HTTP ශීර්ෂ විග්‍රහ කිරීමට, සම්ප්‍රේෂණ වැරදි විමසුම් පරාමිති පෙරීමට, SQL සහ XSS ආදේශන අවහිර කිරීමට, අන්තර්ගත සැකසුම් නියෝජිතයන් සම්බන්ධ කිරීමට හැකිය). HAProxy ද හැක අයදුම් කරන්න ක්ෂුද්‍ර සේවා ගෘහ නිර්මාණ ශිල්පය මත පදනම් වූ පද්ධතිවල සංරචකවල අන්තර්ක්‍රියා සම්බන්ධීකරණය කිරීම. ව්යාපෘති කේතය C සහ ලියා ඇත සපයා ඇත GPLv2 යටතේ බලපත්‍ර ලබා ඇත. මෙම ව්‍යාපෘතිය Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter සහ Vimeo ඇතුළු බොහෝ විශාල වෙබ් අඩවි වල භාවිතා වේ.

ප්රධාන නිකුත් කිරීමේ විශේෂාංග:

  • නව API හඳුන්වා දෙන ලදී දත්ත සැලැස්ම, එය ඔබට REST Web API හරහා පියාසර කරන විට HAProxy සැකසුම් කළමනාකරණය කිරීමට ඉඩ සලසයි. ඇතුළුව, ඔබට ගතිකව පසුපෙළ සහ සේවාදායක එකතු කිරීමට සහ ඉවත් කිරීමට, ACL නිර්මාණය කිරීමට, ඉල්ලීම් මාර්ගගත කිරීම් වෙනස් කිරීමට, හසුරුවන්න බන්ධන IP වෙත වෙනස් කිරීමට හැකිය;
  • බහු-core CPU වල කාර්ය සාධනය ප්‍රශස්ත කිරීම සඳහා HAProxy හි භාවිතා වන නූල් ගණන වින්‍යාස කිරීමට ඔබට ඉඩ සලසන nbthread විධානය එක් කරන ලදී. පෙරනිමියෙන්, වත්මන් පරිසරයේ පවතින CPU මධ්‍යයන් මත පදනම්ව සේවක නූල් ගණන තෝරා ගනු ලබන අතර, වලාකුළු පරිසරයන්හි පෙරනිමිය එක් නූල් එකක් වේ. දැඩි සීමාවන් සැකසීමට, එකලස් කිරීමේ විකල්ප MAX_THREADS සහ MAX_PROCS එකතු කර ඇති අතර, නූල් සහ ක්‍රියාවලි ගණනෙහි ඉහළ සීමාව සීමා කරයි;
  • ජාල ලිපිනවලට හසුරුවන්නන් බැඳීම සඳහා බන්ධන විධානය භාවිතා කිරීම සරල කර ඇත. සැකසීමේදී, ක්‍රියාවලි පරාමිතීන් නිර්වචනය කිරීම තවදුරටත් අවශ්‍ය නොවේ - පෙරනිමියෙන්, ක්‍රියාකාරී සම්බන්ධතා ගණන අනුව සම්බන්ධතා නූල් අතර බෙදා හරිනු ලැබේ.
  • හුදකලා බහාලුම්වල ධාවනය වන විට ලඝු-සටහන් සැකසීම සරල කර ඇත - ලොගය දැන් stdout සහ stderr වෙත මෙන්ම පවතින ඕනෑම ගොනු විස්තරයකට යැවිය හැක (උදාහරණයක් ලෙස, "log fd@1 local0");
  • HTX (Native HTTP නියෝජනය) සඳහා සහය පෙරනිමියෙන් සක්‍රීය කර ඇති අතර, අවසානය සිට අවසානය දක්වා HTTP/2, Layer 7 Retries සහ gRPC වැනි උසස් විශේෂාංග භාවිතා කරන විට තුලනය කිරීමට ඉඩ සලසයි. HTX මඟින් ශීර්ෂයන් ප්‍රතිස්ථාපනය නොකරයි, නමුත් ලැයිස්තුවේ අවසානයට නව ශීර්ෂයක් ඉවත් කිරීම සහ එක් කිරීම සඳහා වෙනස් කිරීමේ ක්‍රියාවලිය අඩු කරයි, එමඟින් ඔබට HTTP ප්‍රොටෝකෝලයේ ඕනෑම දිගු ප්‍රභේදයක් හැසිරවීමට ඉඩ සලසයි, ශීර්ෂවල මුල් අර්ථ දැක්වීම් ආරක්ෂා කර ඔබට ඉඩ සලසයි. HTTP/2 HTTP/1.1 සහ අනෙක් අතට පරිවර්තනය කිරීමේදී ඉහළ කාර්ය සාධනයක් ලබා ගැනීමට;
  • End-to-End HTTP/2 මාදිලිය සඳහා නිල සහාය එක් කරන ලදී (ප්‍රොක්සි සහ සේවාලාභියා අතර අන්තර්ක්‍රියා පමණක් නොව, පසුපෙළ වෙත ඇමතුම් ඇතුළුව, HTTP/2 හි සියලුම අදියරයන් සැකසීම);
  • gRPC ප්‍රොටෝකෝලයේ ද්විපාර්ශ්වික ප්‍රොක්සි කිරීම සඳහා පූර්ණ සහාය ක්‍රියාත්මක කර ඇත, gRPC ප්‍රවාහයන් විග්‍රහ කිරීමට, තනි පණිවිඩ උද්දීපනය කිරීමට, ලොගයේ gRPC තදබදය පිළිබිඹු කිරීමට සහ ACL භාවිතයෙන් පණිවිඩ පෙරීමට හැකියාව ඇත. විශ්ව API භාවිතා කරමින් එකිනෙකා සමඟ අන්තර් ක්‍රියා කරන විවිධ ක්‍රමලේඛන භාෂාවලින් ක්ෂුද්‍ර සේවා වල වැඩ සංවිධානය කිරීමට gRPC ඔබට ඉඩ සලසයි. GRPC හි ජාල සන්නිවේදනය HTTP/2 ප්‍රොටෝකෝලය මත ක්‍රියාත්මක වන අතර දත්ත අනුක්‍රමිකකරණය සඳහා ප්‍රොටෝකෝල බෆර භාවිතා කිරීම මත පදනම් වේ.
  • ජාල සම්බන්ධතාවයක් ස්ථාපනය කිරීමේ ගැටළු වලට සම්බන්ධ නොවන මෘදුකාංග අසමත්වීම් වලදී නැවත නැවතත් HTTP ඉල්ලීම් යැවීමට ඔබට ඉඩ සලසන “Layer 7 Retries” මාදිලිය සඳහා සහය එක් කරන ලදී (උදාහරණයක් ලෙස, ප්‍රතිචාරයක් නොමැති නම් හෝ හිස් ප්‍රතිචාරයක් තිබේ නම්. POST ඉල්ලීම). ප්‍රකාරය අක්‍රිය කිරීමට, "http-request" විකල්පයට "disable-l7-retry" ධජය එකතු කර ඇති අතර, පෙරනිමි, සවන්දීම සහ පසුපෙළ යන කොටස්වල සියුම්ව සුසර කිරීම සඳහා "retry-on" විකල්පය එක් කර ඇත. නැවත යැවීම සඳහා පහත සලකුණු තිබේ: සියල්ල නැවත උත්සාහ කළ හැකි-දෝෂ, කිසිවක් නැත, conn-failure, හිස්-ප්‍රතිචාර, junk-response, ප්‍රතිචාර-කාලය අවසන් වීම, 0rtt-ප්‍රතික්ෂේපිත, මෙන්ම තත්ත්ව කේත ආපසු යැවීමට බැඳීම (404, ආදිය) ;
  • HAProxy සඳහා හසුරුවන්න සමඟින් බාහිර ක්‍රියාත්මක කළ හැකි ගොනු ඇමතීම වින්‍යාස කිරීමට ඔබට ඉඩ සලසන නව ක්‍රියාවලි කළමනාකරු ක්‍රියාත්මක කර ඇත.
    උදාහරණයක් ලෙස, Data Plan API (/usr/sbin/dataplaneapi), මෙන්ම විවිධ Offload ප්‍රවාහ සැකසුම් එන්ජින්, එවැනි බාහිර හසුරුවක ආකාරයෙන් ක්‍රියාත්මක වේ;

  • SPOE (Stream Processing Offload Engine) සහ SPOP (Stream Processing Offload Protocol) දිගු සංවර්ධනය කිරීම සඳහා .NET Core, Go, Lua සහ Python සඳහා බන්ධන එකතු කර ඇත. මීට පෙර, දිගු සංවර්ධනය සඳහා සහය වූයේ C හි පමණි;
  • වෙනම සේවාදායකයක් වෙත ඉල්ලීම් පිළිබිඹු කිරීම සඳහා බාහිර spoa-mirror හසුරුව (/usr/sbin/spoa-mirror) එක් කරන ලදී (උදාහරණයක් ලෙස, සැබෑ බරක් යටතේ පර්යේෂණාත්මක පරිසරයක් පරීක්ෂා කිරීම සඳහා නිෂ්පාදන ගමනාගමනයෙන් කොටසක් පිටපත් කිරීම සඳහා);
  • විසින් ඉදිරිපත් කරන ලදී HAProxy Kubernetes ඇතුල්වීමේ පාලකය Kubernetes වේදිකාව සමඟ ඒකාබද්ධ වීම සහතික කිරීම සඳහා;
  • අධීක්ෂණ පද්ධතියට සංඛ්‍යාලේඛන අපනයනය කිරීම සඳහා ගොඩනඟන ලද සහාය එක් කරන ලදී Prometheus;
  • HAProxy ධාවනය වන අනෙකුත් නෝඩ් සමඟ තොරතුරු හුවමාරු කර ගැනීමට භාවිතා කරන Peers Protocol, දීර්ඝ කර ඇත. හෘද ස්පන්දනය සහ සංකේතනය කළ දත්ත සම්ප්‍රේෂණය සඳහා අමතර සහාය ඇතුළුව;
  • "නියැදි" පරාමිතිය "ලොග්" විධානයට එකතු කර ඇත, එමඟින් ඔබට ඉල්ලීම් වලින් කොටසක් පමණක් ලොගයට දැමීමට ඉඩ සලසයි, උදාහරණයක් ලෙස 1 න් 10, විශ්ලේෂණාත්මක නියැදියක් සෑදීමට;
  • ස්වයංක්‍රීය පැතිකඩ ප්‍රකාරය එක් කරන ලදී (profiling.tasks විධානය, අගයන් ස්වයංක්‍රීයව, ක්‍රියාත්මක සහ අක්‍රිය කළ හැක). සාමාන්‍ය ප්‍රමාදය ms 1000 ඉක්මවන්නේ නම් ස්වයංක්‍රීය පැතිකඩ සක්‍රීය වේ. පැතිකඩ දත්ත බැලීම සඳහා, "show profiling" විධානය Runtime API වෙත එකතු කර ඇත, නැතහොත් එය ලොගය වෙත සංඛ්යාලේඛන නැවත සැකසීමට හැකිය;
  • SOCKS4 ප්‍රොටෝකෝලය භාවිතයෙන් පසුපෙළ සේවාදායකයන් වෙත ප්‍රවේශ වීම සඳහා සහය එක් කරන ලදී;
  • TCP සම්බන්ධතා ඉක්මනින් විවෘත කිරීමේ යාන්ත්‍රණය සඳහා අන්තයේ සිට අවසානය දක්වා සහය එක් කරන ලදී (TFO - TCP Fast Open, RFC 7413), එමඟින් පළමු එක ඉල්ලීමකට සහ දෙවන පියවරට ඒකාබද්ධ කිරීමෙන් සම්බන්ධතා සැකසුම් පියවර ගණන අඩු කිරීමට ඔබට ඉඩ සලසයි. සම්භාව්‍ය 3-පියවර සම්බන්ධතා සාකච්ඡා ක්‍රියාවලිය සහ සම්බන්ධතාවයක් ස්ථාපිත කිරීමේ ආරම්භක අදියරේදී දත්ත යැවීමට හැකි වේ;
  • නව ක්‍රියා එකතු කර ඇත:
    • සාමාන්‍ය ප්‍රකාශනයක් භාවිතයෙන් URL ප්‍රතිස්ථාපනය කිරීමට "http-request replace-uri";
    • සත්කාරක නාමය විසඳීම සඳහා “tcp-request content do-resolve” සහ “http-request do-resolve”;
    • "tcp-request content set-dst" සහ "tcp-request content set-dst-port" ඉලක්කගත IP ලිපිනය සහ තොට ආදේශ කිරීමට.
  • නව පරිවර්තන මොඩියුල එකතු කරන ලදි:
    • AES128-GCM, AES192-GCM සහ AES256-GCM ඇල්ගොරිතම භාවිතයෙන් ප්‍රවාහ විකේතනය කිරීම සඳහා aes_gcm_dev;
    • ප්‍රොටෝකෝල බෆර පණිවිඩ වලින් ක්ෂේත්‍ර උකහා ගැනීමට protobuf;
    • gRPC පණිවිඩ වලින් ක්ෂේත්‍ර උපුටා ගැනීමට ungrpc.

    මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න