في هذه الصفحة
المقدمة
في المقال ده هنشوف مع بعض شوية من الـ Notes المهمة في الـ AWS Practitioner خصوصًا مع الـ EC2 Instances
Region
- منطقة جغرافية بيكون جواها Availability Zones اللى بيكون جواها cluster of data centers اللى ب deploy عليها ال applications بتاعتي
- بتبقي منتشرة فى العالم وكل region منفصلة عن التانية
بختار ال region دي بناءا على الآتي:
- الـ Latency
لو عندي مثلا website و ال end user بتاعي اللى هيستخدم ال website من Europe مينفعش اروح استخدم region ف Asia مثلا هيكون فيه Latency عليه وهو بي Access ال website
لو ال end user دة هي Access ـ latency sensitive applications or services زي ال video gaming or real time videos مثلا مينفعش يكون فيه تاخير عليه
- الـ Services
مش كل ال regions فيها نفس ال services ممكن تلاقي service موجودة ف region وف region تانية مش موجودة
- الـ Cost
مش كل ال services ليها نفس التكلفة ف كل ال regions .. تكلفة ال services بتختلف من region للتانية
- الـ Compliance or Data Sovereignty (سيادة)
- ممكن دولة يكون ليها قوانين معينة بتشترط بقاء ال data داخل حدود الدولة دي ومينفعش تخرج براها.
Availability Zone (AZ)
عباره عن data centers او اكتر ومنفصلين عن بعضهم physically .. ومنفصلين وبعاد عن بعض الى حد ما يكفي ان لو حصل كارثة زي مثلا زلزال او قطع تيار كهربي او كدا ال Availability Zones بتاعتي متتاثرش كلها .. اللى تقع التانية تشيل مكانها وهكذا
كل AZ ليها ال power, cooling and networking منفصلة.
ف دة بيضمنلك حاجتين من مميزات ال cloud :
- الـ Disaster recovery : ان لو حصل failure ف الservices بتاعتي بقدر ا recover بشكل سريع و automatic عن طريق ان بيكون عندي ال services دي فى data center تاني ف AZ تانية
- الـ Fault tolerance : ودي عباره عن ان لو عندي services ف مكان وredundant زيها ف مكان تاني لو حصل مشكلة ف المكان الاولاني ال services اللى ف المكان التاني بتاخد مكانها من غير ما ال end user يحس بحاجة
EC2 Instance (Elastic Compute Cloud)
عبارة عن web service بتقدمها AWS بتمكن ال user من انو يستأجر Virtual servers تُعرف باسم ال Instances
وانا بستأجر Virtual server بكون محدد انا محتاج RAM,CPU,OS and Storage قد اية وبالتالي هنا قسملك ال EC2 Instances ل
بعض Categories تقتدر تختار بينهم علي حسب ال use case بتاعتك :
- الـ General Purposes : بيكون فيها ال CPU , Memory And Networking مفيش فيهم حاجة اعلي من التانية وبستخدمها فى حالة ان لو عندك web server او dev environment بعمل فيها testing مثلا او لو عندك small or medium databases .. بيكون اسمها وانت بتختارها T3, T4g , ….
- الـ Compute Optimized : بستخدمها لل Applications اللى بتحتاج High performance processing زي ال media transcoding
- الـ Memory Optimized : بستخدمها لل Applications اللى بتحتاج High performance ف ال Memory
- الـ Storage Optimized : بستخدمها لل Applications اللى بتحتاج High performance ف ال Storage
- الـ Accelerated Computing : بستخدمها لو محتاج اعمل machine learning او complex calculations او graphic workloads
تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀
النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉
![](https://eqraatech.com/content/images/2024/06/pen-paper-promo-1.png)
![](https://substackcdn.com/image/fetch/f_auto,q_auto:best,fl_progressive:steep/https%3A%2F%2Feqraatech.substack.com%2Ftwitter%2Fsubscribe-card.jpg%3Fv%3D-1612242264%26version%3D9)
EC2 Payment Plans
- الـ on-demand : بدفع عند الحاجة فقط .. وليكن عندك application عاوز تعمل عليه test ف بتستخدم ال plan دي .. اللى هو ف السريع كدا هـ launch or terminate instance
- الـ Reserved : بتحجز instance من سنة ل 3 سنين.. طبعا كل ما عدد السنين زادت كل ما هتوفر اكتر .. ودي بتكون مناسبة لل applications اللى هيا عليها traffic ثابت او ال usage بتاعها مش بيتغير
- الـ Spot Instance : يعتبر اقل سعر ف ال plans المتاحة .. في ال plan دي انت بتستخدم ال unused EC2 Instances بسعر مخفض لكن ممكن تخسر ال instances بتاعك ف اي وقت لو سعر ال spot instance تخطي ال max price اللى انت محدده وليكن مثلا انت عاوز طول ما سعر ال instance متخطاش 5$/hr ف تمام هفضل مأجرها انما لو زاد عن كدا ف مش هاجرها .. ودة طبعا مش مناسب لل critical services
- الـ Savings plans : مناسبة لل applications اللى بيكون عليه varying workloads وبتتطلب flexibility فى ال instances types and regions ياعني ممكن تغير ال instance ف وسط المدة بتاعتك ..
جوا ال Savings plans موجود نوعين :
- الـ Compute Saving plan : ودي فيها تقدر تغير ال instance family .. من T3 to C5 مثلا .. ال instance family هي الحرف
- الـ EC2 instance Saving plan : ودي اقدر اغير فيها مثلا من C5 to C6 ولكن مقدرش اغير ال family
- الـ Dedicated Hosts : ف ال 4 انواع اللى فوق انت كنت بتاخد VM علي server وممكن customer تاني ياخد VM علي نفس ال server وهكذا .. هنا بقا انت بتاخد ال host كله ال server كله علشان لو عندك sensitive data او حاجة ميحصلش اي مشاكل
- الـ Dedicated Instance : زي اللى فات بالظبط ولكن مبيكونش ليك access عال physical hardware
وال Access بتاعك عال Hardware بيشمل الآتي:
- بيكون ليك full access عال physical servers زي انك تقدر تحط ال instances بتاعتك علي سيرفرات محددة وتبدل ما بينهم وكمان تعيد توزيع ال resources زي مانت عاوز.
- بتكون قادر انك تشوف ال physical attributes الخاصة بال host زي ال number of sockets, cores, and host ID.
Virtual Private Cloud (VPC)
- اي حاجة خاصة بال network بتبقي جوا ال VPC اللي بيكون جواها subnets,route tables and network gateways
- بالترتيب : ال Region جواها VPC وال VPC جواها ال AZ وال AZ جواها subnets مختلفة
- تقدر ت create اكتر من VPC داخل ال region وكل vpc بيكون ليها configuration منفصل عن ال vpc التانية
- وانت بت launch instance بتحدد هتحطها ف انهي VPC وف انهي subnet
- ال internet gateway : البوابة اللى من خلالها بتطلع عال internet
Security Group
أكنو Virtual Firewall بيكون على ال EC2 instances بتاعتك وبي control ال inbound and outbound traffic من خلال rules انت بتحددها بتخليك تتحكم ف ال protocols,ports and source/destination ip وهكذا
هتلاقي ان by default كل ال outbound traffic are allowed ياعني تقدر تكلم اي حد بره
هتلاقي ان by default كل ال inbound traffic are denied وف الحالة دي بتحدد ازاي هتتعامل مع ال inbound roles من خلال ال rules اللى بتحطها وليكن مثلا:
- حاطط rules بتسمح ب http traffic اللى جاي علي port 80
- حاطط rules بتسمح ب https traffic اللى جاي علي port 443
- حاطط rules بتسمح ب ssh traffic اللى جاي علي port 22 من ip معين فقط وفى الغالب بيكون root user ip
ممكن ت define اكتر من Security Group ل 1 instance
ال Security Group بتشتغل على ال EC2 instance level مش على ال subnet level , اللي بيشتغل على ال subnet هو ال network access control list
Network Interface
عبارة عن hardware component or software interface بت allow ال device زي ال (computer or server ) انو ي connect بال internet
بتسهل التواصل بين الاجهزة عن طريق الانترنت عن طريق transmitting and receiving data packages
ف AWS ال Network interface بيكون ليها :
- الـ IP Addresses: وممكن تتضمن Primary و Private IPv4 Address و أكتر من Secondary IPv4 Addresses
- الـ MAC Address: كل ENI بيكون عنده MAC Address مميز وخاص بيه وهي اختصار Media Access Control .
- الـ Security Groups: ممكن تربط الـ Security Groups بالـ ENIs عشان تتحكم في الـ Inbound والـ Outbound Traffic
- الـ Elastic IP: ممكن تـ Attach Elastic IP Address للـ ENI عشان تحصل على Static و Public Facing IP Addressing
- الـ Attachment: ممكن الـ ENIs تكون Attached أو Detached من الـ Instances وده بيسمحلك بتحقيق الـ Flexibility والمرونة في الـ Network Configurations
Elastic Network Interface (ENI)
- عبارة عن interface virtual بتكريتها وتعملها attach لل instance بتاعتك
- انت اول مبت launch ال EC2 Instance بتاعتك بتاخد private ip جوا ال subntet اللى انت حدتت انها تكون فيها
- جوا ال EC2 Instance هتلاقي option من خلاله تقدر تحدد هل هتدي ال EC2 Instance public ip ولا لا
- ال ENI زي مقولنا بيتعملها attach عال EC2 Instance ف بتكون جزا من ال EC2 Instance دي .. ف ساعتها ال EC2 Instance هيكون ليها 2 ip ال primary اللى هو ال private وال secondary بتاع ال ENI
- تقدر ت move ال ENI من ال EC2 الاولي للتانية عادي
EC2 Placement Group
- الـ Cluster : اول نوع من ال EC2 placement group ودة بنستخدمه لما يكون عندي مثلا application مستخدم كذا EC2 ومحتاج انهم يتكلمو مع بعض ب latency قليلة جدا وكفاءة network عالية ف ال cluster type هو الاختيار الامثل فى الحالة دي.
وخلي بالك انهم زي مانت شايف كدا بيكونو ف 1 AZ
- الـ Spread : لو ف ال cluster حصل مشكلة ف ال AZ ووقعت كدا كل ال EC2 طارت و ال application بتاعك وقف .. ف فى الحالة دي ممكن تستخدم ال Spread ودة بيضمنلك ان ال EC2 بتوعك ف اماكن منفصلة ف AZ منفصلة بحيث لو فيه حاجة منهم وقعت التانيين ياخدو مكانها وهكذا وال Application مينضرش. ياعني من الاخر محتاج high availability.
مشكلتها ان اخرك 7 EC2 ف كل AZ
- الـ Partition : ال AZ بيكون جواها ال partitions اللى بيكون جواها ال racks اللى بيكون جواها instances .. ومفيش partition بيshare نفس ال rack او نفس ال hardware مع partition تاني
زي spread لو partition وقع التانيين بيكونو شغالين ف the risk of failure هنا قليل.
هنا ممكن تحط 7 Partition جوا ال AZ .. وجوا كل partition بتحط عدد EC2 علي حسب ال Resources بتاعتك.
Lab1 Create : Region, VPC, AZ and EC2
From Search Bar >> VPC >> Actions >> Default VPc
- هنـ Create Default VPC لان ميزتها ان هيا بتـ configure automatic ال subnet , routing table
- بعد ما بتـ create ال default VPC بتلاقي ان فيها CIDR عباره عن ال network الكبيرة اللى بتقدر تقسمها لاكتر من subnet وكل subnet بتبقي جزأ من AZ مختلفة .. هنا زي مانت شايف 6 subnets وكل subnet جزأ من AZ مختلفة.
- ال 6 subnets جزأ من ال routing table اللى عنده default route بيبعتك عال internet gateway
- لو دخلت علي subnets من ال left list هتلاقي ال 6 subnets بتوعك وهتلاقي ان كل واحدة منهم جزأ من ال CIDR
- لو دخلت علي subnets من ال left list هتلاقي ال6 subnets بتوعك وهتلاقي ان كل واحدة منهم جزأ من ال CIDR
- يبقي كدا كل ال AZ بال subnets اللى جواها بتكون مشتركة ف routing table عنده default route بيبعت عال internet gateway
From Search Bar >> EC2 Instance >> Launch EC2
- Name : Web-Server
- OS : Amazon Linux
- Instance Type : T3 mirco as example
- Key Pair :
- Name : key123
- Type : RSA
- Format: .ppl
- Create And Download: .ppk
- Network Settings :
- VPC : هتختار ال VPC ال Default أو واحد تاني
- Subntet : هتختار ال subnet وزي ما قولنا كل subntet جزا من AZ مختلفة
- Auto Assign Public IP : هتختار enable او disable وف حالة disable يبقي ال EC2 دي مش هتقدر تكلم حد عالانترنت زي مشرحنا قبل كدا.
- Security Group : هتـ create واحد جديد او تختار existing one .. وزي مقولنا عباره عن rules بتـ control ال inbound , outbound traffic عال instance بتاعتي
- Storage Configuration : (بعدين)
- Advanced Details : choose the placement group (الباقي بعدين)
- User Data :
- من خلالها تقدر ت launch ال EC2 Instance دي ب script علشان متفضلش كل مرة تعمل نفس الخطوات.
- اقدر مثلا ب bash script اسطب LEMP stack بمجرد ما هحط ال script فيها وهكذا
- Number of Instances
- Launch and see it’s details.
- دلوقتي بعد ما خلصت هتلاقي عندك فال details حاجة اسمها Public IPV4 DNS لو دخلت عليه هيدخلك عال website اللى انت عاملها deploy عال instance دي .. دة تم من خلال ال script ف نقطة رقم 8
- تقدر تـ ssh عال EC2 عادي بقا من خلال ال Public IPV او من خلال putty configuration app ب ال IP , key اللى عملنالو download فوق بصيغة ppk.
- أو ت ssh عادي وف الحالة دي هتحتاج ال key يكون بصيغة pem.