6.4
Stickiness, Cross-Zone, TLS/SNI আর Deregistration Delay
session affinity cookie, cross-zone traffic-এর হিসাব, certificate আর SNI, আর চলতে থাকা request-গুলো শেষ হতে দেওয়া।
28 মিনিট পড়া + Animation
টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।
এই লেসন শেষে তুমি পারবে
- Sticky session (session affinity) কী সেটা বুঝিয়ে বলতে, ALB-তে duration-based আর application-based cookie সেট করতে, আর NLB, GWLB, CLB কীভাবে stickiness করে তা জানতে।
- Sticky server মারা গেলে user-এর cart কেন তবুও হারায় (session ID বনাম session data) সেটা ব্যাখ্যা করতে, আর ElastiCache বা DynamoDB দিয়ে আসল সমাধান করতে।
- Cross-zone load balancing চালু আর বন্ধ থাকলে প্রতিটা target কত ভাগ traffic পায় তা হিসাব করতে, আর প্রতিটা load balancer type-এর default আর খরচ জানতে।
- SSL বনাম TLS, certificate, public CA আর ACM বুঝিয়ে বলতে, আর TLS termination, re-encryption আর NLB passthrough-এর মধ্যে ঠিকটা বেছে নিতে।
- HTTPS listener সাজাতে: default certificate, certificate list আর security policy; আর SNI কীভাবে প্রতিটা domain-এর জন্য ঠিক certificate বাছে তা বোঝাতে।
- Scale-in, deployment আর লম্বা request-এর জন্য deregistration delay (connection draining) আর slow start ঠিক করতে।
- এই চারটা feature নিয়ে পরীক্ষার প্রতিটা প্রশ্নের ধরন চিনে ফেলতে।
#প্রতিটা load balancer-এ যে চারটা feature লাগেই
লেসন ৬.২ আর ৬.৩-এ আমরা load balancer বানিয়েছি: listener, rule, target group, health check। এই লেসনে চারটা setting, যেগুলো ঠিক করে আসল traffic এলে load balancer কেমন আচরণ করবে:
| Feature | কোন প্রশ্নের উত্তর দেয় | কোথায় সেট করো |
|---|---|---|
| Sticky session | একজন user কি সবসময় একই target-এ যাবে? | Target group (ALB, NLB, GWLB); listener (CLB) |
| Cross-zone load balancing | এক AZ-এর load balancer node কি অন্য AZ-এর target-এ traffic পাঠাতে পারবে? | Load balancer (NLB, GWLB, CLB) আর target group (ALB, NLB) |
| TLS আর SNI | HTTPS কোথায় decrypt হবে, কোন certificate দিয়ে, কোন domain-এর জন্য? | Listener (certificate, security policy) |
| Deregistration delay | একটা target সরানোর আগে চলমান request শেষ করতে কতক্ষণ সময় পাবে? | Target group (ALB, NLB, GWLB); load balancer (CLB: connection draining) |
#Sticky session (session affinity)
#একজন user প্রতিবার আলাদা server-এ কেন গিয়ে পড়ে
Default-এ load balancer প্রতিটা request আলাদা করে route করে। ALB প্রতি request-এ round robin (বা least outstanding requests) চালায়, তাই একজন user-এর click-গুলো সব target-এ ছড়িয়ে যায়। সাধারণত এটাই চাই, যদি না application user-এর state একটা server-এর memory-তে রেখে দেয়: shopping cart, login session, অর্ধেক পূরণ করা form।
তখন প্রথম click গেল web-1-এ, সে shirt-টা নিজের RAM-এ রাখল; দ্বিতীয় click গেল web-2-তে, যে shirt-এর কথা জানেই না। User দেখে জিনিস একবার আসে, একবার উধাও হয়, বা বারবার login করতে বলে।
Sticky session (আরেক নাম session affinity) load balancer-কে দিয়ে একজন client-এর সব request কিছু সময়ের জন্য একই target-এ পাঠায়।
#ALB কীভাবে client-কে আটকে রাখে: cookie
ALB কোন target বেছেছিল, সেটা মনে রাখে browser-কে দেওয়া একটা cookie-তে। Stickiness চালু হয় target group ধরে, আর দুই ধরনের মধ্যে একটা বাছতে হয়:
| Duration-based | Application-based | |
|---|---|---|
| কতক্ষণ, কে ঠিক করে? | Load balancer: তুমি যে stickiness duration দাও | তোমার application: stickiness চলে application-এর নিজের session cookie যতক্ষণ থাকে |
| Target কোন cookie বসায় | কিছু লাগে না | তোমার ঠিক করা নামের একটা custom cookie (যেমন app_session), app-এর যা attribute লাগে সব সহ |
| Load balancer কোন cookie বসায় | AWSALB | AWSALBAPP (client দেখে AWSALBAPP-0 … AWSALBAPP-3, কারণ বড় cookie সর্বোচ্চ ৪ টুকরো করে পাঠানো হয়) |
| Duration | ১ সেকেন্ড থেকে ৭ দিন, default ১ দিন | ১ সেকেন্ড থেকে ৭ দিন, default ১ দিন |
| কখন নেবে | App-এর নিজের কোনো session cookie নেই | App-এর আগে থেকেই session cookie আছে, আর stickiness সেই session যতক্ষণ ততক্ষণ চলুক |
| কয়েক স্তরের ALB | শুধু একটা স্তরে চলে (নাম AWSALB বাঁধা) | সব স্তরে চলে (প্রতিটা target group-এর নিজের cookie নাম) |
আরও কয়েকটা জানার মতো জিনিস:
- Load balancer-এর cookie একটা ঘুরতে থাকা key দিয়ে encrypted। ভেতরে থাকে একটা target-এর দিকে ইশারা, কখনো user-এর data না, আর তুমি সেটা পড়তে বা বদলাতে পারো না।
- প্রতিটা request-এ ALB cookie-র মেয়াদ আবার নতুন করে দেয়, তাই সক্রিয় user আটকেই থাকে; duration-এর চেয়ে বেশি সময় চুপ থাকলে user নতুন target পায়।
- Cross-origin (CORS) request-এর জন্য ALB
AWSALBCORSনামে আরেকটা cookie-ও বসায়,SameSite=None; Secureসহ, যাতে browser অন্য site থেকে আসা call-এও সেটা পাঠায়। - সংরক্ষিত নাম: application-এর cookie-র নাম
AWSALB,AWSALBAPPবাAWSALBTGদিয়ে শুরু হতে পারবে না। (AWSALBTGলাগে target group-এ আটকে রাখার জন্য, যখন একটা listener rule কয়েকটা weighted target group-এ traffic পাঠায়; এটা সেট হয় rule-এ, আর weighted forwarding লেসন ৬.৩-এ আছে।) - Client-কে cookie নিতে হবে। যে client cookie ফেলে দেয়, সে প্রতিবার নতুন করে route হয়।
- Sticky target যদি unhealthy, deregister হচ্ছে বা নেই, ALB cookie-র কথা শোনে না, একটা healthy target বাছে আর cookie আপডেট করে দেয়। User তখন থেকে সেখানে আটকে যায়।
- WebSocket connection স্বভাবতই sticky: upgrade হওয়ার পর পুরো connection একটা target-এই থাকে।
- সীমাবদ্ধতা: target group-এ cross-zone বন্ধ থাকলে, weighted random routing algorithm-এ, বা weighted target group-এ application-based cookie দিলে stickiness চলে না।
#NLB, GWLB আর CLB-তে stickiness
| Load balancer | কীভাবে আটকায় | খেয়াল রাখো |
|---|---|---|
| ALB | Cookie: AWSALB (duration) বা custom + AWSALBAPP (application) | Target group ধরে সেট হয় |
| NLB | Source IP address (source_ip) | Cookie নেই: NLB কাজ করে layer 4-এ, HTTP কখনো পড়েই না। TLS বা QUIC listener-এ চলে না। একটা NAT gateway বা অফিসের proxy-র পেছনে সবাই একটাই IP শেয়ার করে, তাই সবাই একটা target-এ গিয়ে পড়ে। |
| GWLB | Flow hashing: default-এ 5-tuple, নইলে 3-tuple / 2-tuple (source_ip_dest_ip_proto, source_ip_dest_ip) | একটা flow-এর আসা-যাওয়া দুই দিকই একই appliance-এ রাখে (লেসন ৬.৩) |
| CLB | Duration-based cookie AWSELB, বা application-controlled (app-এর cookie মেনে চলে) | Listener ধরে সেট হয়; CLB পুরনো প্রজন্মের |
Slide-এ লেখা stickiness “CLB, ALB আর NLB-তে চলে”, কথাটা ঠিক, তবে নিজের হাতে মেয়াদ ঠিক করা cookie আছে শুধু CLB আর ALB-তে। NLB-র কোনো cookie নেই, duration-ও নেই: সে client-এর IP-র hash করে।
#Session ID বনাম session data: server মারা গেলে cart কেন তবুও হারায়
প্রায় সবাই এই জায়গায় গুলিয়ে ফেলে: “Cookie তো user-এর browser-এ আছে, তাহলে server নষ্ট হলে cart হারাবে কেন?”
উত্তর: session ID আর session data দুটো আলাদা জিনিস, থাকে দুটো আলাদা জায়গায়।
Cookie-তে কী থাকে: শুধু session ID
Load balancer browser-কে যে cookie দেয়, তাতে থাকে একটা টোকেন, মোটামুটি এমন: “এই user web-1-এর”। এতে shirt আর প্যান্ট থাকে না। এটা রেস্টুরেন্টের টোকেন, এর বেশি কিছু না।
Server-এ কী থাকে: session data
আসল cart (২টা shirt, ১টা প্যান্ট) লেখা থাকে web-1-এর RAM-এ (বা তার local disk-এ)। Stickiness কাজ করে user-কে সেই একটাই জায়গায় ফেরত পাঠিয়ে, যেখানে data আছে।
স্বাভাবিক অবস্থা
User shirt যোগ করল; web-1 সেটা RAM-এ রাখল; load balancer cookie দিল। User প্যান্ট যোগ করল; browser cookie দেখাল; load balancer request পাঠাল web-1-এ; web-1 memory-র shirt আর নতুন প্যান্ট মিলিয়ে cart আপডেট করল।
web-1 crash করল বা terminate হলো
RAM মুছে গেল, সাথে cart-ও। পরের request-এ তখনো cookie যাচ্ছে, যাতে লেখা “web-1”। Load balancer দেখে web-1 মৃত, তাই বাধ্য হয়ে web-2 বাছে।
web-2 এই user-কে কখনো দেখেনি
web-2 নিজের memory-তে খোঁজে, কিছু পায় না, আর উত্তর দেয়: “Your cart is empty।” Sticky session-এ session data একটা server-এর ভেতরে আটকা থাকে। Server মরলে data-ও মরে।
Sticky session আর shopping cart
দুটো web server প্রত্যেক user-এর cart রাখে নিজের memory-তে (RAM)। দেখো stickiness ছাড়া কী হয়, stickiness cookie দিলে কী হয়, sticky server মারা গেলে কী হয়, আর cart যদি ElastiCache-এ থাকে তাহলে কী হয়।
পরিস্থিতি
User একটা shirt cart-এ যোগ করল। ALB round robin করে web-1 বেছে নিল, আর web-1 cart-টা লিখে রাখল নিজের RAM-এ।
#আসল সমাধান: session data server-এর বাইরে রাখো
Cart যদি web-1-এর RAM-এ না রেখে একটা শেয়ার করা, বাইরের store-এ লেখা হয়, তাহলে কোন server মরল বা পরের request কোন server-এ গেল তাতে কিছু যায় আসে না। সব server একই data পড়ে।
| Store | Session-এর জন্য কেন মানায় |
|---|---|
| Amazon ElastiCache (Valkey, Redis বা Memcached) | Memory-তে থাকে, millisecond-এর কম সময়ে পড়া যায়, key-তে মেয়াদ (TTL) দেওয়া যায়, Valkey বা Redis দিয়ে AZ জুড়ে replication |
| Amazon DynamoDB | পুরোপুরি managed, টেকসই, নিজে থেকেই বাড়ে, TTL দিয়ে মেয়াদ ফুরানো session বিনা খরচে মুছে যায় |
| Client-এর কাছে একটা token (যেমন signed JWT) | Server-এ কোনো store-ই লাগে না, পরিচয়ের মতো অল্প data-র জন্য |
এতে web tier হয়ে যায় stateless: server crash করুক, Auto Scaling terminate করুক, বা deployment-এ বদলানো হোক, traffic তবুও সমানভাবে ছড়ায়। State বাইরে চলে গেলে stickiness আর লাগেই না।
#Stickiness-এর অসুবিধা
- অসমান load। ব্যস্ত target-এ আটকে থাকা user-রা সেখানেই থেকে যায়। Scale-out-এর পর নতুন instance পায় শুধু নতুন user, পুরনোগুলো চাপেই থাকে। Duration যত লম্বা, তত খারাপ; ৭ দিনের cookie পুরো fleet-কে এক সপ্তাহ অসমান রেখে দিতে পারে।
- Session হারানো। ওপরে দেখলে: stickiness state বাঁচায় না, শুধু সমস্যাটা ঢেকে রাখে যতক্ষণ না কোনো target নষ্ট হয়, scale in হয় বা বদলানো হয়।
- NLB-তে NAT-এর গরম জায়গা: একটা অফিস বা একটা mobile operator-এর NAT এক IP থেকে হাজার user একটা target-এ পাঠায়।
- Feature কমে যায়: ALB-তে cross-zone বন্ধ থাকলে, weighted random routing-এ, বা NLB-র TLS listener-এ stickiness নেই।
নিজেকে যাচাই করোপ্রশ্ন
একটা অনলাইন দোকান ALB-র পেছনে ছয়টা EC2 instance-এ চলে, duration-based stickiness সহ। Auto Scaling যখনই কোনো instance terminate করে, তাতে থাকা customer-রা দেখে তাদের cart খালি। এটা বন্ধ করতে solutions architect কী করবে?
#Cross-zone load balancing
#Traffic target পর্যন্ত কীভাবে যায়: DNS, node, target
Load balancer-এ একটা AZ চালু করলে ELB সেই AZ-এ একটা load balancer node বসায়। তারপর traffic যায় দুই ধাপে:
১. Client → node। Load balancer-এর DNS name resolve হয় তার node-গুলোর IP address-এ, প্রতিটা চালু AZ-এ একটা, ৬০ সেকেন্ডের TTL সহ। Client-রা এর মধ্যে থেকে বাছে, তাই অনেক client মিলিয়ে প্রতিটা node সমান ভাগ পায়: দুই AZ হলে ৫০/৫০, তিন AZ হলে তিন ভাগের এক ভাগ করে। প্রতিটা node-এর পেছনে কয়টা target আছে, DNS তা জানে না।
২. Node → target। প্রতিটা node একটা target বাছে। কোন কোন target থেকে বাছতে পারবে, সেটা ঠিক করে cross-zone load balancing:
- চালু: সব চালু AZ-এর প্রতিটা registered target।
- বন্ধ: শুধু নিজের AZ-এর target।
#হিসাব করে দেখি: এক AZ-এ ২টা, অন্যটায় ৮টা target
Note-এর উদাহরণ: AZ a-তে ২টা instance, AZ b-তে ৮টা। DNS প্রতিটা node-এ পাঠায় ৫০% traffic।
| AZ a-র প্রতিটা instance | AZ b-র প্রতিটা instance | সবচেয়ে ব্যস্ত ÷ সবচেয়ে অলস | |
|---|---|---|---|
| Cross-zone বন্ধ | ৫০% ÷ ২ = ২৫% | ৫০% ÷ ৮ = ৬.২৫% | ৪ গুণ |
| Cross-zone চালু | ১০০% ÷ ১০ = ১০% | ১০০% ÷ ১০ = ১০% | ১ গুণ |
Cross-zone বন্ধ থাকলে AZ a-র দুটো instance-এর ওপর প্রচণ্ড চাপ, আর AZ b-র আটটা প্রায় বসে থাকে। চালু করলে load balancer AZ-এর সীমানা দেখে না, দশটার মধ্যে traffic সমান ভাগ করে দেয়।
সাধারণ নিয়মটা এমন, ধরো healthy target আছে এমন AZ kটা, এক AZ-এ target nটা, আর মোট target Nটা:
- বন্ধ: প্রতিটা target পায় (১ ÷ k) ÷ n।
- চালু: প্রতিটা target পায় ১ ÷ N।
- চালু থাকলে কতটা traffic AZ পার হয়: প্রতিটা node নিজের AZ-এর target-গুলোর ভাগটুকুই নিজের কাছে রাখে, গড়ে (k − ১) ÷ k ভাগ request অন্য AZ-এ যায়: দুই AZ-এ অর্ধেক, তিন AZ-এ তিন ভাগের দুই ভাগ। NLB বা GWLB ঠিক এই traffic-এর জন্যই inter-AZ data transfer-এর টাকা দেয়।
Cross-zone load balancing: বন্ধ বনাম চালু
Load balancer-এর প্রতিটা AZ-এ একটা করে node থাকে। DNS client-দের node-গুলোর মধ্যে সমান ভাগ করে দেয়, তাই প্রতিটা node পায় অর্ধেক traffic। AZ a-তে target ২টা, AZ b-তে ৪টা।
পরিস্থিতি
একটা client load balancer-এর DNS name resolve করল। Route 53 উত্তরে দেয় node-গুলোর IP address, প্রতি AZ-এ একটা, TTL ৬০ সেকেন্ড। অনেক client মিলিয়ে প্রতিটা node মোটামুটি অর্ধেক traffic পায়।
#প্রতিটা load balancer type-এর default আর খরচ
| Load balancer | Default | কোথায় বদলাবে | চালু থাকলে inter-AZ data |
|---|---|---|---|
| ALB | Load balancer পর্যায়ে সবসময় চালু | Target group ধরে বন্ধ করা যায় (load_balancing.cross_zone.enabled=false) | ফ্রি |
| NLB | বন্ধ | Load balancer-এর জন্য চালু/বন্ধ; target group ধরে আলাদা করা যায় | টাকা লাগে (সাধারণ inter-AZ data transfer) |
| GWLB | বন্ধ | Load balancer attribute | টাকা লাগে |
| CLB | Console-এ বানালে চালু, API বা CLI দিয়ে বানালে বন্ধ | Load balancer attribute | ফ্রি |
Note-এ দুটো জিনিস ঠিক করে নিতে হবে: NLB-র “এক্সট্রা চার্জ” feature-এর কোনো ফি না, বরং যে byte-গুলো AZ পার হয় তার সাধারণ inter-AZ data transfer খরচ; আর ALB-র cross-zone load balancer পর্যায়ে সবসময় চালু হলেও target group ধরে বন্ধ করা যায় (২০২২-এর শেষ থেকে)। Slide-এর table দুটো বিষয়েই হালনাগাদ।
#কখন বন্ধ রাখবে?
Traffic নিজের AZ-এ রাখার সত্যিকারের কিছু সুবিধা আছে, AWS নিজেই সেগুলো লিখে রেখেছে:
- NLB বা GWLB-তে inter-AZ data-র খরচ নেই।
- Zonal isolation: এক AZ-এর সমস্যা (একটা খারাপ deployment, আধা-নষ্ট কোনো জিনিস) অন্য AZ-এর target-এ ছড়ায় না।
- Latency একটু কম।
বদলে capacity-র হিসাবটা তোমাকে রাখতে হয়। Cross-zone বন্ধ থাকলে:
- প্রতিটা AZ-এ তার ভাগ সামলানোর মতো যথেষ্ট target থাকতে হবে, আর AZ-গুলোতে target-এর সংখ্যা কাছাকাছি হওয়া উচিত (AZ জুড়ে সমানভাবে ছড়ানো Auto Scaling group এটা নিজেই করে, লেসন ৬.৫);
- কোনো AZ-এর সব target unhealthy হলে load balancer ওই node-এর IP DNS থেকে সরিয়ে দেয় (DNS failover), আর বাকি AZ-গুলো সব traffic নেয়;
- Load balancer-এর পেছনের সব target group-এর একই AZ ব্যবহার করা উচিত: কোনো target group-এর জন্য target-হীন AZ unhealthy ধরা হয়, আর খালি AZ-এ ঢোকা request-এ ALB 503 দেয়;
- ALB target group-এ sticky session আর Lambda target চলে না।
প্রতিটা AZ-এ সমান capacity নিশ্চিত করতে না পারলে AWS-এর পরামর্শ: cross-zone চালুই রাখো।
Cross-zone traffic calculator
প্রতিটা AZ-এ কয়টা healthy target আছে ঠিক করো, load balancer-এর type বাছো, আর cross-zone চালু বা বন্ধ করো। প্রতিটা bar একটা target, আর মোট request-এর কত ভাগ সে পাচ্ছে।
Load balancer type
Cross-zone load balancing
NLB: default-এ বন্ধ। পুরো load balancer-এর জন্য চালু করা যায়, বা target group ধরে আলাদা করে দেওয়া যায়। চালু থাকলে যত byte AZ পার হয়, তার জন্য সাধারণ inter-AZ data transfer খরচ লাগে।
AZ a · 2 target
LB node পায় 50% · 25% প্রত্যেকে
AZ b · 8 target
LB node পায় 50% · 6.25% প্রত্যেকে
AZ c · 0 target
healthy target নেই: DNS থেকে বাদ
#Load balancer-এ TLS
#SSL নাকি TLS?
SSL (Secure Sockets Layer) হলো web traffic encrypt করার আদি protocol। SSL-এর সব version-ই আজ ভাঙা আর বন্ধ। TLS (Transport Layer Security) তার আধুনিক উত্তরসূরি; এখনকার version TLS 1.2 আর TLS 1.3। আজকের প্রতিটা “HTTPS” padlock আসলে TLS, তবু অভ্যাসে মানুষ এখনো “SSL certificate” বলে, আর AWS-এর নিজের setting-এও ELBSecurityPolicy বা “SSL certificate”-এর মতো নাম রয়ে গেছে। পরীক্ষার প্রশ্নে “SSL” পড়লে “TLS” ধরে নাও।
Client আর load balancer-এর মাঝের encryption-কে বলে in-flight (বা in-transit) encryption। এতে পথের মাঝে কেউ traffic পড়তে বা বদলাতে পারে না।
#Certificate, public CA আর ACM
Load balancer নিজের পরিচয় প্রমাণ করে একটা X.509 certificate (TLS server certificate) দিয়ে। এতে থাকে কোন কোন domain name-এর জন্য এটা বৈধ, একটা public key, একটা মেয়াদ, আর একটা certificate authority (CA)-র সই। মিলিয়ে থাকা private key server-এর কাছে গোপন থাকে। Browser certificate বিশ্বাস করে তখনই, যখন user যা লিখেছে তার সাথে নাম মেলে, মেয়াদ শেষ হয়নি, আর browser-এর বিশ্বস্ত তালিকার কোনো CA সই করেছে।
- Public CA (Let’s Encrypt, GoDaddy, Comodo/Sectigo আরও অনেকে) এমন certificate দেয় যা browser বিশ্বাস করে। Certificate-এর মেয়াদ ফুরায়, তাই renew করতে হয়। পুরো industry মেয়াদ ছোট করছে: ১৫ মার্চ ২০২৬ থেকে public certificate সর্বোচ্চ ২০০ দিন বৈধ থাকতে পারে।
- AWS Certificate Manager (ACM) হলো AWS-এর পথ:
- Integrated service-এ (ELB, CloudFront, API Gateway) ব্যবহার করলে public certificate ফ্রি।
- Domain তোমার, এটা প্রমাণ করো DNS validation দিয়ে (একটা CNAME record, Route 53-এ নিজে থেকেই বানিয়ে দেয়) বা email দিয়ে।
- DNS validation record যতদিন থাকে, ACM নিজের certificate নিজে থেকেই renew করে, আর load balancer-এ আবার বসিয়ে দেয়।
- Private key কখনো AWS-এর বাইরে যায় না: সাধারণ ACM certificate download করা বা EC2 instance-এ বসানো যায় না।
- Import করা certificate (বাইরের CA থেকে কিনে ACM-এ import) চলে, কিন্তু ACM সেটা renew করতে পারে না: মেয়াদ ফুরানোর আগে তোমাকেই renew করে আবার import করতে হয়। ACM EventBridge-এ expiry event পাঠায়, আর একটা AWS Config rule মেয়াদ ফুরিয়ে আসা certificate ধরিয়ে দিতে পারে।
- ACM certificate Regional: ALB-র certificate থাকতে হবে ALB-র Region-এ; CloudFront-এর certificate থাকতে হবে us-east-1-এ।
- Certificate IAM-এও upload করা যায় (পুরনো পথ, ACM নেই এমন Region-এ এখনো লাগে)।
পাশের কথা (২০২৫–২৬): ACM-এর public certificate এখন ১৯৮ দিনের মেয়াদে দেওয়া হয় (আগে ছিল ৩৯৫ দিন), আর মেয়াদ শেষের ৪৫ দিন আগে নিজে থেকেই renew হয়, তাই ACM-এর দেওয়া certificate ব্যবহার করলে তোমার কিছুই বদলায় না। ACM এখন exportable public certificate-ও দেয় (টাকা লাগে, প্রতি domain name-এ প্রায় $7), যার private key download করে EC2 বা নিজের data center-এর server-এ বসানো যায়। পরীক্ষা এখনো ধরে নেয়: “ACM certificate export করা যায় না; instance-এর নিজের certificate লাগলে import করো বা নিজে সামলাও”।
#কোথায় decrypt করবে: termination, re-encryption নাকি passthrough
| TLS termination (offload) | শেষ পর্যন্ত re-encryption | TLS passthrough | |
|---|---|---|---|
| Load balancer আর listener | ALB HTTPS listener (বা NLB TLS listener) | ALB HTTPS listener + HTTPS target group (বা NLB TLS listener + TLS target group) | Port 443-এ NLB TCP listener |
| Client যে certificate দেখে, সেটা কার কাছে | Load balancer (ACM থেকে) | Load balancer (ACM থেকে) | Target-গুলোর কাছে |
| Load balancer → target | VPC-র ভেতরে সাধারণ HTTP (বা TCP) | নতুন TLS session দিয়ে আবার encrypted | Client-এর আসল encrypted byte, অক্ষত |
| Load balancer কি path, host, cookie দেখে route করতে পারে? | পারে | পারে | পারে না, HTTP কখনো দেখেই না |
| Target-এর CPU খরচ | TLS-এর জন্য কিছুই না | কিছুটা (load balancer-এর সাথে TLS) | পুরো TLS-এর কাজ |
| সাধারণ কারণ | Default: CPU বাঁচানো, certificate এক জায়গায় সামলানো | Compliance: “প্রতিটা hop-এ encrypted” | Load balancer-কে কখনো খোলা data দেখতে দেওয়া যাবে না; app নিজেই mutual TLS করে |
- Re-encryption-এ target-এর নিজের certificate লাগে, কিন্তু ALB target-এর certificate যাচাই করে না, তাই self-signed হলেও চলে।
- Termination-এর পর ALB
X-Forwarded-Proto: https(আর client-এর IP সহX-Forwarded-For) জুড়ে দেয়, যাতে application বোঝে user কীভাবে connect করেছিল। - Passthrough ছাড়াই ALB client-এর সাথে mutual TLS (mTLS) করতে পারে, একটা trust store দিয়ে client certificate যাচাই করে।
TLS কোথায় খোলা হয়?
Browser সবসময় HTTPS-এই কথা বলে। বদলায় শুধু certificate আর private key কার কাছে থাকে, আর load balancer-এর পেছনের traffic encrypted থাকে কিনা।
পরিস্থিতি
ACM ALB-কে www.shop.example-এর একটা certificate দেয়। Private key ACM নিজের কাছে রাখে; তুমি কখনো সেটা download করো না, আর ACM নিজে থেকেই certificate renew করে।
#HTTPS listener: default certificate, certificate list, security policy
ALB-র HTTPS listener-এ (বা NLB-র TLS listener-এ) TLS-এর তিনটা setting থাকে:
| Setting | কী জিনিস |
|---|---|
| Default certificate | ঠিক একটা, বাধ্যতামূলক। Client SNI না পাঠালে, বা list-এর কোনো certificate চাওয়া নামের সাথে না মিললে এটা ব্যবহার হয়। |
| Certificate list | ঐচ্ছিক বাড়তি certificate, যাতে একটা listener অনেক domain-কে তাদের নিজের certificate দিয়ে চালাতে পারে। Default-এ প্রতি ALB-তে ২৫টা পর্যন্ত (default বাদে), বাড়ানো যায়। Load balancer SNI দিয়ে এর মধ্যে থেকে বাছে। |
| Security policy | Listener কোন TLS version আর cipher মেনে নেবে। আধুনিক client-এর জন্য কড়া policy নাও, বা পুরনো client চালাতে পুরনো policy। |
আজকের security policy default:
- Console থেকে বানানো listener পায়
ELBSecurityPolicy-TLS13-1-2-Res-PQ-2025-09: শুধু TLS 1.3 আর 1.2, বাছাই করা শক্ত cipher, আর post-quantum key exchange। - CLI, CloudFormation বা CDK দিয়ে policy না বলে বানালে পায় পুরনো
ELBSecurityPolicy-2016-08, যেটা এখনো TLS 1.0 আর 1.1 মেনে নেয়। তাই template-এ আধুনিক policy-র নাম স্পষ্ট করে লিখো। - শুধু TLS 1.0 বোঝে এমন পুরনো device-কে যদি connect করতেই হয়, TLS 1.0 আছে এমন policy লাগাও। Slide-এর “পুরনো SSL/TLS version চালানোর জন্য security policy” কথাটার মানে এটাই।
#Classic Load Balancer: একটাই certificate
CLB (v1) প্রতি listener-এ একটা certificate নেয়, SNI নেই। CLB-তে আলাদা certificate দিয়ে কয়েকটা domain চালাতে হলে লাগে প্রতি domain-এ একটা CLB (বা এমন একটা certificate যার Subject Alternative Name-এ সব নাম আছে)। ALB আর NLB (v2) এক listener-এ অনেক certificate নেয়, SNI দিয়ে।
#SNI (Server Name Indication)
#SNI কোন সমস্যার সমাধান
ধরো একটা load balancer চালাচ্ছে www.cats.com আর **www.dogs.com**। TLS handshake হয় কোনো HTTP পাঠানোর আগে, তাই connection আসার সময় server তখনো Host header পড়তে পারে না। User কোন site চায় সে জানে না, তাই কোন certificate দেখাবে তাও জানে না। SNI-এর আগে সে সবসময় একটাই দেখাত: dogs.com-এর visitor পেত cats.com-এর certificate, আর browser লাল রঙে “Not secure” warning দেখাত।
পুরনো সমাধান ছিল প্রতিটা HTTPS site-এর জন্য একটা করে IP address, মানে প্রতি site-এ একটা করে load balancer। খরচের ব্যাপার, আর IPv4 address-ও কম।
#SNI কীভাবে কাজ করে
SNI হলো TLS-এর একটা extension। Handshake-এর একদম প্রথম message, ClientHello-তে browser খোলাখুলি লিখে দেয় সে কোন hostname চায়: “আমি www.dogs.com-এর জন্য এসেছি”। Server সেটা পড়ে মিলে যাওয়া certificate দিয়ে উত্তর দেয়।
ALB-তে বাছাইটা চলে এভাবে:
১. Client SNI দিয়ে একটা hostname পাঠায়।
২. List-এ ঠিক একটা certificate যদি মেলে (common name বা Subject Alternative Name দিয়ে, wildcard সহ), ALB সেটাই নেয়।
৩. কয়েকটা মিললে ALB সেগুলোর মধ্যে client যেটা সবচেয়ে ভালো সামলাতে পারে সেটা বাছে (RSA-র আগে elliptic-curve key, তারপর মেয়াদ না-ফুরানো, শক্ত hash, লম্বা key)।
৪. Client SNI না পাঠালে বা কিছুই না মিললে ALB দেয় default certificate, যার মানে সাধারণত client-এর কাছে name mismatch error।
SNI শুধু certificate বাছে। Request কোন target group-এ যাবে, সেটা decrypt হওয়ার পর listener rule (সাধারণত একটা host-header rule) ঠিক করে।
SNI: একটা ALB, অনেক certificate
একটা HTTPS listener চালায় www.cats.example (default certificate) আর www.dogs.example (certificate list-এ)। প্রতিটা site-এর নিজের target group আছে।
পরিস্থিতি
User লিখল www.dogs.example। Handshake-এর একদম প্রথম message-এ, কিছু encrypt হওয়ার আগেই, browser জানিয়ে দেয় সে কোন site চায়। এই field-টাই Server Name Indication।
#কারা SNI সমর্থন করে
- ALB: হ্যাঁ, প্রতি HTTPS listener-এ অনেক certificate।
- NLB: হ্যাঁ, প্রতি TLS listener-এ অনেক certificate।
- CloudFront: হ্যাঁ (SNI এর default আর ফ্রি; প্রতি distribution-এ আলাদা IP নিলে বাড়তি টাকা)।
- CLB: না, প্রতি listener-এ একটা certificate।
গত ১৫ বছরে বানানো প্রায় প্রতিটা client-ই SNI পাঠায়। যারা পাঠায় না, তারা খুব পুরনো browser আর operating system, পুরনো Java আর Python library, আর কিছু embedded device।
আরেকটা কথা: SNI-এর hostname খোলা অবস্থায় যায়, তাই network-এ যে নজর রাখছে সে দেখতে পায় তুমি কোন site-এ যাচ্ছ, যদিও সেখানে কী করছ তা না। নতুন Encrypted Client Hello extension এটা লুকায়, তবে এখনো খুব প্রচলিত না, আর পরীক্ষায়ও নেই।
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি তিনটা website চালায়, প্রত্যেকের নিজের domain আর নিজের TLS certificate। এখন চলে তিনটা Classic Load Balancer-এ। ওরা চায় একটাই load balancer, তিনটা domain-এই HTTPS, আর instance-এর ওপর CPU-র চাপ কম। কী করা উচিত?
#Deregistration delay (connection draining)
#একটা target সরানোর সময় কী হয়
Target group থেকে একটা target চলে যায় যখন Auto Scaling scale in করে, যখন deployment সেটা বদলায়, বা যখন তুমি নিজে deregister করো। Load balancer সেটাকে সাথে সাথে লাথি মেরে বের করে দেয় না:
Draining শুরু
Target
drainingঅবস্থায় যায়। Load balancer তাকে নতুন request পাঠানো বন্ধ করে; সব নতুন request যায় অন্য target-গুলোতে।চলমান request শেষ হয়
যে request-গুলো target-এ আগে থেকেই চলছিল, সেগুলোকে শেষ করতে দেওয়া হয়, সর্বোচ্চ deregistration delay পর্যন্ত।
শেষ
Target-এ যখন চলমান কোনো request বা খোলা connection থাকে না, ALB পুরো delay অপেক্ষা না করে আগেই deregistration শেষ করে দেয়। না হলে delay ফুরালে target হয়
unused, আর তখনো খোলা connection বন্ধ করে দেওয়া হয় (client পায় 5xx error)। Target যদি Auto Scaling group-এর হয়, Auto Scaling instance terminate করার আগে এটার জন্য অপেক্ষা করে।
| ALB / NLB / GWLB | CLB | |
|---|---|---|
| নাম | Deregistration delay | Connection draining |
| কোথায় | Target group attribute deregistration_delay.timeout_seconds | Load balancer attribute |
| সীমা | ০–৩৬০০ সেকেন্ড (০ মানে বন্ধ) | চালু থাকলে ১–৩৬০০ সেকেন্ড |
| Default | ৩০০ সেকেন্ড | ৩০০ সেকেন্ড (console-এ default-এ চালু, API/CLI-তে বন্ধ) |
NLB-র বাড়তি কথা: QUIC traffic-এ সবসময় ৩০০ সেকেন্ড; deregistration_delay.connection_termination.enabled attribute delay শেষে বাকি connection বন্ধ করে দেয় (না হলে অলস কিন্তু খোলা TCP connection traffic পেতেই থাকতে পারে); NLB-তে AWS অন্তত ১২০ সেকেন্ড দিতে বলে।
#মানটা কত দেবে
- ছোট request (millisecond-এ উত্তর দেওয়া API): ৩০ সেকেন্ডের মতো কম মানই যথেষ্ট। লম্বা delay শুধু scale-in আর deployment ধীর করে।
- লম্বা request (upload, report, video processing): delay দাও সবচেয়ে লম্বা request-এর চেয়ে বেশি, নইলে শেষটুকু কেটে যায়।
- অনেকক্ষণ খোলা থাকা connection (WebSocket, long polling, কখনো অলস না হওয়া HTTP keep-alive): এগুলো কখনো “শেষ” হয় না, তাই drain সবসময় পুরো delay পর্যন্ত চলে। App-কে এমন বানাও যাতে থামতে বলা হলে (
SIGTERMপেলে) connection বন্ধ করে দেয়, তখন client অন্য জায়গায় আবার connect করে। - ০ মানে কোনো draining নেই: চলমান request হারিয়ে যায়। শুধু test-এ বা সাথে সাথে আবার চেষ্টা করা যায় এমন stateless traffic-এ এটা দাও।
Scale-in-এর সময় deregistration delay
একটা Auto Scaling group target group-এর সাথে যুক্ত। web-1 সরানোর সময় load balancer আগে সেটা drain করে। Delay হলো target group-এর setting: default ৩০০ সেকেন্ড, ০ থেকে ৩৬০০ দেওয়া যায়।
পরিস্থিতি
একজন user-এর checkout request web-1-এ চলছে। শেষ হতে কয়েক সেকেন্ড লাগে।
#Slow start mode (ALB)
Draining বাঁচায় চলে যাওয়া target-কে। Slow start বাঁচায় নতুন আসা target-কে। ঠান্ডা cache বা এখনো গরম না হওয়া runtime-এর নতুন instance health check পাস করামাত্র পুরো ভাগ পেলে ভেঙে পড়তে পারে।
- Slow start চালু থাকলে নতুন healthy target-এর ভাগ slow start duration ধরে সমান হারে বাড়ে: ৩০ থেকে ৯০০ সেকেন্ড (default ০, মানে বন্ধ)।
- এটা ALB target group-এর setting, আর চলে শুধু round robin algorithm-এ, least outstanding requests বা weighted random-এ না।
- Slow start চালু করার সময় যে target আগে থেকেই ছিল সে slow start-এ ঢোকে না, আর নতুন register হওয়া target তখনই ঢোকে যখন অন্তত আরেকটা healthy target slow start-এর বাইরে আছে।
#System design-এ এগুলো একসাথে কীভাবে বসে
- আগে stateless web tier। Session রাখো ElastiCache বা DynamoDB-তে, ফাইল S3 বা EFS-এ। তাহলে stickiness লাগে না, scale-in নিরাপদ, আর যেকোনো target যেকোনো request সামলাতে পারে। Stickiness রাখো শুধু বদলানো যায় না এমন legacy application-এর জন্য, ছোট duration দিয়ে।
- ALB-তে cross-zone চালুই রাখো। NLB-তে চালু করো যখন AZ জুড়ে target অসমান, বা inter-AZ data-র বিলের চেয়ে সমান load বেশি জরুরি; বন্ধ রাখো যখন zonal isolation চাও আর Auto Scaling দিয়ে target সমানভাবে ছড়িয়ে রাখো।
- Default হিসেবে ACM certificate দিয়ে load balancer-এ TLS terminate করো; compliance প্রতিটা hop-এ encryption চাইলে HTTPS target group যোগ করো; NLB passthrough নাও শুধু তখন, যখন load balancer-কে কখনোই decrypt করতে দেওয়া যাবে না। আধুনিক security policy নাও, আর সব domain একটা listener-এ SNI দিয়ে রাখো।
- Draining-কে request-এর দৈর্ঘ্যের সাথে মেলাও: API-তে ৩০ সেকেন্ড, upload service-এ সবচেয়ে লম্বা upload-এর চেয়ে বেশি, আর গরম হতে সময় লাগা instance-এর জন্য slow start যোগ করো।
- Metric-এ চোখ রাখো: target ধরে
RequestCount(stickiness বা cross-zone থেকে অসমতা),HTTPCode_ELB_5XX_Count(draining খুব ছোট, খালি AZ), আর import করা certificate-এর ACM expiry।
#নিজে করে দেখো
# Variables: your target group, listener and load balancer
TG=arn:aws:elasticloadbalancing:us-east-1:111122223333:targetgroup/web/0123456789abcdef
LISTENER=arn:aws:elasticloadbalancing:us-east-1:111122223333:listener/app/web-alb/50dc6c495c0c9188/f2f7dc8efc522ab2
NLB=arn:aws:elasticloadbalancing:us-east-1:111122223333:loadbalancer/net/tcp-nlb/1234567890abcdef
# 1. Duration-based stickiness for one hour
aws elbv2 modify-target-group-attributes --target-group-arn $TG --attributes \
Key=stickiness.enabled,Value=true Key=stickiness.type,Value=lb_cookie \
Key=stickiness.lb_cookie.duration_seconds,Value=3600
# ...or application-based stickiness that follows the app's app_session cookie
aws elbv2 modify-target-group-attributes --target-group-arn $TG --attributes \
Key=stickiness.enabled,Value=true Key=stickiness.type,Value=app_cookie \
Key=stickiness.app_cookie.cookie_name,Value=app_session \
Key=stickiness.app_cookie.duration_seconds,Value=86400
# 2. See the cookie: the response carries AWSALB and AWSALBCORS
curl -sI https://www.shop.example/ | grep -i set-cookie
# 3. Cross-zone: turn it on for an NLB (inter-AZ data charges apply)...
aws elbv2 modify-load-balancer-attributes --load-balancer-arn $NLB \
--attributes Key=load_balancing.cross_zone.enabled,Value=true
# ...or turn it off for one ALB target group
aws elbv2 modify-target-group-attributes --target-group-arn $TG \
--attributes Key=load_balancing.cross_zone.enabled,Value=false
# 4. A free ACM certificate with DNS validation
aws acm request-certificate --domain-name www.dogs.example \
--subject-alternative-names dogs.example --validation-method DNS
aws acm describe-certificate --certificate-arn $CERT \
--query "Certificate.[Status,RenewalEligibility,NotAfter]"
# 5. HTTPS listener: default certificate + modern security policy, then SNI certificates
aws elbv2 modify-listener --listener-arn $LISTENER \
--certificates CertificateArn=$CATS_CERT \
--ssl-policy ELBSecurityPolicy-TLS13-1-2-Res-PQ-2025-09
aws elbv2 add-listener-certificates --listener-arn $LISTENER \
--certificates CertificateArn=$DOGS_CERT
aws elbv2 describe-listener-certificates --listener-arn $LISTENER
# 6. Watch SNI choose the certificate (and the default one when SNI is missing)
openssl s_client -connect web-alb-123456.us-east-1.elb.amazonaws.com:443 \
-servername www.dogs.example </dev/null 2>/dev/null | openssl x509 -noout -subject
openssl s_client -connect web-alb-123456.us-east-1.elb.amazonaws.com:443 \
-noservername </dev/null 2>/dev/null | openssl x509 -noout -subject
# 7. Draining: 30 s for a short-request API, and slow start of 2 minutes
aws elbv2 modify-target-group-attributes --target-group-arn $TG --attributes \
Key=deregistration_delay.timeout_seconds,Value=30 \
Key=slow_start.duration_seconds,Value=120
# 8. Deregister a target and watch it drain
aws elbv2 deregister-targets --target-group-arn $TG --targets Id=i-0abc1234def567890
aws elbv2 describe-target-health --target-group-arn $TG \
--query "TargetHealthDescriptions[].[Target.Id,TargetHealth.State]" # draining → unused
#সারসংক্ষেপ
মূল কথাগুলো
- Sticky session একজন client-কে একই target-এ পাঠায়। ALB: duration-based cookie
AWSALBবা application-based (তোমার cookie +AWSALBAPP), target group ধরে, duration ১ সেকেন্ড থেকে ৭ দিন, default ১ দিন;AWSALB,AWSALBAPP,AWSALBTGদিয়ে শুরু হওয়া নাম সংরক্ষিত। CLB:AWSELB। NLB: source IP, cookie নেই। GWLB: flow hashing। - Cookie-তে থাকে শুধু session ID; session data থাকে server-এর RAM-এ। ওই server মরলে cart-ও মরে। আসল সমাধান বাইরের session store, ElastiCache বা DynamoDB, যাতে tier stateless হয় আর stickiness লাগে না।
- Stickiness ভারসাম্য নষ্ট করে (লম্বা duration আর NAT-এ আরও বেশি), আর ALB-তে cross-zone বন্ধ থাকলে বা weighted random routing-এ চলে না।
- Cross-zone: DNS node-গুলোর মধ্যে traffic সমান ভাগ করে; cross-zone বন্ধ থাকলে প্রতিটা node শুধু নিজের AZ-এর target নেয় (২ + ৮ target → ২৫% বনাম ৬.২৫%), চালু থাকলে প্রতিটা target সমান ভাগ পায় (প্রত্যেকে ১০%)।
- ALB: load balancer পর্যায়ে সবসময় চালু, ফ্রি, target group ধরে বন্ধ করা যায়। NLB / GWLB: default-এ বন্ধ, চালু করলে inter-AZ data-র খরচ। CLB: console-এ চালু, API/CLI-তে বন্ধ, ফ্রি।
- TLS SSL-এর জায়গা নিয়েছে; certificate আসে public CA বা ACM থেকে (ফ্রি public certificate, নিজে থেকে renew, private key AWS-এই থাকে; import করা certificate renew হয় না; CloudFront-এর জন্য us-east-1)।
- Load balancer-এ termination CPU বাঁচায়; re-encryption (HTTPS target group) প্রতিটা hop encrypted রাখে; NLB TCP passthrough decrypt-এর কাজ target-কে দেয়।
- HTTPS listener-এ থাকে একটা default certificate, ঐচ্ছিক certificate list (default-এ প্রতি ALB-তে ২৫টা) আর একটা security policy (TLS version আর cipher; পুরনো client-এর জন্য পুরনো policy)।
- SNI: client ClientHello-তে hostname লিখে দেয়, load balancer মিলে যাওয়া certificate বাছে। ALB, NLB আর CloudFront পারে; CLB পারে না (একটা certificate)। SNI নেই বা মেলেনি → default certificate।
- Deregistration delay (CLB: connection draining): default ৩০০ সেকেন্ড, ০–৩৬০০ সেকেন্ড, target group ধরে। Draining target নতুন request পায় না, চলমানগুলো শেষ হয়। Scale-in-এ request হারালে বাড়াও; ছোট request আর দ্রুত deployment-এর জন্য কমাও। Slow start (৩০–৯০০ সেকেন্ড) নতুন ALB target-কে ধীরে ধীরে পুরো ভাগে তোলে।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
Duration-based sticky session-এর জন্য Application Load Balancer যে cookie বানায়, তার নাম কী?
নিজেকে যাচাই করোপ্রশ্ন
Duration-based ALB cookie-র stickiness duration কতটুকু দেওয়া যায়?
নিজেকে যাচাই করোপ্রশ্ন
Network Load Balancer কীভাবে sticky session করে?
নিজেকে যাচাই করোপ্রশ্ন
Application Load Balancer-এর sticky session নিয়ে কোন দুটো কথা সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
ALB-র পেছনে একটা legacy web application-এর user-রা অভিযোগ করছে, shopping cart থেকে জিনিস এলোমেলোভাবে উধাও হচ্ছে। Application cart রাখে server-এর memory-তে, আর এই quarter-এ code বদলানো যাবে না। সবচেয়ে দ্রুত সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা application আগে থেকেই ALB stickiness ব্যবহার করে। তবু scale-in-এর সময় Auto Scaling কোনো instance terminate করলেই customer-রা cart হারায়। কোম্পানি চায় যেকোনো instance নষ্ট হলেও session টিকে থাকুক। Solutions architect কী সুপারিশ করবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা application নিজেই app_session নামে session cookie বসায়, আর user log out করলে সেটার মেয়াদ শেষ করে দেয়। ALB প্রতিটা user-কে ঠিক ততক্ষণ এক target-এ রাখবে যতক্ষণ সেই session চলে। Stickiness কীভাবে সাজাবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা ALB target group-এ ৭ দিনের duration-based stickiness আছে। হঠাৎ traffic বাড়ার পর Auto Scaling চারটা instance যোগ করল, কিন্তু আসল চারটা instance ৮৫%-এর ওপর CPU-তে চলছে, আর নতুনগুলো ১০%-এর কাছে বসে আছে। সবচেয়ে ভালো পদক্ষেপ কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা load balancer-এ cross-zone load balancing বন্ধ। AZ a-তে ২টা healthy instance, AZ b-তে ৮টা। AZ b-র প্রতিটা instance মোট traffic-এর কত ভাগ পায়?
নিজেকে যাচাই করোপ্রশ্ন
একটা ALB-তে (cross-zone চালু) AZ a-তে ২টা, AZ b-তে ৩টা আর AZ c-তে ৫টা instance, সবগুলো healthy। প্রতিটা instance কত ভাগ traffic পায়?
নিজেকে যাচাই করোপ্রশ্ন
একই ২ + ৩ + ৫টা instance এবার একটা NLB-র পেছনে, cross-zone load balancing বন্ধ। সবচেয়ে ব্যস্ত instance কত ভাগ পায়?
নিজেকে যাচাই করোপ্রশ্ন
Cross-zone load balancing-এর default আর খরচ নিয়ে কোন দুটো কথা ঠিক?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
CloudWatch দেখাচ্ছে Network Load Balancer-এর পেছনের EC2 instance-গুলোর CPU utilization খুব অসমান: us-east-1a-র instance-গুলো ৮০%-এ, us-east-1b-রগুলো ২০%-এ। us-east-1a-তে instance কম। Solutions architect কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
Cross-zone load balancing বন্ধ থাকা একটা NLB-র দুই AZ-এ target আছে। AZ a-র সব target health check-এ ফেল করল। Client-এর traffic-এর কী হয়?
নিজেকে যাচাই করোপ্রশ্ন
একজন engineer একটা ALB target group-এ cross-zone load balancing বন্ধ করল, তারপর তাতে duration-based stickiness চালু করতে গেল। পরিবর্তনটা ব্যর্থ হলো। কেন?
নিজেকে যাচাই করোপ্রশ্ন
Application Load Balancer-এ TLS termination-এর বর্ণনা কোন দুটো?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা healthcare কোম্পানিকে প্রতিটা network hop-এ data encrypted রাখতে হবে, VPC-র ভেতরেও। Application-এর আবার আলাদা service-এ path-based routing লাগে। কোন design দুটো শর্তই মানে?
নিজেকে যাচাই করোপ্রশ্ন
একটা ব্যাংকের security policy বলছে, load balancer কখনো decrypt করা traffic-এর নাগাল পাবে না; instance-গুলো নিজেরাই TLS করে, client certificate যাচাই সহ। কোন option মানায়?
নিজেকে যাচাই করোপ্রশ্ন
ALB-র প্রতিটা HTTPS listener-এ কী থাকতেই হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি একটা ALB থেকে shop.example.com, blog.example.net আর api.example.org HTTPS-এ চালাতে চায়, প্রত্যেকটা নিজের certificate দিয়ে। এটা কী দিয়ে সম্ভব?
নিজেকে যাচাই করোপ্রশ্ন
SNI বোঝে না এমন একটা পুরনো client একটা ALB listener-এ connect করল, যেটার default certificate www.cats.example-এর আর list-এ আছে www.dogs.example-এর certificate। Client চায় www.dogs.example। কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
কোন load balancer অনেকগুলো certificate নিয়ে SNI সমর্থন করে না (NOT)?
নিজেকে যাচাই করোপ্রশ্ন
AWS Certificate Manager নিয়ে কোন দুটো কথা সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানির হাজারো industrial device শুধু TLS 1.0 বোঝে। এগুলোকে নতুন একটা ALB-তে connect করতে হবে, যার listener console থেকে default setting-এ বানানো, আর handshake ব্যর্থ হচ্ছে। Solutions architect কী বদলাবে?
নিজেকে যাচাই করোপ্রশ্ন
ALB target group-এ deregistration delay-এর default মান আর অনুমোদিত সীমা কত?
নিজেকে যাচাই করোপ্রশ্ন
ALB-র পেছনের একটা Auto Scaling group প্রতি সন্ধ্যায় scale in করে। ঠিক তখন যারা ফাইল upload করছে, তারা 502 error পায়। Deregistration delay ০ দেওয়া। কী করা উচিত?
নিজেকে যাচাই করোপ্রশ্ন
একটা টিম একটা REST API deploy করে, যার request ৫০০ ms-এর কমে শেষ হয়। প্রতিটা rolling deployment আশার চেয়ে অনেক বেশি সময় নেয়, কারণ বদলানো প্রতিটা instance ৫ মিনিট draining অবস্থায় থাকে। সবচেয়ে ভালো পরিবর্তন কী?
নিজেকে যাচাই করোপ্রশ্ন
Deregistration delay নিয়ে কোন দুটো কথা সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
ALB-র পেছনে Auto Scaling-এর চালু করা নতুন instance-গুলো health check পাস করার পর প্রথম এক মিনিট ধীর উত্তর দেয় আর time out হয়, কারণ তাদের cache ঠান্ডা। Target group round robin ব্যবহার করে। Solutions architect কী চালু করবে?
নিজেকে যাচাই করোপ্রশ্ন
Study note বলছে: ‘ALB-তে Cross-zone default-এ চালু (ফ্রি), আর NLB-তে বন্ধ (চালু করলে এক্সট্রা চার্জ)।’ আজকের হিসাবে সবচেয়ে সঠিক কথা কোনটা?