Course-এর সূচি

3.2

VPC, Subnet আর আটকে রাখা পাঁচটা address

VPC কী, একেকটা subnet কীভাবে একেকটা Availability Zone-এ থাকে, default VPC, VPC-র সীমা, আর কেন একটা /27-এ ২৯টা সার্ভার ধরে না।

26 মিনিট পড়া + Animation

টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।

এই Lesson শেষে তুমি পারবে

  • VPC আসলে কী, এটা কাকে কার থেকে আলাদা রাখে, আর কেন একটা VPC সবসময় একটাই Region-এর মধ্যে থাকে, সেটা বুঝিয়ে বলতে।
  • পরীক্ষায় VPC-র যে সীমাগুলো ধরা হয় সেগুলো বলতে: CIDR কত বড় বা কত ছোট হতে পারে, Secondary Block, আর এক Region-এ কয়টা VPC।
  • Subnet-এর সঙ্গে Availability Zone-এর সম্পর্ক বোঝাতে, আর Subnet এমনভাবে সাজাতে যাতে একটা পুরো AZ বসে গেলেও Application চলতে থাকে।
  • প্রতিটা Subnet-এ AWS যে পাঁচটা Address নিজের কাছে রেখে দেয় সেগুলোর নাম বলতে, আর কয়টা Instance লাগবে সেই হিসাবে Subnet-এর সঠিক সাইজ বের করতে।
  • Default VPC-তে ঠিক কী কী আগে থেকে থাকে, মুছে ফেললে কীভাবে ফিরিয়ে আনবে, আর Production-এ কেন এটা ব্যবহার করা ঠিক না, তা বলতে।

#VPC কী

VPC (Virtual Private Cloud) হলো AWS-এর ভেতরে তোমার নিজের একটা প্রাইভেট Network, যেটা বাকি সবার থেকে আলাদা করে রাখা। বাস্তবে তোমার Server অন্য লাখো গ্রাহকের সঙ্গে একই Data Centre, একই তার ব্যবহার করছে। কিন্তু Network-এর দিক থেকে দেখলে VPC একদম আলাদা একটা Network, যেটা শুধু তুমিই দেখতে পাও। তুমি নিজে ইচ্ছা করে কোনো পথ খুলে না দিলে অন্য কোনো গ্রাহক বা Internet থেকে কেউই তোমার VPC-র ভেতরের কোনো Resource-এ পৌঁছাতে পারবে না।

একটা VPC-র ভেতরে সবকিছু তুমিই ঠিক করো:

  • Address-এর রেঞ্জ কী হবে (একটা CIDR Block, Lesson 3.1);
  • সেই রেঞ্জ কয়টা Subnet-এ ভাগ হবে, আর কোন Subnet কোন Data Centre-এ বসবে;
  • Route Table দিয়ে Traffic কোথায় কোথায় যেতে পারবে (Lesson 3.3);
  • Security Group আর Network ACL দিয়ে কী ঢুকতে পারবে আর কী বের হতে পারবে (Lesson 3.5);
  • Internet, তোমার অফিস বা অন্য VPC-র সঙ্গে কীভাবে যোগাযোগ হবে (Lesson 3.3–3.4 আর Chapter 22)।

#VPC-র নিয়মকানুন

পরীক্ষায় এই সীমাগুলো সরাসরি জিজ্ঞেস করে না, প্রশ্নের ঘটনার ভেতরে লুকিয়ে থাকে। তাই এগুলো তথ্য হিসেবে মুখস্থ রাখো:

নিয়মমান
পরিধিএকটা VPC থাকে একটাই Region-এ, আর সেই Region-এর সব Availability Zone-এ এটা ব্যবহার করা যায়। অন্য Region-এ এটা কখনো ছড়াতে পারে না।
CIDR-এর সাইজসবচেয়ে বড় /16 (৬৫,৫৩৬টা Address), সবচেয়ে ছোট /28 (১৬টা Address)।
Primary CIDRVPC বানানোর সময় যেটা দাও, পরে আর বদলানো যায় না।
Secondary CIDRপরে আরও Block জুড়ে দেওয়া যায়; শুরুতে প্রতি VPC-তে ৫টা IPv4 Block পর্যন্ত (এটা Quota, চাইলে বাড়ানো যায়)। নতুন Block যেন আগের কোনোটার সঙ্গে Overlap না করে।
এক Region-এ কয়টা VPCশুরুতে ৫টা (Soft Limit, অনুরোধ করলে বাড়িয়ে দেয়)।
IPv4সবসময় লাগবেই। IPv6 লাগবে কি না সেটা তোমার ইচ্ছা, দিলে IPv4-এর পাশাপাশি যোগ হয় (Chapter 22)।

#Subnet আর Availability Zone

Subnet হলো VPC-র Address রেঞ্জের একটা অংশ। যেমন 10.0.0.0/16 থেকে কেটে নেওয়া 10.0.10.0/24। VPC-তে যার যার Address আছে (EC2 Instance, Database, Load Balancer-এর Node), তারা সবাই কোনো না কোনো Subnet-এর ভেতরে থাকে।

Subnet নিয়ে দুটো কথা সবচেয়ে বেশি মনে রাখতে হবে:

  1. একটা Subnet থাকে ঠিক একটা Availability Zone-এ। Availability Zone (AZ) মানে এক বা একাধিক Data Centre, যাদের বিদ্যুৎ, ঠান্ডা রাখার ব্যবস্থা আর Network আলাদা। একই Region-এর অন্য AZ থেকে এগুলো বেশ খানিকটা দূরে থাকে, আবার দ্রুত ও কম Latency-র প্রাইভেট লাইন দিয়ে একে অন্যের সঙ্গে যুক্ত। প্রতিটা Region-এ কমপক্ষে তিনটা AZ থাকে। VPC সবগুলো AZ জুড়ে থাকে, কিন্তু প্রতিটা Subnet একটা AZ-এই আটকে থাকে।
  2. “Public” বা “Private” Subnet-এর কোনো Setting না। কোনো Subnet-এর Route Table যদি Internet-এর Traffic একটা Internet Gateway-তে পাঠায়, তাহলে সেটা Public। না পাঠালে সেটা Private। কীভাবে এটা করতে হয়, Lesson 3.3-এ বিস্তারিত দেখবে।

VPC পুরো Region জুড়ে থাকে, কিন্তু প্রতিটা Subnet থাকে একটা AZ-এ

দুটো AZ নিয়ে একটা VPC ধাপে ধাপে বানাও, তারপর একটা পুরো Availability Zone বসিয়ে দিয়ে দেখো কী হয়।

পরিস্থিতি

Region → VPC → Availability Zone → Subnet → Instance।

AWS Cloud
Regionap-southeast-1
ধাপ 1 / 6
1

সবকিছুর শুরু একটা Region থেকে। Region মানে Singapore (ap-southeast-1)-এর মতো একটা ভৌগোলিক এলাকা, যেখানে একে অন্যের থেকে আলাদা কয়েক গুচ্ছ Data Centre থাকে। একটা VPC সবসময় ঠিক একটা Region-এর ভেতরেই থাকে।

একটা Subnet যেহেতু একাধিক AZ জুড়ে থাকতে পারে না, তাই High Availability পেতে হলে একই সাজানো দুই বা তার বেশি AZ-এ বারবার বানাতে হয়। যেমন AZ A-তে একটা Public আর একটা Private Subnet, AZ B-তেও হুবহু একই জোড়া, আর প্রতিটা স্তরের একটা করে কপি প্রতিটা AZ-এ। একটা AZ বসে গেলে অন্য AZ-এর কপিগুলো দিয়েই Application চলতে থাকে।

Production-এ সাধারণত প্রতিটা AZ-এ তিনটা স্তর রাখা হয়:

স্তরএখানে কী থাকেInternet থেকে কি পৌঁছানো যায়?
PublicLoad Balancer, NAT Gateway, (কালেভদ্রে) Bastion Hostহ্যাঁ, ইচ্ছা করেই এভাবে বানানো
Private (App)Application Server, Container, Lambda-র Network Interfaceনা; দরকার হলে NAT Gateway দিয়ে বাইরে যায়
Private (Data)Database, Cacheনা, আর সাধারণত বাইরের Internet-এ যাওয়ারও কোনো পথ থাকে না

#যে পাঁচটা Address AWS রেখে দেয়

প্রতিটা Subnet থেকে AWS পাঁচটা Address নিজের কাজের জন্য রেখে দেয়: প্রথম চারটা আর শেষেরটা। এগুলো তুমি কোনো Instance-কে কখনোই দিতে পারবে না। 10.0.0.0/24 দিয়ে উদাহরণ দেখো:

Addressকী কাজে রাখা
10.0.0.0Network Address: এটা দিয়ে Subnet-টাকেই চেনা হয়
10.0.0.1VPC Router: এই Subnet-এর Default Gateway
10.0.0.2DNS: Amazon-এর দেওয়া DNS Resolver (আসলে এটা উত্তর দেয় পুরো VPC রেঞ্জের শুরুর Address + 2-তে, তবু প্রতিটা Subnet-এই শুরু + 2 রেখে দেওয়া হয়)
10.0.0.3AWS ভবিষ্যতের কাজের জন্য রেখে দিয়েছে
10.0.0.255Broadcast Address: VPC-তে Broadcast চলে না, তাই AWS এটা বন্ধ করে রাখে

তাহলে হিসাবটা দাঁড়ায় ব্যবহার করা যাবে = মোট − 5:

SubnetমোটAWS রাখেব্যবহার করা যাবে
/2816511
/2732527
/2664559
/251285123
/242565251
/1665,536565,531

একটা Subnet-এর সবগুলো Address

প্রতিটা ঘর 10.0.1.0/n Subnet-এর একটা IPv4 Address। লাল ঘরগুলো সেই পাঁচটা, যেগুলো AWS নিজের জন্য রেখে দেয়; কেন রাখে জানতে যেকোনো একটার ওপর Hover বা Tap করো।

Subnet-এর সাইজ

10.0.1.0/28: 16 মোট − 5 AWS রাখে = 11 ব্যবহার করা যাবে

কয়টা Instance বসাবে29 জায়গা হবে না (/28: 11)
i

যেকোনো একটা ঘরে Hover বা Tap করো।

#সামনের জন্য জায়গা রেখে দাও

Subnet-এর Address শুধু Instance-ই খায় না। আরও কয়েকটা জিনিস মাথায় রাখো:

  • Load Balancer: প্রতিটা Load Balancer Node তার Subnet থেকে Address নেয়। Application Load Balancer ঠিকমতো Scale করতে হলে Subnet কমপক্ষে /27 হতে হবে, আর তাতে কমপক্ষে ৮টা Address খালি থাকতে হবে।
  • Container আর Lambda: এখনকার Networking-এ প্রতিটা Container Task একটা করে Address নেয়, VPC-তে যুক্ত Lambda-র প্রতিটা Network Interface-ও নেয়। ব্যস্ত একটা Kubernetes Cluster খুব তাড়াতাড়ি একটা /24 ভরিয়ে ফেলতে পারে।
  • Rolling Deployment আর Auto Scaling: Deployment চলার সময় পুরোনো আর নতুন Instance একসঙ্গে চলে, তাই কিছুক্ষণের জন্য Instance-এর সংখ্যা দ্বিগুণ হয়ে যায়।

Subnet একবার বানালে পরে আর তার সাইজ বদলানো যায় না। তাই নিশ্চিত না হলে একটু বড় Subnet নাও, অথবা VPC রেঞ্জে নতুন Subnet-এর জন্য জায়গা ফাঁকা রেখে দাও।

নিজেকে যাচাই করোপ্রশ্ন

একটা VPC-র রেঞ্জ 10.0.0.0/16। নিচের কোন কথাটা ঠিক?

#Default VPC

প্রতিটা AWS Account-এ প্রতিটা Region-এ আগে থেকেই একটা Default VPC বানানো থাকে, যাতে Networking-এর কিছু না জেনেও কয়েক সেকেন্ডে একটা Instance চালু করে ফেলা যায়। শেখার সময় এটা বেশ কাজের। আবার অসাবধানে কিছু Launch করলে সেটা ঠিক এখানেই গিয়ে বসে।

Default VPC: বানানোই থাকে, আর শুরু থেকেই Public

সব Account-এর সব Region-এ একটা করে থাকে। কোনো Network না বেছে Instance চালু করলে সেটা এখানেই এসে বসে।

পরিস্থিতি

AWS Cloud
Region
Default VPC172.31.0.0/16
AZ a/20
AZ b/20
AZ c/20
Internet Gateway
Internet
ধাপ 1 / 5
1

Default VPC সবসময় 172.31.0.0/16 নেয়, সব Region-এ, সব Account-এ। তাই প্রতিটা Default VPC অন্য সব Default VPC-র সঙ্গে Overlap করে। টুকটাক পরীক্ষা-নিরীক্ষায় অসুবিধা নেই, কিন্তু কখনো দুটোকে জোড়া লাগাতে গেলেই ঝামেলা।

Default VPC-তে যা যা থাকে:

  • CIDR 172.31.0.0/16, সব Region-এ আর সব Account-এ একই।
  • প্রতিটা AZ-এ একটা করে Default Subnet, প্রতিটা /20 (৪,০৯৬টা Address)।
  • সব Default Subnet-ই Public: একটা Internet Gateway লাগানো থাকে, Main Route Table 0.0.0.0/0-কে সেদিকে পাঠায়, আর Auto-assign Public IPv4 চালু থাকে। ফলে নতুন Instance নিজে থেকেই একটা Public Address পেয়ে যায়।
  • একটা Default Network ACL, যেটা ভেতরে-বাইরে সব Traffic যেতে দেয়।
  • একটা Default Security Group, যেটা বাইরে যাওয়ার (Outbound) সব Traffic যেতে দেয়, কিন্তু ভেতরে আসার (Inbound) Traffic নেয় শুধু একই Security Group-এর অন্য সদস্যদের কাছ থেকে। Internet থেকে আসা Traffic এটা ঢুকতে দেয় না।

Default VPC মুছে ফেললে Backup থেকে আর ফেরত আনা যায় না, তবে আবার নতুন করে বানানো যায়। VPC Console-এ গিয়ে Actions → Create default VPC বেছে নাও, অথবা aws ec2 create-default-vpc চালাও। AWS আগের মতো একই সাজানো দিয়ে এটা আবার বানিয়ে দেবে।

#নিজে হাতে করে দেখো

AWS CLI সেট করা থাকলে নিচের Command-গুলো চালাও (যেকোনো Region-এ চলবে; ভেতরে টাকা খরচ হয় এমন কিছু না রাখলে এই Resource-গুলোর কোনো খরচ নেই):

# এই Region-এ কোন কোন AZ আছে, আর সেগুলোর ID কী?
aws ec2 describe-availability-zones --query "AvailabilityZones[].[ZoneName,ZoneId]" --output table

# একটা VPC বানাও, আর দুটো আলাদা AZ-এ দুটো Subnet
VPC=$(aws ec2 create-vpc --cidr-block 10.0.0.0/16 --query Vpc.VpcId --output text)
aws ec2 create-subnet --vpc-id $VPC --cidr-block 10.0.0.0/24  --availability-zone-id apse1-az1
aws ec2 create-subnet --vpc-id $VPC --cidr-block 10.0.10.0/24 --availability-zone-id apse1-az2

# একটা Secondary CIDR Block জুড়ে দাও
aws ec2 associate-vpc-cidr-block --vpc-id $VPC --cidr-block 10.1.0.0/16

# প্রতিটা Subnet-এ এখনো কয়টা Address খালি আছে?
aws ec2 describe-subnets --filters Name=vpc-id,Values=$VPC \
  --query "Subnets[].[CidrBlock,AvailabilityZone,AvailableIpAddressCount]" --output table

শেষ Command-টা দেখাবে প্রতিটা নতুন /24-এ ২৫১টা Address খালি, ২৫৬টা না। কারণ রেখে দেওয়া পাঁচটা আগেই বাদ গেছে। তোমার Region আলাদা হলে প্রথম Command থেকে পাওয়া AZ ID বসিয়ে নিও। কাজ শেষ হলে Subnet আর VPC মুছে দিও।

#সারসংক্ষেপ

মনে রাখার কথা

  • VPC হলো একটা Region-এর ভেতরে সবার থেকে আলাদা করা একটা প্রাইভেট Network, যেটা সেই Region-এর সব AZ-এ ব্যবহার করা যায়। তুমি পথ না বানালে কিছুই ঢোকে না, কিছুই বেরও হয় না।
  • VPC-র CIDR Block হতে পারে /16 থেকে /28 পর্যন্ত। Primary Block আর বদলানো যায় না; জায়গা বাড়াতে Secondary Block জুড়ে দাও (শুরুতে প্রতি VPC-তে ৫টা)। শুরুর Quota: এক Region-এ ৫টা VPC।
  • Subnet হলো VPC রেঞ্জের একটা অংশ, যেটা থাকে ঠিক একটা AZ-এ। High Availability মানে অন্তত দুটো AZ-এ একই রকম Subnet সাজানো, প্রতি AZ-এ প্রতিটা স্তরের একটা করে কপি।
  • কোনো Subnet Public না Private, সেটা ঠিক করে Route Table, Subnet-এর কোনো Setting না।
  • AWS প্রতিটা Subnet-এ ৫টা Address রেখে দেয় (প্রথম চারটা + শেষেরটা): Network, VPC Router, DNS, ভবিষ্যতের কাজ, Broadcast। ব্যবহার করা যাবে = মোট − 5: /28 = ১১, /27 = ২৭, /26 = ৫৯, /24 = ২৫১।
  • Default VPC (172.31.0.0/16, প্রতি AZ-এ একটা Public /20, Internet Gateway, Auto-assign Public IP) সব Region-এ থাকে; মুছে গেলে “Create default VPC” দিয়ে আবার বানানো যায়। Production-এ Custom VPC ব্যবহার করো।