22.1
VPC Peering
দুটো VPC-কে private পথে জোড়া, কেন peering এক VPC পেরিয়ে আরেকটায় যায় না, CIDR মিলে গেলে কী হয়, আর অন্য account-এর সঙ্গে peering।
18 মিনিট পড়া + Animation
টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।
এই লেসন শেষে তুমি পারবে
- VPC peering connection কী, কোথায় চলে (একই বা আলাদা account, একই বা আলাদা Region), আর কেন এর জন্য কোনো gateway, VPN বা বাড়তি hardware লাগে না, সেটা বুঝিয়ে বলতে।
- শুরু থেকে শেষ পর্যন্ত একটা বানাতে: request, accept, দুই VPC-তেই route, security group আর network ACL, আর link-এর ওপারে DNS resolution।
- যে চারটা নিয়মে peering-এর ডিজাইন ভেঙে পড়ে, সেগুলো চিনতে: CIDR overlap চলবে না, transitive না, edge-to-edge routing নেই, আর n(n−1)/2 connection-এর full mesh-এর বিস্ফোরণ।
- Inter-Region peering-এ কী বদলায় (encryption, MTU, security group reference, DNS) আর peering-এর খরচ কত, সেটা বলতে।
- Active অথচ কোনো traffic যাচ্ছে না, এমন peering-এর সমস্যা খুঁজতে, আর কখন peering ঠিক উত্তর আর কখন Transit Gateway, PrivateLink বা VPC sharing, সেটা ঠিক করতে।
#দুটো VPC জোড়ার দরকারই বা কেন
VPC হলো দেয়ালঘেরা একটা network (লেসন ৩.২)। দেয়ালটাই আসল কথা: developer-এর test VPC থেকে production ছোঁয়া যায় না, আর এক team-এর ভুল তার নিজের VPC-র ভেতরেই আটকে থাকে। তাই বেশির ভাগ কোম্পানির শেষমেশ অনেকগুলো VPC হয়, প্রায়ই অনেকগুলো account-এ (প্রতিটা team, environment বা business unit-এর জন্য একটা করে, AWS Organizations দিয়ে সামলানো, লেসন ২০.১)।
আগে বা পরে এর মধ্যে দুটো VPC-কে কথা বলতেই হয়। Payments service-কে analytics team-এর reporting database-এ লেনদেনের তথ্য পাঠাতে হবে। এক VPC-র checkout service-কে আরেক VPC-র fraud-scoring service ডাকতে হবে। কোনো private connection না থাকলে একমাত্র পথ পাবলিক internet: public IP, internet gateway, NAT gateway, traffic AWS থেকে বেরিয়ে আবার ফিরে আসা, আর আক্রমণের জন্য বড় একটা দরজা। এর সবচেয়ে সহজ private বিকল্প হলো VPC peering।
#VPC peering আসলে কী
VPC peering connection হলো ঠিক দুটো VPC-র মধ্যে একটা private network link। একবার বসিয়ে দিলে যেকোনো পাশের instance অন্য পাশের instance-এ পৌঁছায় private IPv4 বা IPv6 address দিয়ে, যেন দুই VPC মিলে একটাই network।
- AWS backbone দিয়ে। Traffic কখনো পাবলিক internet পার হয় না। Peering VPC networking-এর ভেতরেই গাঁথা: এটা gateway না, VPN না, কোনো যন্ত্রও না, তাই এর single point of failure নেই, নিজের কোনো bandwidth-এর বাধাও নেই। সীমা শুধু instance কতটা পাঠাতে পারে।
- একই বা আলাদা account। অন্য VPC-টা তোমার নিজের হতে পারে, অন্য কোনো AWS account-এরও হতে পারে।
- একই বা আলাদা Region। Region পেরিয়ে peering-কে বলে inter-Region peering (নিচে বিস্তারিত)।
- এক জোড়ায় একটাই connection। একই দুটো VPC-র মধ্যে দুটো peering বানানো যায় না, দরকারও নেই: redundant করার মতো কিছুই নেই।
- ID
pcx-…। Route table-এ peering connection একটা target হিসেবে দেখা যায়, ঠিক যেভাবে internet gateway (igw-…) বা NAT gateway (nat-…) দেখা যায় (লেসন ৩.৩)।
#Peering connection কীভাবে বানানো হয়
#Request আর accept
একটা peering connection-এর থাকে একজন requester আর একজন accepter:
- Requester VPC-র মালিক accepter VPC-র নাম দিয়ে (তার VPC ID, আর account বা Region আলাদা হলে সেগুলোও) একটা peering request বানায়।
- AWS দুই VPC-র CIDR block মিলিয়ে দেখে। কোনোটা overlap করলে request সঙ্গে সঙ্গে fail করে।
- নইলে request pending-acceptance অবস্থায় অপেক্ষা করে। Accepter VPC-র মালিক accept বা reject করে। কেউ কিছু না করলে ৭ দিনে মেয়াদ শেষ হয়ে যায়।
- Accept হওয়ার পর অল্প সময় provisioning দেখায়, তারপর হয় active।
কে কী করে, এটা পরীক্ষার প্রশ্নে খুব কাজে লাগে:
- একই account: তুমি নিজেই বানাও, নিজেই accept করো।
- ভিন্ন account: accepter account-কেই accept করতে হবে। Requester তার হয়ে accept করতে পারে না।
- ভিন্ন Region: request বানানো হয় requester-এর Region-এ, আর accept করতে হয় accepter VPC-র Region-এ গিয়ে। Requester-এর Region-এর console-এ খুঁজলে accept করার মতো কিছু পাবে না।
- যেকোনো মালিক যেকোনো সময় active peering delete করতে পারে; সঙ্গে সঙ্গে দুই পাশেরই যোগাযোগ বন্ধ।
#দুই VPC-তেই route
Active peering-এ কোনো route না দেখালে কিছুই যায় না। Connection বানালে কোনো পাশেই route যোগ হয় না।
- VPC A-তে, যেসব route table-এর subnet-কে VPC B-তে পৌঁছাতে হবে, প্রতিটায় একটা route: destination = VPC B-র CIDR, target =
pcx-…। - VPC B-তে, যেসব route table-এর subnet-কে উত্তর দিতে হবে, প্রতিটায় ফেরার route: destination = VPC A-র CIDR, target = সেই একই
pcx-…। - যেকোনো পাশে route না থাকলেই কথোপকথন ভেঙে যায়। সবচেয়ে বিরক্তিকর হলো গ্রহণকারী পাশে route না থাকা: request পৌঁছায়, server সেটা দেখতেও পায়, কিন্তু উত্তরের বাড়ি ফেরার পথ নেই, তাই caller timeout পায়।
- পুরো CIDR route করতেই হবে, এমন না।
10.20.0.0/16-এর বদলে শুধু10.20.2.0/24route করলে কেবল database subnet-টাই খোলা থাকে। সাধারণ longest prefix match নিয়মই খাটে (লেসন ৩.৩)। - প্রত্যেক মালিক শুধু নিজের route table-ই নিয়ন্ত্রণ করে। ভিন্ন account-এর peering-এ দুই team-কেই নিজের অর্ধেক কাজ করতে হয়।
#Security group আর network ACL
Route ঠিক করে packet কোথায় যাবে; firewall ঠিক করে সেটা যেতে দেওয়া হবে কি না (লেসন ৩.৫)।
- গ্রহণকারী instance-এর security group-কে peer-এর traffic allow করতে হবে। Default অবস্থায় অন্য VPC থেকে কিছুই allow করে না।
- একই Region-এ একটা security group rule peer VPC-র security group-কে reference করতে পারে, অন্য account-এর হলেও। ভিন্ন account-এর বেলায় লিখতে হয়
account-id/sg-idআকারে, যেমন111122223333/sg-0aa11bb22। - Region পেরিয়ে security group reference চলে না: বদলে peer-এর CIDR দাও (যত সরু করা যায়)।
- Peer পরে referenced group-টা মুছে ফেললে, বা peering-টাই মুছে গেলে, rule-টা হয়ে যায় stale security group rule। এটা আর কিছু মেলায় না, কিন্তু তুমি না সরানো পর্যন্ত group-এ থেকে যায় (
describe-stale-security-groupsএগুলোর তালিকা দেয়)। - দুই subnet-এর network ACL-কেও traffic allow করতে হবে, আর যেহেতু এরা stateless, ephemeral port-এ ফেরার traffic-ও।
#Peering-এর ওপারে DNS
Instance-রা প্রায়ই একে অপরকে IP দিয়ে না, নাম দিয়ে ডাকে। Default অবস্থায় কোনো instance যদি peer VPC-র একটা instance-এর public DNS hostname (ec2-203-0-113-40.ap-southeast-1.compute.amazonaws.com) ব্যবহার করে, নামটা resolve হয় public IP-তে, আর traffic peering ছেড়ে internet দিয়ে যাওয়ার চেষ্টা করে।
- Peering connection-এর DNS resolution চালু করো। Console-এ: Edit DNS settings → Requester DNS resolution (“Allow accepter VPC to resolve the DNS of requester VPC”) আর Accepter DNS resolution (“Allow requester VPC to resolve the DNS of accepter VPC”)। API-তে এটা প্রতিটা পাশের peering option-এর
AllowDnsResolutionFromRemoteVpc। - এরপর অন্য VPC থেকে খুঁজলে peer instance-এর public hostname resolve হয় তার private IP-তে, আর traffic যায় peering দিয়ে।
- শর্ত: peering active থাকতে হবে, দুই VPC-তেই DNS resolution আর DNS hostnames চালু থাকতে হবে, আর প্রত্যেক মালিক নিজের পাশের option নিজে চালু করে।
- Inter-Region peering-এ, বা যে VPC-র CIDR private RFC 1918 range-এর বাইরে, সেখানে private DNS hostname-কে private IP-তে resolve করাতেও এই option লাগে।
- Peer VPC-র Amazon DNS server-কে সরাসরি query করা যায় না। Private hosted zone-এর জন্য zone-টা দুই VPC-র সাথেই associate করো (Route 53, অধ্যায় ৮)।
Peering বানানো: request, accept, তারপর দুই পাশেই route
ঢাকার একটা fintech তার payments VPC রাখে prod account-এ, আর reporting database রাখে আলাদা একটা analytics account-এ। একটা peering চালু থাকতে কী কী লাগে, আর একটা টুকরো না থাকলে কী হয়, দেখো।
পরিস্থিতি
পুরো ঠিকঠাক পথটা, যে ক্রমে তুমি বানাও সেই ক্রমে।
Prod account (requester) VPC A থেকে VPC B-র দিকে একটা peering request বানাল, অন্য account-এর ID দিয়ে। এখনো কিছুই জোড়া লাগেনি: request অন্য পাশের উত্তরের অপেক্ষায় থাকে, ৭ দিনে কেউ সাড়া না দিলে মেয়াদ শেষ।
#যে চারটা নিয়মে peering টেকে বা ভাঙে
#নিয়ম ১: CIDR overlap চলবে না, একটুও না
CIDR block overlap করে এমন দুই VPC-র মধ্যে AWS peering বানাতেই দেয় না (লেসন ৩.১)। কারণটা routing: দুই VPC-রই যদি 10.0.5.9 থাকে, তাহলে VPC A-র route table-এ লাগবে 10.0.0.0/16 → pcx, অথচ ওই range তো আগে থেকেই তার নিজের local route। কোনো router-ই “আমার 10.0.5.9” আর “তোমার”টা আলাদা করতে পারে না।
- হুবহু এক range overlap করে (
10.0.0.0/16আর10.0.0.0/16)। - একটার ভেতরে আরেকটা থাকলেও overlap (
10.0.0.0/16আর10.0.128.0/20)। - Secondary CIDR block-ও গোনা হয়: এক VPC-র যেকোনো IPv4 বা IPv6 block অন্যটার যেকোনো block-এর সাথে মিলে গেলেই peering বাতিল, এমনকি তুমি যদি শুধু না-মেলা block-গুলো route করার কথা ভাবো, তবুও।
- VPC-র primary CIDR পরে বদলানো যায় না। আগে থেকে overlap থাকলে সমাধান re-IP: খালি range-এ নতুন VPC বানিয়ে workload সরিয়ে নাও।
On-premises network-এর বেলাতেও একই নিয়ম: VPC-র range আর ডেটা সেন্টারের range overlap করলে VPN আর Direct Connect-এর routing ঠিক একইভাবে ভেঙে যায় (লেসন ২২.৪ আর ২২.৫)। কেউ VPC বানানোর আগেই পুরো কোম্পানির জন্য একটা address plan করো, যেমন VPC IP Address Manager (IPAM) দিয়ে।
CIDR overlap: peering জন্মানোর আগেই বাতিল
চট্টগ্রামের একটা shipping কোম্পানি ঢাকার একটা courier start-up কিনে নিল। দুই কোম্পানিই প্রথম VPC বানিয়েছিল console-এর default 10.0.0.0/16 দিয়ে। এদের কি peering হবে?
পরিস্থিতি
CIDR যাচাই
| VPC | CIDR block | Address |
|---|---|---|
| Shipping | 10.0.0.0/16 | 10.0.0.0 – 10.0.255.255 |
| Courier | 10.0.0.0/16 | 10.0.0.0 – 10.0.255.255 |
দুই VPC-ই 10.0.0.0/16 ব্যবহার করে। AWS যদি peering হতে দিত, তাহলে shipping VPC-র route table-এ 10.0.0.0/16 → pcx লাগত, অথচ ওই range তো আগেই তার নিজের local route। কোনো router-ই “আমার 10.0.5.9” আর “তোমার 10.0.5.9” আলাদা করতে পারে না।
#নিয়ম ২: peering transitive না
A-র সাথে B-র peering, আর B-র সাথে C-র peering থাকলে A C-তে পৌঁছাতে পারে না। Peering শুধু সেই packet পৌঁছে দেয়, যার গন্তব্য peer VPC-র ভেতরে। A থেকে C-র ঠিকানায় যাওয়া packet A–B link-এই ফেলে দেওয়া হয়, যে যা-ই route বসাক, কারণ B সেটা হাতেই পায় না যে এগিয়ে দেবে।
A আর C-কে কথা বলাতে হলে সরাসরি একটা A–C peering বানাও (দুই পাশে route সহ), নয়তো সবাইকে একটা Transit Gateway-তে লাগাও, যেটা attachment-গুলোর মধ্যে সত্যিই route করে (লেসন ২২.৬)।
Peering transitive না: A–B আর B–C মানে A–C না
তিনটা VPC: A (payments), B (shared services) আর C (fraud scoring)। A-র peering B-র সাথে, B-র peering C-র সাথে। A কি B হয়ে C-র সাথে কথা বলতে পারবে?
পরিস্থিতি
A পাঠাল B-র 10.20.4.10-এ। A-র route 10.20.0.0/16 → pcx A–B মিলে যায়, আর গন্তব্য B-র ভেতরেই, তাই peering পৌঁছে দেয়।
নিজেকে যাচাই করোপ্রশ্ন
VPC A-র সাথে VPC B-র peering আছে, আবার VPC B-র সাথে VPC C-র peering আছে। সব route table-এ দুই peer-এরই route আছে। VPC A-র একটা instance VPC C-র instance-এ পৌঁছাতে পারছে না। Solutions architect-এর কী করা উচিত?
#নিয়ম ৩: edge-to-edge routing নেই
Peer তোমার VPC-র ভেতরের address-এ পৌঁছাতে পারে, তার পেছনের কিছুতে না। তোমার VPC-কে সে অন্য কোথাও যাওয়ার রাস্তা বানাতে পারে না। VPC A-র নিচের যেকোনোটা থাকলেও VPC B peering দিয়ে সেটা ব্যবহার করতে পারবে না:
- internet gateway (B A হয়ে internet-এ যেতে পারবে না);
- NAT gateway বা NAT instance;
- কোম্পানির network-এ যাওয়ার Site-to-Site VPN বা Direct Connect connection;
- S3 বা DynamoDB-র gateway endpoint (লেসন ১০.১০-এ এটা দেখেছিলে)।
যা চলে: peer-এর ভেতরে যার সত্যিকারের address আছে, এমন সবকিছু: instance, database, internal load balancer, বা একটা interface endpoint-এর ENI, কারণ এর private IP peer VPC-র ভেতরেই।
Edge-to-edge routing নেই: peer তোমার gateway ধার নিতে পারে না
Analytics VPC-র NAT gateway নেই, VPN-ও নেই। Prod VPC-র দুটোই আছে। Analytics কি peering দিয়ে এগুলো ব্যবহার করতে পারবে?
পরিস্থিতি
Analytics 0.0.0.0/0-কে peering-এর দিকে দেখাল, ভাবছে prod-এর NAT gateway internet-এ নিয়ে যাবে।
ETL job internet থেকে একটা currency-rate file নামাচ্ছে। ওর default route peering-এর দিকে, তাই packet সেখানে ঢোকে।
#নিয়ম ৪: full mesh খুব দ্রুত বাড়ে
Peering transitive না বলে যে দুটো VPC-কে কথা বলতে হবে, প্রতিটা জোড়ার নিজস্ব connection লাগে। n-টা VPC-র সবাইকে সবার কাছে পৌঁছাতে হলে full mesh-এ লাগে n(n−1)/2টা peering, প্রতিটার দুই পাশে route সহ:
| VPC | Full mesh-এ peering | প্রতি VPC-তে peering |
|---|---|---|
| ৩ | ৩ | ২ |
| ১০ | ৪৫ | ৯ |
| ৫০ | ১,২২৫ | ৪৯ |
| ১০০ | ৪,৯৫০ | ৯৯ |
Quota ব্যাপারটাকে আরও কঠিন করে: একটা VPC-র default অবস্থায় ৫০টা active peering connection থাকতে পারে, বাড়িয়ে ১২৫ পর্যন্ত, আর ২৫টা outstanding request। তাই ১২৬টার বেশি VPC-র full mesh অসম্ভব, আর ৫১-র বেশি হলেই quota বাড়াতে হয়, সঙ্গে হাজার হাজার route (route table-এরও নিজের route-সংখ্যার সীমা আছে)। এ কারণেই “জটিল VPC peering mesh সহজ করো” বা “শত শত VPC” দেখলে উত্তর Transit Gateway (লেসন ২২.৬): ১০০টা VPC হয়ে যায় একটা hub-এ ১০০টা attachment।
Peering planner: packet-টা কি পৌঁছাবে?
একটা কোম্পানির চারটা VPC। Peering চালু করো, প্রতিটার দুই পাশে route বসাও, security group ঠিক করো, তারপর একটা packet পাঠিয়ে দেখো প্রথম কোন ধাপে আটকায়।
VPC-গুলো
- A Payments 10.10.0.0/16
- B Analytics 10.20.0.0/16
- C Fraud scoring 10.30.0.0/16
- D Courier (কেনা কোম্পানি) 10.10.0.0/16
Peering connection
- A–B
- A–C
- A–D
- B–C
- B–D
- C–D
পরীক্ষার packet
কোথা থেকে আর কোথায়, বেছে নাও, তারপর button চাপো।
Mesh-এর হিসাব
এই ৪টা VPC-র পুরো mesh: ৪ × ৩ ÷ ২ = ৬টা peering। এখন চালু: 2টা।
10টা VPC: পুরো mesh = 45টা peering, প্রতিটার দুই পাশে route (default quota প্রতি VPC-তে ৫০টা active peering, বাড়িয়ে ১২৫ পর্যন্ত)। Transit Gateway: 10টা attachment।
#Inter-Region peering
আলাদা Region-এর VPC-র মধ্যেও peering চলে, একই বা আলাদা account-এ, শুধু কয়েকটা পার্থক্য আছে:
- Encrypted। Inter-Region traffic AWS নিজেই encrypt করে, আর সেটা থাকে AWS global backbone-এ, এখানেও single point of failure বা bandwidth-এর বাধা নেই।
- Accept করতে হয় accepter-এর Region-এ, ওপরে যেমন বলা হয়েছে।
- Region পেরিয়ে security group reference চলে না: CIDR ব্যবহার করো।
- MTU: Region-এর ভেতরে jumbo frame ৯,০০১ byte পর্যন্ত, Region-এর মধ্যে ৮,৫০০ byte।
- DNS: private hostname-কে private IP-তে resolve করাতেও peering-এ DNS resolution চালু করতে হয়।
- খরচ: traffic-এর বিল হয় inter-Region data transfer-এর রেটে।
Inter-Region peering: AWS backbone দিয়ে Mumbai থেকে Singapore
বাংলাদেশের একটা mobile operator billing চালায় Mumbai-তে আর subscriber API চালায় Singapore-এ। দুই VPC-র মধ্যে Region পেরিয়ে peering।
পরিস্থিতি
Network team Mumbai-তে request বানাল --peer-region ap-southeast-1 দিয়ে। Accepter-কে accept করতে হবে Singapore-এ গিয়ে: Mumbai-র console-এ accept করার জন্য request-টা দেখাই যায় না।
#Peering-এর খরচ কত
- Peering connection বানাতে কোনো খরচ নেই, ঘণ্টার কোনো ভাড়াও নেই। Transit gateway-র মতো GB-প্রতি processing খরচও নেই।
- একই Availability Zone-এর ভেতরের data transfer ফ্রি, ভিন্ন account হলেও (মে ২০২১ থেকে)। AZ মেলানো হয় AZ ID দিয়ে (যেমন
aps1-az1), AZ-এর নাম দিয়ে না, কারণ এক account-এরap-south-1aঅন্য account-এ অন্য কোনো physical AZ হতে পারে। - Peering দিয়ে cross-AZ traffic-এর বিল হয় Region-এর অন্য যেকোনো cross-AZ traffic-এর মতোই, প্রতি দিকে GB-প্রতি প্রায় $০.০১।
- Inter-Region traffic-এর বিল হয় পাঠানো Region-এর inter-Region data transfer রেটে (অনেক Region-এ GB-প্রতি প্রায় $০.০২, কোথাও কোথাও বেশি)।
- Transit gateway-র সাথে তুলনা করলে (attachment-hour, সাথে GB-প্রতি প্রায় $০.০২ processing), দুটো VPC-র মধ্যে প্রচুর ডেটা সরাতে peering-ই সবচেয়ে সস্তা। লেসন ২২.৮ (network costs) এই সংখ্যাগুলো পাশাপাশি রাখে। দাম বদলায়: তোমার Region-এর জন্য VPC আর EC2-র pricing page দেখে নিও।
#কোথায় গোলমাল হয়
- Peering pending-acceptance-এ আটকে: accepter account কখনো accept করেনি, বা ভুল Region-এ খুঁজছে। ৭ দিন পর request-এর মেয়াদ শেষ, নতুন করে বানাতে হবে।
- Request সঙ্গে সঙ্গে fail: CIDR overlap, ভুলে যাওয়া কোনো secondary block বা IPv6 block সহ।
- Active, অথচ কিছুই যায় না: এক পাশে route নেই, অথবা route বসানো হয়েছে main route table-এ, অথচ subnet ব্যবহার করে একটা custom route table।
- Server connection দেখে, client timeout পায়: গ্রহণকারী VPC-তে ফেরার route নেই।
- Route ঠিক, তবু timeout: গ্রহণকারীর security group peer-কে allow করে না, অথবা network ACL traffic বা ephemeral port-এ তার ফেরাটা আটকে দেয়।
- Security group rule বাতিল: অন্য Region-এর peer VPC-র security group reference করা হয়েছে। CIDR ব্যবহার করো।
- Traffic উল্টো internet দিয়ে যায়: app public DNS নাম বা public IP ব্যবহার করছে; peering-এ DNS resolution চালু করো, private IP ব্যবহার করো। Peer-এর public IP-তে যাওয়া traffic internet gateway দিয়ে বেরোয়, আর internet-মুখী transfer হিসেবে বিল হয়।
- তৃতীয় VPC-তে পৌঁছানো যায় না: কেউ ধরে নিয়েছিল peering transitive।
- Peer থেকে internet বা on-premises-এ যাওয়া যায় না: কেউ ধরে নিয়েছিল edge-to-edge routing চলে।
- Peer group মুছে ফেললে বা peering মুছে গেলে stale security group rule: পরিষ্কার করে ফেলো।
- Region-এর মধ্যে বড় packet হারিয়ে যায়: inter-Region peering-এ ৮,৫০০ byte-এর বেশি jumbo frame; Path MTU Discovery-কে কাজ করতে দাও (ICMP “fragmentation needed” allow করো)।
#System design-এ এটা কীভাবে কাজে লাগে
- Prod আর analytics, বা app আর shared database: ভারী, কম-latency traffic-ওয়ালা দুটো VPC। একই AZ-এ peering ফ্রি, processing খরচও নেই, তাই একটা ব্যস্ত জোড়ার জন্য এটা hub-কে হারিয়ে দেয়।
- হাতে গোনা কয়েকটা VPC-র জন্য shared service: কয়েকটা application VPC প্রত্যেকে একটা shared-services VPC-র সাথে peered (directory, CI runner, monitoring)। Application VPC-গুলো এর মধ্য দিয়ে একে অপরের কাছে যেতে পারে না, আর অনেক সময় ঠিক এই আলাদা থাকাটাই চাওয়া হয়।
- Region পেরিয়ে replication-এর পথ: database replica, cache warming বা file sync দুই Region-এর মধ্যে inter-Region peering দিয়ে, encrypted, কোনো VPN appliance ছাড়াই।
- Partner integration: একটা data feed-এর জন্য দুই কোম্পানির account peered, প্রত্যেকে নিজের route আর security group নিজে সামলায়। শুধু একটা service খুলতে হলে, বা range overlap করলে, PrivateLink বেশি পরিষ্কার।
- বড় পরিসরে: অনেক VPC আর hybrid link-এর জন্য Transit Gateway, আর যে কয়েকটা VPC জোড়া সবচেয়ে বেশি ডেটা সরায়, team-রা তাদের জন্য transit gateway-র পাশাপাশি peering রাখে, GB-প্রতি processing খরচ এড়াতে।
#Peering, নাকি অন্য কিছু?
| দরকার | সবচেয়ে মানানসই | কেন |
|---|---|---|
| দুটো VPC, প্রচুর traffic, সবচেয়ে কম খরচ | VPC peering | ঘণ্টার বা processing খরচ নেই, একই AZ-এ ফ্রি |
| অনেক VPC, transitive routing, shared VPN/Direct Connect | Transit Gateway (২২.৬) | Hub and spoke, route table, একটা shared পথ |
| একটা service খোলা, CIDR overlap, এক দিকের access | PrivateLink (২২.২) | শুধু consumer → provider, network-এর মধ্যে কোনো routing নেই |
| অনেক account একটা network ভাগ করে | AWS RAM দিয়ে VPC sharing (২০.১) | Account-রা shared subnet-এ launch করে; জোড়ার কিছু নেই |
| কেন্দ্রীয় policy-সহ Region-জোড়া global network | AWS Cloud WAN (২২.৬-এ পাশের নোট) | Managed global core network |
#নিজে করে দেখো
# 1. In the prod account (ap-south-1): request a peering with the analytics account's VPC
aws ec2 create-vpc-peering-connection \
--vpc-id vpc-0a1b2c3d4e5f67890 \
--peer-vpc-id vpc-0f9e8d7c6b5a43210 \
--peer-owner-id 444455556666
# {
# "VpcPeeringConnection": {
# "VpcPeeringConnectionId": "pcx-0a1b2c3d4e5f60718",
# "Status": { "Code": "initiating-request", "Message": "Initiating Request to 444455556666" },
# "RequesterVpcInfo": { "CidrBlock": "10.10.0.0/16", "OwnerId": "111122223333" }, ...
# 2. In the analytics account: accept it (for cross-Region, run this in the accepter's Region)
aws ec2 accept-vpc-peering-connection --vpc-peering-connection-id pcx-0a1b2c3d4e5f60718
# "Status": { "Code": "provisioning", "Message": "Provisioning" }
# 3. Routes on BOTH sides
aws ec2 create-route --route-table-id rtb-0aaa1111example \
--destination-cidr-block 10.20.0.0/16 --vpc-peering-connection-id pcx-0a1b2c3d4e5f60718
aws ec2 create-route --route-table-id rtb-0bbb2222example \
--destination-cidr-block 10.10.1.0/24 --vpc-peering-connection-id pcx-0a1b2c3d4e5f60718
# { "Return": true }
# 4. Security group in the analytics VPC: allow PostgreSQL from the prod app's security group
aws ec2 authorize-security-group-ingress --group-id sg-0ccc3333example \
--ip-permissions 'IpProtocol=tcp,FromPort=5432,ToPort=5432,UserIdGroupPairs=[{GroupId=sg-0aa11bb22example,UserId=111122223333,VpcPeeringConnectionId=pcx-0a1b2c3d4e5f60718}]'
# 5. DNS: each owner enables resolution for its own side (accepter side shown)
aws ec2 modify-vpc-peering-connection-options \
--vpc-peering-connection-id pcx-0a1b2c3d4e5f60718 \
--accepter-peering-connection-options AllowDnsResolutionFromRemoteVpc=true
# 6. Inter-Region: request from Mumbai to a VPC in Singapore, then accept in Singapore
aws ec2 create-vpc-peering-connection --region ap-south-1 \
--vpc-id vpc-0a1b2c3d4e5f67890 --peer-vpc-id vpc-0123456789abcdef0 \
--peer-region ap-southeast-1
aws ec2 accept-vpc-peering-connection --region ap-southeast-1 \
--vpc-peering-connection-id pcx-0f9e8d7c6b5a43210
# 7. Check state, and find stale security group rules
aws ec2 describe-vpc-peering-connections \
--query "VpcPeeringConnections[].[VpcPeeringConnectionId,Status.Code]" --output table
aws ec2 describe-stale-security-groups --vpc-id vpc-0f9e8d7c6b5a43210
Prod VPC-র একটা instance থেকে private address দিয়ে পথটা পরীক্ষা করো:
$ dig +short ip-10-20-2-30.ap-south-1.compute.internal
10.20.2.30
$ nc -zv 10.20.2.30 5432
Connection to 10.20.2.30 5432 port [tcp/postgresql] succeeded!
$ traceroute -n 10.20.2.30
1 10.20.2.30 0.612 ms 0.540 ms 0.533 ms
traceroute-এ একটাই hop, এটাই আসল কথা: peering router না, তাই মাঝখানে বাড়তি কোনো hop নেই। nc ঝুলে থাকলে checklist ধরে এগোও: এই পাশের route, অন্য পাশের ফেরার route, security group, network ACL।
#সারসংক্ষেপ
মূল কথাগুলো
- VPC peering = AWS backbone দিয়ে ঠিক দুটো VPC-র মধ্যে private link; একই বা আলাদা account, একই বা আলাদা Region; gateway নেই, single point of failure নেই, bandwidth-এর বাধা নেই; এক জোড়ায় একটাই connection।
- Request → accept (ভিন্ন account: accepter accept করে; ভিন্ন Region: accepter-এর Region-এ accept; ৭ দিনে request-এর মেয়াদ শেষ)।
- দুই VPC-তেই route (যে subnet route table-এর দরকার, প্রতিটায়; পুরো CIDR বা একটা subnet), তারপর security group (peer SG reference শুধু একই Region-এ, ভিন্ন account-এ
account/sg-id) আর network ACL। - Peering-এর DNS resolution option public hostname-কে private IP-তে resolve করায়; Region পেরিয়ে private নামের জন্য এটা বাধ্যতামূলক।
- CIDR overlap চলবে না, আংশিকও না, secondary block-এও না; সমাধান re-IP, বা একটা service-এর জন্য PrivateLink। On-premises range-এও একই নিয়ম।
- Transitive না: A–B + B–C ≠ A–C। Edge-to-edge routing নেই: peer-এর IGW, NAT, VPN, Direct Connect বা gateway endpoint চলবে না।
- Full mesh = n(n−1)/2: ১০টা VPC = ৪৫, ১০০টা = ৪,৯৫০; quota প্রতি VPC-তে ৫০টা active (১২৫ পর্যন্ত) → অনেক VPC = Transit Gateway।
- Inter-Region: encrypted, MTU ৮,৫০০, SG reference নেই, inter-Region transfer-এর খরচ।
- খরচ: ঘণ্টার খরচ নেই, processing খরচ নেই; একই AZ (AZ ID দিয়ে) ফ্রি; cross-AZ প্রতি দিকে ~$০.০১/GB; দুটো ব্যস্ত VPC-র জন্য সবচেয়ে সস্তা।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
VPC peering connection-কে সবচেয়ে ভালোভাবে বোঝায় কোন কথাটা?
নিজেকে যাচাই করোপ্রশ্ন
কোন দুই জোড়া VPC peering connection দিয়ে জোড়া যায়?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
দুই VPC-র মধ্যে একটা peering connection active, কিন্তু instance-রা যোগাযোগ করতে পারছে না। Security group traffic allow করে। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একজন solutions architect VPC A (10.0.0.0/16)-এর সাথে VPC B (10.0.0.0/24)-এর peering করতে চাইল। Request সঙ্গে সঙ্গে fail করল। কেন?
নিজেকে যাচাই করোপ্রশ্ন
VPC A-র primary CIDR 10.1.0.0/16 আর secondary CIDR 172.16.0.0/16। VPC B ব্যবহার করে 172.16.0.0/20। Team শুধু 10.1.0.0/16 VPC B-তে route করতে চায়। Peering কি বানানো যাবে?
নিজেকে যাচাই করোপ্রশ্ন
VPC B-র কোনো NAT gateway নেই। ওর route table 0.0.0.0/0 পাঠায় VPC A-র সাথের peering connection-এ, যেখানে একটা চালু NAT gateway আছে। VPC B-র instance-রা internet-এ যেতে পারছে না। সঠিক সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
Peered VPC-র কোন দুটো resource অন্য VPC peering connection দিয়ে ব্যবহার করতে পারে না?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি চায় তার ১২টা VPC-র সবাই শুধু VPC peering দিয়ে একে অপরের কাছে পৌঁছাক। কয়টা peering connection লাগবে?
নিজেকে যাচাই করোপ্রশ্ন
VPC A (account 111122223333) আর VPC B (account 444455556666) একই Region-এ peered। VPC B-র database শুধু VPC A-র app server-দের security group থেকে traffic নেবে। Architect-এর কী করা উচিত?
নিজেকে যাচাই করোপ্রশ্ন
us-east-1 আর eu-west-1-এর দুটো VPC peered। eu-west-1-এ এমন একটা security group rule বানানো যাচ্ছে না, যেটা us-east-1-এর app security group-কে reference করে। Architect-এর কী করা উচিত?
নিজেকে যাচাই করোপ্রশ্ন
Inter-Region VPC peering নিয়ে কোন দুটো কথা সত্য?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা app server আর একটা database আলাদা account-এ, একই Region-এর peered VPC-তে। দুটোই AZ ID aps1-az1-এ। Peering দিয়ে data transfer-এর বিল কীভাবে হয়?
নিজেকে যাচাই করোপ্রশ্ন
VPC peering-এর খরচ নিয়ে কোন কথাটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
দুটো peered VPC মাসে ২০ TB ডেটা Availability Zone পেরিয়ে আদান-প্রদান করে। Cross-AZ transfer-এর খরচ প্রতি দিকে GB-প্রতি $0.01। এই traffic-এর মাসিক খরচ কত (1 TB = 1,024 GB)?
নিজেকে যাচাই করোপ্রশ্ন
Company A একই Region-এ Company B-র AWS account-এর একটা VPC-র দিকে peering request বানাল। কাকে accept করতে হবে?
নিজেকে যাচাই করোপ্রশ্ন
ap-south-1-এ একটা peering request বানানো হলো অন্য account-এর ap-southeast-1-এর একটা VPC-র দিকে। অন্য team বলছে তাদের console-এ কোনো request দেখা যাচ্ছে না। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা VPC peering request কতদিন pending-acceptance অবস্থায় থাকে, তারপর মেয়াদ শেষ হয়?
নিজেকে যাচাই করোপ্রশ্ন
দুটো peered VPC-র instance-রা একে অপরকে public DNS hostname দিয়ে ডাকে। Traffic peering দিয়ে না গিয়ে internet gateway দিয়ে বেরিয়ে যাচ্ছে। Architect-এর কী চালু করা উচিত?
নিজেকে যাচাই করোপ্রশ্ন
Security team চায় prod VPC (10.10.0.0/16) একটা peered analytics VPC-র শুধু database subnet 10.20.2.0/24-এ পৌঁছাক, আর কিছুতে না। Network স্তরে সবচেয়ে সহজ উপায় কী?
নিজেকে যাচাই করোপ্রশ্ন
VPC A-তে peering দিয়ে VPC B-তে যাওয়ার route আছে; VPC B-তে ফেরার কোনো route নেই। VPC B-র database-এ tcpdump চালালে app থেকে আসা SYN packet দেখা যায়, কিন্তু app timeout পায়। কেন?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানির ৮টা account-এ ৩০টা VPC। প্রতিটা VPC-কে বাকি সব VPC-তে আর একটা Direct Connect connection দিয়ে on-premises ডেটা সেন্টারে পৌঁছাতে হবে। Architect কী ব্যবহার করবে?
নিজেকে যাচাই করোপ্রশ্ন
Merger-এর পর দুই কোম্পানির VPC-ই 10.0.0.0/16 ব্যবহার করে। অন্য কোম্পানি থেকে শুধু একটা internal API ডাকতে হবে, আর কোনো VPC-র address বদলাতে কয়েক মাস লাগবে। Architect-এর কী করা উচিত?
নিজেকে যাচাই করোপ্রশ্ন
VPC peering নিয়ে কোন কথাটা সত্য না?
নিজেকে যাচাই করোপ্রশ্ন
একটা কোম্পানি peering দিয়ে ৬০টা VPC-র full mesh বানাতে চায়। কোন সীমায় সে আগে আটকাবে?
নিজেকে যাচাই করোপ্রশ্ন
VPC A-র একটা instance-কে peered VPC B-র একটা database-এ connect করতে হবে। VPC B-তে কোন দুটো setting থাকতেই হবে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা on-premises network ব্যবহার করে 10.0.0.0/8। 10.20.0.0/16 দিয়ে একটা নতুন VPC বানিয়ে Site-to-Site VPN দিয়ে জোড়া হলো। অফিসের কিছু subnet-এর server VPC-তে পৌঁছাতে পারছে না। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একজন architect প্রস্তাব দিলেন একই দুই VPC-র মধ্যে দুটো peering connection থাকুক, যাতে একটা নষ্ট হলে অন্যটায় চলে যাওয়া যায়। এই পরিকল্পনায় ভুল কী?
নিজেকে যাচাই করোপ্রশ্ন
একই Region-এর দুটো VPC মাসে ৫০ TB আদান-প্রদান করে, আর কিছুই জোড়ার দরকার নেই। কোন অপশনে network-এর খরচ সবচেয়ে কম?
নিজেকে যাচাই করোপ্রশ্ন
একটা ব্যস্ত application VPC peering-এর ওপারে একটা database-কে ডাকে। কোন দুটো সিদ্ধান্তে data transfer-এর বিল কমে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা application দুটো peered VPC-র মধ্যে ৯,০০১ byte-এর jumbo frame ব্যবহার করে। Database অন্য Region-এর একটা VPC-তে সরানোর পর (সেটাও peered) বড় transfer আটকে যায়, অথচ ছোট request ঠিকই চলে। সবচেয়ে সম্ভাব্য কারণ কী?