<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Abiola Omiyale</title>
    <description>The latest articles on DEV Community by Abiola Omiyale (@cli_tayo).</description>
    <link>https://dev.to/cli_tayo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F882509%2F976fbb41-4e1f-42b7-b776-ed9f1c1c796f.jpeg</url>
      <title>DEV Community: Abiola Omiyale</title>
      <link>https://dev.to/cli_tayo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cli_tayo"/>
    <language>en</language>
    <item>
      <title>How I Designed and Animated a Water Bottle Ad Using CapCut Desktop + AI Tool</title>
      <dc:creator>Abiola Omiyale</dc:creator>
      <pubDate>Mon, 28 Jul 2025 01:24:45 +0000</pubDate>
      <link>https://dev.to/cli_tayo/how-i-designed-and-animated-a-water-bottle-ad-using-capcut-desktop-ai-tool-36lg</link>
      <guid>https://dev.to/cli_tayo/how-i-designed-and-animated-a-water-bottle-ad-using-capcut-desktop-ai-tool-36lg</guid>
      <description>&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;This project documents the creative process behind a water bottle commercial animation titled &lt;strong&gt;"Lovely Ultra."&lt;/strong&gt; The animation was built using CapCut Desktop, with assets generated through AI (ChatGPT + DALL·E), edited in &lt;strong&gt;&lt;a href="https://photopea.com" rel="noopener noreferrer"&gt;Photopea&lt;/a&gt;&lt;/strong&gt;, and animated using &lt;strong&gt;keyframes&lt;/strong&gt; and &lt;strong&gt;scene composition&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tools Used
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ChatGPT&lt;/td&gt;
&lt;td&gt;Text prompts for design assets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DALL·E&lt;/td&gt;
&lt;td&gt;Generating AI bottle images&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Photopea&lt;/td&gt;
&lt;td&gt;Extracting/cutting image parts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CapCut&lt;/td&gt;
&lt;td&gt;Animation &amp;amp; composition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;Version control + asset hosting&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  📦 Folder Structure
&lt;/h2&gt;

&lt;p&gt;lovely-ultra-animation/&lt;br&gt;
│&lt;br&gt;
├── assets/&lt;br&gt;
│ ├── bottle_no_label.png&lt;br&gt;
│ ├── bottle_cap.png&lt;br&gt;
│ ├── label_unwrapped.png&lt;br&gt;
│ ├── label_wrapped.png&lt;br&gt;
│ ├── final_bottle_lovely_ultra.png&lt;br&gt;
│ &lt;br&gt;
├── preview/&lt;br&gt;
│ └── lovely_ultra_ad_preview.mp4&lt;br&gt;
│&lt;br&gt;
└── README.md&lt;/p&gt;




&lt;h2&gt;
  
  
  Step-by-Step Process
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Asset Generation via ChatGPT + DALL·E
&lt;/h3&gt;

&lt;p&gt;Using prompts like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“A digital photograph features a clear plastic water bottle, no label, placed on a reflective surface. Bright studio lighting makes the bottle appear crisp.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;…we generated the key visuals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bottle without label&lt;/li&gt;
&lt;li&gt;Bottle cap&lt;/li&gt;
&lt;li&gt;Final bottle mockup&lt;/li&gt;
&lt;li&gt;Unwrapped and wrapped label&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these was exported as &lt;code&gt;.png&lt;/code&gt; with transparent backgrounds.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Cutting Out Assets in Photopea
&lt;/h3&gt;

&lt;p&gt;To prepare CapCut-ready assets:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://photopea.com" rel="noopener noreferrer"&gt;Photopea.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Load the image (e.g., bottle with label)&lt;/li&gt;
&lt;li&gt;Use:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pen Tool (P)&lt;/strong&gt; to outline the cap&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Magic Wand (W)&lt;/strong&gt; for easy background removal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Go to &lt;code&gt;Select &amp;gt; Inverse&lt;/code&gt; and hit &lt;strong&gt;Delete&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Export as PNG → &lt;code&gt;bottle_cap.png&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Repeat for each individual element needed in your animation.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. CapCut Desktop: Scene-by-Scene Animation
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Scene 1: Bottle Appears
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Drag in &lt;code&gt;bottle_no_label.png&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add &lt;strong&gt;Scale&lt;/strong&gt; and &lt;strong&gt;Fade In&lt;/strong&gt; keyframes (1.5s duration)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Scene 2: Cap Drops In
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Import &lt;code&gt;bottle_cap.png&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add vertical &lt;strong&gt;slide-in from top&lt;/strong&gt; keyframe (over 1s)&lt;/li&gt;
&lt;li&gt;Optional: add &lt;strong&gt;bounce&lt;/strong&gt; effect&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Scene 3: Label Wraps Around
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;label_unwrapped.png&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Position to side of the bottle&lt;/li&gt;
&lt;li&gt;Add &lt;strong&gt;slide + rotate&lt;/strong&gt; keyframes toward bottle (over 3s)&lt;/li&gt;
&lt;li&gt;Fade it out and fade in &lt;code&gt;label_wrapped.png&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Overlay &lt;code&gt;sparkle_overlay.png&lt;/code&gt;, set &lt;strong&gt;Blend Mode: Lighten&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Scene 4: Final Bottle Reveal
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;final_bottle_lovely_ultra.png&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Animate zoom in &amp;amp; overlay ripple sparkle background&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Optional: Voiceover + Background Music
&lt;/h2&gt;

&lt;p&gt;Use the following male narrator voiceover script:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Introducing Lovely Ultra – Pure hydration. Pure beauty. Crafted for excellence. Wherever life takes you, take Lovely Ultra.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can generate this with CapCut’s Text-to-Speech or external tools (e.g., ElevenLabs, PlayHT).&lt;/p&gt;




&lt;h2&gt;
  
  
  Preview
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://drive.google.com/file/d/1ot-BrzXpGrCFX9wT_2vT2ttOozluGKla/view?usp=sharing" rel="noopener noreferrer"&gt;🎬 Click to watch the preview video&lt;/a&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download CapCut Desktop (&lt;a href="https://www.capcut.com/tools/desktop" rel="noopener noreferrer"&gt;https://www.capcut.com/tools/desktop&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Open the &lt;code&gt;.cceproject&lt;/code&gt; file from &lt;code&gt;capcut_project/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Replace assets with your brand visuals&lt;/li&gt;
&lt;li&gt;Export as MP4 for sharing!&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  GitHub Repo
&lt;/h2&gt;

&lt;p&gt;Explore the full repo here: &lt;a href="https://github.com/Gydera/lovelyultraanimatedproject.git" rel="noopener noreferrer"&gt;github.com/Gydera/lovelyultraanimatedproject&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This project proves how accessible video ad creation has become using free tools, AI assistance, and smart design thinking. You can adapt this workflow for beverages, skincare, perfume, or any branded product.&lt;/p&gt;




&lt;h3&gt;
  
  
  Inspired? Fork the repo and remix it with your own brand!
&lt;/h3&gt;

</description>
      <category>chatgpt</category>
      <category>design</category>
      <category>ai</category>
    </item>
    <item>
      <title>Building a Sales Analytics Dashboard on Azure PostgreSQL + Azure Data Studio</title>
      <dc:creator>Abiola Omiyale</dc:creator>
      <pubDate>Mon, 21 Jul 2025 21:05:33 +0000</pubDate>
      <link>https://dev.to/cli_tayo/building-a-sales-analytics-dashboard-on-azure-postgresql-azure-data-studio-1kd7</link>
      <guid>https://dev.to/cli_tayo/building-a-sales-analytics-dashboard-on-azure-postgresql-azure-data-studio-1kd7</guid>
      <description>&lt;p&gt;In this post, I’ll walk you through how I deployed my Sales Analytics Project to an Azure PostgreSQL database, queried it using SQL, and visualized insights directly in Azure Data Studio. If you're just getting started with databases and want a real-world project to practice with, this one’s for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Project Repo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/Gydera/Sales-Analytics" rel="noopener noreferrer"&gt;Sales Analytics&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This SQL-only project simulates a retail store’s backend — with tables like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;products&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;customers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sales&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;store&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;staff&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We perform analysis to answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are the most bought items?&lt;/li&gt;
&lt;li&gt;Which regions bring in the most revenue?&lt;/li&gt;
&lt;li&gt;Who are our top customers?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Skills You'll Practice
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;PostgreSQL (SQL Queries)&lt;/li&gt;
&lt;li&gt;Azure Database for PostgreSQL&lt;/li&gt;
&lt;li&gt;Azure Data Studio Visualizations&lt;/li&gt;
&lt;li&gt;Connecting to cloud databases from your local machine&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Set Up Azure PostgreSQL
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Login to &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;Azure Portal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;"Azure Database for PostgreSQL"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Choose Single server (or Flexible Server for modern features)&lt;/li&gt;
&lt;li&gt;Fill in the details:

&lt;ul&gt;
&lt;li&gt;Server name&lt;/li&gt;
&lt;li&gt;Region&lt;/li&gt;
&lt;li&gt;Admin username and password&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Allow public access (for now):

&lt;ul&gt;
&lt;li&gt;Go to Networking &amp;gt; Firewall rules&lt;/li&gt;
&lt;li&gt;Add your current IP address&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click Create and wait for deployment&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 2: Clone the GitHub Repository
&lt;/h2&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/Gydera/Sales-Analytics.git" rel="noopener noreferrer"&gt;https://github.com/Gydera/Sales-Analytics.git&lt;/a&gt;&lt;br&gt;
cd Sales-Analytics&lt;/p&gt;

&lt;h2&gt;
  
  
  Inside This Repository
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;schema.sql&lt;/code&gt;&lt;/strong&gt;: Creates tables
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;seed_data.sql&lt;/code&gt;&lt;/strong&gt;: Inserts mock data
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;queries.sql&lt;/code&gt;&lt;/strong&gt;: The analytics query &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Connect Azure PostgreSQL to Azure Data Studio
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Open Azure Data Studio&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you don't have it, download from &lt;a href="https://learn.microsoft.com/en-us/sql/azure-data-studio/" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/sql/azure-data-studio/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Install PostgreSQL Extension&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to the &lt;strong&gt;Extensions&lt;/strong&gt; view (left sidebar or &lt;code&gt;Ctrl+Shift+X&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;PostgreSQL&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Install&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Set Up a New Connection&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on &lt;code&gt;New Connection&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Fill in the connection fields:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Server name&lt;/strong&gt;: &lt;code&gt;your-server-name.postgres.database.azure.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication Type&lt;/strong&gt;: &lt;code&gt;Username / Password&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Username&lt;/strong&gt;: &lt;code&gt;your-admin-username@your-server-name&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password&lt;/strong&gt;: &lt;code&gt;your-password&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database Name&lt;/strong&gt;: &lt;code&gt;postgres&lt;/code&gt; or your custom database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server Group&lt;/strong&gt;: Optional, for organization&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Connect&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 4: Create Tables and Load Sample Data
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create a New Database (Optional)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can use the default &lt;code&gt;postgres&lt;/code&gt; database or create a new one:&lt;br&gt;
            sql&lt;br&gt;
   &lt;code&gt;CREATE DATABASE sales_analytics;&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Switch to the New Database
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Azure Data Studio&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the SQL editor, click the &lt;strong&gt;database dropdown&lt;/strong&gt; near the top toolbar.&lt;/li&gt;
&lt;li&gt;Select your new database: &lt;code&gt;sales_analytics&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Run the Table Schema Script
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;code&gt;schema.sql&lt;/code&gt; file from your local project folder.&lt;/li&gt;
&lt;li&gt;Copy and paste the content into a new SQL editor window in Azure Data Studio.&lt;/li&gt;
&lt;li&gt;Click Run (F5 or the ▶ button) to execute all commands and create your tables.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Insert Seed Data
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;code&gt;seed_data.sql&lt;/code&gt; file from your project.&lt;/li&gt;
&lt;li&gt;Paste it into the SQL editor or open the file directly.&lt;/li&gt;
&lt;li&gt;Click Run to execute all the insert queries and populate your tables with mock data.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 5: Query and Visualize Your Data
&lt;/h2&gt;

&lt;p&gt;You’re now ready to start analyzing the data using SQL queries!&lt;/p&gt;

&lt;h3&gt;
  
  
  Example Query: Top 10 Most Purchased Products
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT product_name, COUNT(*) AS total_sold
FROM sales
JOIN products ON sales.product_id = products.product_id
GROUP BY product_name
ORDER BY total_sold DESC
LIMIT 10;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a Chart in Azure Data Studio
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run the query&lt;/strong&gt; from above.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Highlight the result table&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Click and drag across the result rows, or select a single cell.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the &lt;strong&gt;bottom-right corner&lt;/strong&gt; of the results pane, click the &lt;strong&gt;Chart icon&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Choose your preferred visualization type:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bar&lt;/li&gt;
&lt;li&gt;Pie&lt;/li&gt;
&lt;li&gt;Line&lt;/li&gt;
&lt;li&gt;Table&lt;/li&gt;
&lt;li&gt;Others&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Customize the chart:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a &lt;strong&gt;title&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Label your &lt;strong&gt;X and Y axes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Toggle &lt;strong&gt;data labels&lt;/strong&gt; for clarity&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Export the chart&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Click the &lt;strong&gt;camera icon&lt;/strong&gt; 📸 to export the chart as an image — perfect for use in reports, presentations, or documentation.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  🔗 Useful Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Gydera/Sales-Analytics" rel="noopener noreferrer"&gt;Project Repo on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/postgresql/" rel="noopener noreferrer"&gt;Azure PostgreSQL Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/sql/azure-data-studio/" rel="noopener noreferrer"&gt;Azure Data Studio&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>postgressql</category>
      <category>sql</category>
      <category>azure</category>
      <category>database</category>
    </item>
    <item>
      <title>How to highlight a cell or cells in Google Sheets for a value or given set of values</title>
      <dc:creator>Abiola Omiyale</dc:creator>
      <pubDate>Sun, 20 Nov 2022 18:47:42 +0000</pubDate>
      <link>https://dev.to/cli_tayo/how-to-highlight-a-cell-in-google-sheets-if-the-number-in-that-cell-is-greater-than-a-particular-value-specified-47np</link>
      <guid>https://dev.to/cli_tayo/how-to-highlight-a-cell-in-google-sheets-if-the-number-in-that-cell-is-greater-than-a-particular-value-specified-47np</guid>
      <description>&lt;p&gt;In this help article, I will be showing you how to highlight a cell in 'Google-sheets' if the number in that cell is greater than &lt;em&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Cells, rows, or columns can be formatted to change text or background color if they meet certain conditions in this help article when the number is greater than ten (10).&lt;/p&gt;

&lt;p&gt;For this example, I have created a &lt;em&gt;Google-sheets&lt;/em&gt; with a list of twenty-two items and their corresponding values, as shown in the image below :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3o0803mlqorn6foot28y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3o0803mlqorn6foot28y.png" alt=" " width="614" height="565"&gt;&lt;/a&gt; &lt;/p&gt;




&lt;p&gt;In the values column, we have a minimum value of 1  and a maximum value of 250. Since we are interested in highlighting only the cells with values greater than 10, To do this, do the following :&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Highlight all the Values Column B
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw6fm2jj09ae4c407v1ce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw6fm2jj09ae4c407v1ce.png" alt=" " width="558" height="552"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Click 'format' -&amp;gt; 'Conditional formatting' a toolbar will open to the right
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzz4afwdpp1yqz34tbx5o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzz4afwdpp1yqz34tbx5o.png" alt=" " width="687" height="678"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftp02rb71b95idmy66x5a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftp02rb71b95idmy66x5a.png" alt=" " width="300" height="656"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Select the following format rules in the format rules: format cells if value is "greater than" and value "10"; apply a desirable color; and click "done."&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7dhu8f7v4esxi8nrkkfu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7dhu8f7v4esxi8nrkkfu.png" alt=" " width="300" height="615"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  3. The cells with values greater than '10' are automatically selected.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqbhc4g2xbqebk1hmvaty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqbhc4g2xbqebk1hmvaty.png" alt=" " width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  End of article
&lt;/h3&gt;

&lt;p&gt;I hope the help article was helpful in providing the needed information to carry out similar tasks in your worksheets.&lt;/p&gt;

&lt;p&gt;Kindly drop your comments and questions in the message box, and I will attend to them.&lt;/p&gt;

</description>
      <category>community</category>
      <category>welcome</category>
    </item>
    <item>
      <title>Setting-Up Scale set and Load balancer On Azure</title>
      <dc:creator>Abiola Omiyale</dc:creator>
      <pubDate>Sat, 15 Oct 2022 09:56:15 +0000</pubDate>
      <link>https://dev.to/cli_tayo/setting-up-scale-set-and-load-balancer-on-azure-2p34</link>
      <guid>https://dev.to/cli_tayo/setting-up-scale-set-and-load-balancer-on-azure-2p34</guid>
      <description>&lt;p&gt;In this project ,I will show how to do the following :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a virtual machine to be syspreped and added to the Azure compute gallery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to Sysprep an image on Azure and add it to the Azure Compute gallery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a scale set from the image in the Azure compute gallery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Place a public load balancer in front of the scale set.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simulate a load intensive process on the scale set to confirm the scaling policy of the scale set.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;- Create A Virtual Machine :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;From all resources, select create a virtual machine&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixrovz6stwue4u5b68mr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixrovz6stwue4u5b68mr.png" alt=" " width="800" height="403"&gt;&lt;/a&gt;&lt;em&gt;&lt;strong&gt;(IMAGE 1)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can set up the virtual machine in any region, I will be using a Windows Server 2022 Datacenter Server Core-Gen 1 for this project. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07atairi67y3fgzyc067.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07atairi67y3fgzyc067.png" alt=" " width="800" height="366"&gt;&lt;/a&gt;&lt;em&gt;&lt;strong&gt;(IMAGE 2)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Allow the Port 80- HTTP (so that the users can access the webpage over the internet), and Port 3389-(to RDP into the virtual machine)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkdfqqxhgzc6jf7xqve0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkdfqqxhgzc6jf7xqve0.png" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;em&gt;&lt;strong&gt;(IMAGE 3)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the network tab, allow the application wizard to create a virtual network and subnet for the virtual machine.&lt;/p&gt;

&lt;p&gt;There is no further configuration to be added or completed; simply click the other tabs to review and create the virtual machine. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe3c0br37fm2chhrne872.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe3c0br37fm2chhrne872.png" alt=" " width="800" height="289"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 4)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9v2mrc9dlww3vvv113bl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9v2mrc9dlww3vvv113bl.png" alt=" " width="785" height="383"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 5)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Setting UP IIS (Internet Information Service) Web Server On The Virtual Machine&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the networking tab, we configure the RDP and map it to our IP address ( a security measure to keep access to the virtual machine restricted to the allowed IP address and from potential hackers).&lt;/p&gt;

&lt;p&gt;In the source drop-down menu, select "My IP address." But if you have multiple IP addresses that you want to also give access to, use the (IP Address) option as shown in image 6, and input the IP addresses, each separated by a semicolon.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv97ag154p9bumhd9msbc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv97ag154p9bumhd9msbc.png" alt=" " width="567" height="767"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 6)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4s2yuq85bhvqndfza9z8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4s2yuq85bhvqndfza9z8.png" alt=" " width="564" height="826"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 7)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the connect session , download the RDP file and launch the executable file, and connect to the virtual machine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2nv179c53ipftz1odc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2nv179c53ipftz1odc9.png" alt=" " width="734" height="316"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 8)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For Windows users, you already have the RDP client pre-installed on the system.&lt;/p&gt;

&lt;p&gt;For MAC (Apple Computers), you will need to download the Remote Desktop Client to use the RDP file executable.&lt;/p&gt;

&lt;p&gt;For some devices that cannot run an RDP client, such as the Google Chromebook, Azure has made available the option, Azure Bastion, to log in to the virtual machine. For more information, see: &lt;a href="https://learn.microsoft.com/en-us/azure/bastion/bastion-overview" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/bastion/bastion-overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwj0mjme7g3kpg03jp0xu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwj0mjme7g3kpg03jp0xu.png" alt=" " width="800" height="514"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 9)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpem40gu617xxtbajt893.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpem40gu617xxtbajt893.png" alt=" " width="267" height="141"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 10)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When you have logged into the virtual machine, launch the server manager from the start menu. If the server does not launch automatically, from the dashboard of the server manager, click Add roles and features so we can install IIS on the server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92panbntxer7uoqwa5nk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92panbntxer7uoqwa5nk.png" alt=" " width="719" height="662"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 11)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Check the role-based or feature-based installation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48cw8g6t1c5pkbroz6im.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48cw8g6t1c5pkbroz6im.png" alt=" " width="647" height="384"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 12)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Click your server name from the server pool.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqhg6uy4vylybjutrsyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqhg6uy4vylybjutrsyz.png" alt=" " width="800" height="366"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 13)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the select roles section, tick the web server IIS and click the option to add the feature and complete the installation process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ja78wn16an2ek6wfl58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ja78wn16an2ek6wfl58.png" alt=" " width="800" height="375"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7pym2lsjtkudy4x7hpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7pym2lsjtkudy4x7hpt.png" alt=" " width="800" height="402"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 14)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Go to the web root folder path, located in - windows-C:\inetpub\wwwroot\ &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfl8kc6dyxrxcxn800fl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfl8kc6dyxrxcxn800fl.png" alt=" " width="628" height="314"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 15)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;From Azure Portal, copy the public IP attached to the virtual machine and enter it into your browser. The default IIS webpage should be displayed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgdllo47chj0cprizpucf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgdllo47chj0cprizpucf.png" alt=" " width="800" height="419"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 16)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Replacing the default IIS webpage with my Portfolio page, &lt;a href="http://dgns.southafricanorth.cloudapp.azure.com/" rel="noopener noreferrer"&gt;http://dgns.southafricanorth.cloudapp.azure.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyboh7a8jir8md6ddcw3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyboh7a8jir8md6ddcw3s.png" alt=" " width="784" height="360"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 17)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Sysprep an Image on Azure and add it to Azure Compute gallery&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sysprep (System Preparation) prepares a Windows client or Windows Server installation for imaging &lt;/p&gt;

&lt;p&gt;Sysprep helps you Manage multiple PCs by creating a generic image that can be used across multiple hardware designs. For more information : &lt;a href="https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--system-preparation--overview?view=windows-11#sysprep-features" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sysprep--system-preparation--overview?view=windows-11#sysprep-features&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since we want to spin up a scale set , we want the image to be replicated across multiple servers when users from different locations try to access the content of our web server. which is a good use case for the design for business availability and redundancy when there is a large web traffic spike to a single server infrastructure. For more information, see: &lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machines/availability" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machines/availability&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To launch the sysprep program located in the directory %windir%\system32\sysprep, tick the generalize option and also shutdown &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7emwwta39q7g1aph0pn8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7emwwta39q7g1aph0pn8.png" alt=" " width="800" height="360"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsyi7wilr1mj1esgej8md.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsyi7wilr1mj1esgej8md.png" alt=" " width="800" height="364"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 18)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-Azure Compute gallery&lt;/strong&gt;&lt;br&gt;
An Azure Compute Gallery helps you build structure and organization around your Azure resources, like images and applications. For more information see: &lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machines/azure-compute-gallery&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the Azure portal, when the virtual machine shuts down, we use the capture button to create an image to be added to the Azure compute gallery. We select the option to generalise the image and create an image definition in the Azure compute gallery.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejpkpb42tjvo8f36a3tw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fejpkpb42tjvo8f36a3tw.png" alt=" " width="800" height="393"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 19)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then click the review and create button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdb5vsjyzma7fhct2stbo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdb5vsjyzma7fhct2stbo.png" alt=" " width="698" height="421"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 20)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Go to the resource after it has completed the set-up. You can also locate Azure compute galleries from the Azure portal global search. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5u12t2j1fuv5oefq9ai.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5u12t2j1fuv5oefq9ai.png" alt=" " width="779" height="615"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 21)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Create a scale set from the image in Azure compute gallery&lt;/strong&gt;&lt;br&gt;
Azure virtual machine scale sets let you create and manage a group of load-balanced VMs. The number of VM instances can automatically increase or decrease in response to demand or a defined schedule.&lt;/p&gt;

&lt;p&gt;For more information : &lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/overview#why-use-virtual-machine-scale-sets" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/overview#why-use-virtual-machine-scale-sets&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the Create the VMSS button after selecting the image definition we created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu37ckh2h58n0h3monzio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu37ckh2h58n0h3monzio.png" alt=" " width="680" height="469"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 22)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Creating the VMSS with availability options (depending on the business design needs, it is not a must) and orchestration mode as uniform , for more information : &lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-orchestration-modes" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-orchestration-modes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjq6aezw7mawp24jtvr4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjq6aezw7mawp24jtvr4b.png" alt=" " width="800" height="327"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 23)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We create the VMSS virtual machines (1 or more). In the networking tab of the virtual creation process, we will edit and disable Public IP , since we will put a load balancer in front of the VMSS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3s3cevkt98dw1zxq7qny.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3s3cevkt98dw1zxq7qny.png" alt=" " width="800" height="310"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5wlhzoyk9toctuyo5jq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5wlhzoyk9toctuyo5jq.png" alt=" " width="800" height="373"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 24)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa43vr8qf6lomqi64yfpp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa43vr8qf6lomqi64yfpp.png" alt=" " width="800" height="245"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 25)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We won't add a load balancer from this VMSS creation wizard. We will create it as a standalone resource and attach it to the VMSS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfzj25578gx71ettz53y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfzj25578gx71ettz53y.png" alt=" " width="762" height="483"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 26)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Create the virtual machine scale set, for this project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;initial count for the virtual machine to be one, &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;use a custom scaling policy, &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;scale out (adding more instances when these conditions are met) -CPU threshold &amp;gt;= 45 for a duration of five minutes and scale in policy (remove instance when CPU threshold is &amp;lt;= 40,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Maximum number of instances set to 8.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fve45i0cpdg26ri3qkz5o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fve45i0cpdg26ri3qkz5o.png" alt=" " width="778" height="439"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 27)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq2o97k590mc5no2cgubx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq2o97k590mc5no2cgubx.png" alt=" " width="727" height="277"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 28)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We tick the option to allow Azure to over provision for us in the case of critical virtual machine health and traffic spikes, when there is a delay in removing faulty virtual machines.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdm4ssnufn4veboeql9fo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdm4ssnufn4veboeql9fo.png" alt=" " width="696" height="324"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 29)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Click the review and create button. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdcdjjj2p8v0xr35zjsda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdcdjjj2p8v0xr35zjsda.png" alt=" " width="763" height="777"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 30)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The created virtual machine has no public IP attached to it, and the instance count is one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv243g1hw95r0jb802liv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv243g1hw95r0jb802liv.png" alt=" " width="783" height="591"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 31)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the monitoring section of the VMSS, the CPU average is under 20%.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg2ia9vfreeg491ccwg4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg2ia9vfreeg491ccwg4m.png" alt=" " width="800" height="443"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 32)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Place a public load balancer in front of the scale set&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create the load balancer with the following parameters: since we are attaching the load balancer to a VMSS, we can't use a Basic SKU load balancer, and since we want users to access the webpage of the VMSS, we create the load balancer as a Public , Tier Regional.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rbu1syqkk0kkt5banpi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rbu1syqkk0kkt5banpi.png" alt=" " width="800" height="445"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 33)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Frontend IP configuration , where we set up the public IP address for the backend (VMSS).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqybkgoy8a9kbn2j3ei9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqybkgoy8a9kbn2j3ei9.png" alt=" " width="800" height="420"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 34)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Backend pool, select the virtual network where the VMSS is located, with backend pool configuration (NIC).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo62te7xxvgjiga81y1ok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo62te7xxvgjiga81y1ok.png" alt=" " width="800" height="415"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 35)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Because in my environment , I have two virtual machines in the same VNET. It shows all the available virtual machines in the VNET that can be added to the backend pool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbp6pvteaz6o5qzgh460.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbp6pvteaz6o5qzgh460.png" alt=" " width="800" height="433"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 36)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85ghfz9m9u720a1iip8b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85ghfz9m9u720a1iip8b.png" alt=" " width="800" height="369"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 37)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the inbound rules section, we add the load balancing rules, using the configurations highlighted below :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkcmqpbgoua0nk1sf13on.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkcmqpbgoua0nk1sf13on.png" alt=" " width="800" height="401"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 38)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdc7jp7nx63jb6nsc82r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdc7jp7nx63jb6nsc82r.png" alt=" " width="800" height="428"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 39)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femdjyeiqpeva7ugjuwgq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femdjyeiqpeva7ugjuwgq.png" alt=" " width="800" height="416"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 40)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqzo4ot3x5kfvu3egjqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqzo4ot3x5kfvu3egjqm.png" alt=" " width="800" height="364"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 41)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We won't be adding outbound rules to the load balancer; we'll review and create them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fulgawdnbk0qsiw22r5sb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fulgawdnbk0qsiw22r5sb.png" alt=" " width="800" height="367"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 42)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We confirm the frontendIP configuration that will be attached to the VMSS is available (23.164.39.101).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffifp7xgmukkpndfeuzpo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffifp7xgmukkpndfeuzpo.png" alt=" " width="800" height="395"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 43)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Also confirm from the Azure portal for the Virtual Machine Scale Set that the frontend-IP configuration from the load balancer has been attached to the Virtual Machine Scale Set (enlarged(23.3164.39.101)).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe56z70jnmtrgbhknbo00.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe56z70jnmtrgbhknbo00.png" alt=" " width="800" height="383"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 44)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let's see if the IP still redirects to our page, and sure enough, it still loads my portfolio page. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvm9x2v9pxl7mi6k2o2bo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvm9x2v9pxl7mi6k2o2bo.png" alt=" " width="800" height="421"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 45)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Under the monitoring tab of the VMSS, the CPU average should be stable since the workload the webserver is receiving is stable. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjr5121wqpx5ol54c17d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjr5121wqpx5ol54c17d.png" alt=" " width="800" height="323"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 46)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Also confirming from the instance itself, the CPU average is also stable&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bagdacdo1wstuvwotue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bagdacdo1wstuvwotue.png" alt=" " width="800" height="371"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 47)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjzbplb3vccv7x82cg9we.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjzbplb3vccv7x82cg9we.png" alt=" " width="800" height="351"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 48)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Simulate a load intensive process on the scale set to confirm the scaling policy of the scale set.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this section, we will attempt to simulate a CPU intensive workload on the webserver, to confirm if the scale set , scale-out (adding more servers to cope with the increased workload when the CPU threshold is exceeded), and scale-in (removing extra servers when the CPU intensive process reduces and within the threshold set for CPU average) are correct.&lt;/p&gt;

&lt;p&gt;We will use the Azure serial console, which will give us access to the guest OS operation of the webserver. We provisioned a Windows server. For more information, see: &lt;a href="https://learn.microsoft.com/en-us/troubleshoot/azure/virtual-machines/serial-console-overview" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/troubleshoot/azure/virtual-machines/serial-console-overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the prompts appear in the command prompt after launching the serial console, do the following :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;in the SAC prompt,input : cmd&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;in the channel prompt, input : ch -si 1&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13trscyai700zafrka9j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13trscyai700zafrka9j.png" alt=" " width="800" height="330"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 49)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Input your username, then press enter for domain (the server is not domain joined), and your password.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvy53xruh5b5sqwxeou1n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvy53xruh5b5sqwxeou1n.png" alt=" " width="800" height="350"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 50)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then, in the windows prompts to switch to PowerShell , type PowerShell. The script to help simulate is a PowerShell script.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxkbuihuvild2pcqpirbu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxkbuihuvild2pcqpirbu.png" alt=" " width="800" height="353"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 51)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Copy and paste the PowerShell script into the prompt and press enter when it prompts for the enter key. &lt;br&gt;
The PowerShell script is in the code snippet below. Sourced from this site : &lt;a href="https://www.robvit.com/windows_server/generate-cpu-load-with-powershell/" rel="noopener noreferrer"&gt;https://www.robvit.com/windows_server/generate-cpu-load-with-powershell/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;NOTE: *&lt;/em&gt; Please don't use this script in a production or critical server environment. This a test environment and project, and the servers will be deleted after this exercise.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fir7pxsymy3iit5qr7fsh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fir7pxsymy3iit5qr7fsh.png" alt=" " width="800" height="361"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 52)&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
$NumberOfLogicalProcessors = Get-WmiObject win32_processor | Select-Object -ExpandProperty NumberOfLogicalProcessors

ForEach ($core in 1..$NumberOfLogicalProcessors){ 

start-job -ScriptBlock{

    $result = 1;
    foreach ($loopnumber in 1..2147483647){
        $result=1;

        foreach ($loopnumber1 in 1..2147483647){
        $result=1;

            foreach($number in 1..2147483647){
                $result = $result * $number
            }
        }

            $result
        }
    }
}

Read-Host "Press any key to exit..."
Stop-Job * 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After some minutes of rechecking the CPU average metrics of the virtual machine, there is a sudden spike in the CPU usage.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57molmh5aqe7muykyvzo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F57molmh5aqe7muykyvzo.png" alt=" " width="800" height="375"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 53)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Checking the instance count of the virtual machines, there is a scale-out ( more instances are being added).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5njjrxx6cke06cqtgg7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5njjrxx6cke06cqtgg7.png" alt=" " width="800" height="347"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 54)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;From the monitoring tab of the virtual machine scale set, we can see the spike in the CPU average (Note : this was taken after the CPU average had gone back to the normal level, to show the peak and low periods).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ymvf24qq8wsmsmm7d2z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ymvf24qq8wsmsmm7d2z.png" alt=" " width="800" height="350"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 55)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The instance count confirms that the total number of virtual machines has been added and deleted. In the scaling rule, the instance maximum limit was pegged at 8 instances, as shown in &lt;em&gt;&lt;strong&gt;image 57&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzith60i4z4y0u457joz3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzith60i4z4y0u457joz3.png" alt=" " width="800" height="355"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 56)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0acyx24zav9eb1ptu5dd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0acyx24zav9eb1ptu5dd.png" alt=" " width="800" height="427"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 57)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The instance been automatically deleted, when scale-in rule kicked in.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgt7ruo3il95dw2pc423r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgt7ruo3il95dw2pc423r.png" alt=" " width="800" height="343"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 58)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Another look at the CPU average when it has gone back to its normal state after the spike.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx9dryryjgtxc0lfvyvn1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx9dryryjgtxc0lfvyvn1.png" alt=" " width="800" height="363"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 59)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And we are back to one virtual machine (named enlargedscale_3 in my environment, I started with enlargedscale_1).&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff0w8xh7o4mpbywkbxfd3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff0w8xh7o4mpbywkbxfd3.png" alt=" " width="800" height="342"&gt;&lt;/a&gt; &lt;em&gt;&lt;strong&gt;(IMAGE 60)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The next projects will be working on the Arm template to spin up virtual machines and different resources.&lt;/p&gt;

&lt;p&gt;Links to other Azure projects :&lt;br&gt;
Setting-Up A Basic Azure Load Balancer &amp;amp; Availability Sets &lt;a href="https://dev.to/cli_tayo/setting-up-a-basic-azure-load-balancer-availability-sets-14m1"&gt;https://dev.to/cli_tayo/setting-up-a-basic-azure-load-balancer-availability-sets-14m1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Adding A Virtual Machine To An Existing Availability sets On Azure&lt;br&gt;
&lt;a href="https://dev.to/cli_tayo/adding-a-virtual-machine-to-an-existing-availability-sets-on-azure-ahh"&gt;https://dev.to/cli_tayo/adding-a-virtual-machine-to-an-existing-availability-sets-on-azure-ahh&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Adding A Virtual Machine To An Existing Availability sets On Azure</title>
      <dc:creator>Abiola Omiyale</dc:creator>
      <pubDate>Sat, 01 Oct 2022 12:22:13 +0000</pubDate>
      <link>https://dev.to/cli_tayo/adding-a-virtual-machine-to-an-existing-availability-sets-on-azure-ahh</link>
      <guid>https://dev.to/cli_tayo/adding-a-virtual-machine-to-an-existing-availability-sets-on-azure-ahh</guid>
      <description>&lt;p&gt;In this project, we will be adding a standalone virtual machine to an existing availability set on Azure . The PowerShell script can also be used to change the availability set of a virtual machine to another availability set.&lt;/p&gt;

&lt;p&gt;An availability set is a logical grouping of VMs that allows Azure to understand how your application is built to provide for redundancy and availability. We recommended that two or more VMs are created within an availability set to provide for a highly available application and to meet the 99.95% Azure SLA, for more information see : &lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machines/availability-set-overview#what-is-an-availability-set" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machines/availability-set-overview#what-is-an-availability-set&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9xej4jtk9twcruwgq16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo9xej4jtk9twcruwgq16.png" alt=" " width="800" height="430"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 1)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each availability set can be configured with up to three fault domains and twenty update domains. These configurations can't be changed once the availability set has been created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhpowhrjxk7oifuq9442a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhpowhrjxk7oifuq9442a.png" alt=" " width="346" height="484"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 2)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First we create two virtual machines, available1 and available2, into the same availability set (availabilitysetgroup).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuduu952ax4t0rtnwp3b5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuduu952ax4t0rtnwp3b5.png" alt=" " width="800" height="411"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 3)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We can confirm the availability of a virtual machine from the availability + scaling option. In image 4 below, the virtual machine (available1) is in the fault domain--0 and update domain--0.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmcio6ynk6ts2fuhhnrw1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmcio6ynk6ts2fuhhnrw1.png" alt=" " width="800" height="388"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 4)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The second virtual machine (available2), IMAGE 5, is in the Fault domain--1, and Update domain--1.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzt0v5xdydctjquy6gs1y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzt0v5xdydctjquy6gs1y.png" alt=" " width="800" height="381"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 5)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwk1zvmcetczaqipaw84l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwk1zvmcetczaqipaw84l.png" alt=" " width="800" height="278"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 6)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The virtual machine named "notavailable" is to be added to the availability sets (availabilitysetgroup), IMAGE 7.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcm0zgsh4tg9pl7tygvl0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcm0zgsh4tg9pl7tygvl0.png" alt=" " width="800" height="369"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 7)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before carrying out the process , crosscheck that the following are in place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; The VM (notavailable) disks, NICs, and Public IPs associated with a VM are not configured to be deleted when the VM is deleted.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxbr23h4qo5hag3fy8oo2.png" alt=" " width="761" height="471"&gt; &lt;strong&gt;(IMAGE 8)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fftxbasmgtt3kzp5ne0w7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fftxbasmgtt3kzp5ne0w7.png" alt=" " width="555" height="110"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 9)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you configure these resources to be automatically deleted, you can update the settings so that the resources remain after the VM is deleted. To keep these resources, set the deleteOption property to Detach &lt;br&gt;
&lt;code&gt;az resource update --resource-group myResourceGroup --name myVM --resource-type virtualMachines --namespace Microsoft.Compute --set properties.storageProfile.osDisk.deleteOption=detach&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Move the VM (notavailable) to the same resource group , where the availability sets VM are in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Launch Cloudshell from Azure portal&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zfqvatvgl0faeobjset.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zfqvatvgl0faeobjset.png" alt=" " width="800" height="43"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 10)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Switch to PowerShell &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ldccc97pvors1rbqrpk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ldccc97pvors1rbqrpk.png" alt=" " width="601" height="332"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 11)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We will execute the PowerShell commands block by block , and then press enter. The complete PowerShell is inserted in the code block after image 12. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dsutuvmwtf5d4p3bz9q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2dsutuvmwtf5d4p3bz9q.png" alt=" " width="695" height="298"&gt;&lt;/a&gt; (IMAGE 12)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Set variables
    $resourceGroup = "availabilityset"
    $vmName = "notavailable"
    $newAvailSetName = "availabilitysetgroup"

# Get the details of the VM to be moved to the Availability Set
    $originalVM = Get-AzVM `
       -ResourceGroupName $resourceGroup `
       -Name $vmName

# Create new availability set if it does not exist
    $availSet = Get-AzAvailabilitySet `
       -ResourceGroupName $resourceGroup `
       -Name $newAvailSetName `
       -ErrorAction Ignore
    if (-Not $availSet) {
    $availSet = New-AzAvailabilitySet `
       -Location $originalVM.Location `
       -Name $newAvailSetName `
       -ResourceGroupName $resourceGroup `
       -PlatformFaultDomainCount 2 `
       -PlatformUpdateDomainCount 2 `
       -Sku Aligned
    }

# Remove the original VM
    Remove-AzVM -ResourceGroupName $resourceGroup -Name $vmName

# Create the basic configuration for the replacement VM.
    $newVM = New-AzVMConfig `
       -VMName $originalVM.Name `
       -VMSize $originalVM.HardwareProfile.VmSize `
       -AvailabilitySetId $availSet.Id

# For a Linux VM, change the last parameter from -Windows to -Linux and vice-versa
    Set-AzVMOSDisk `
       -VM $newVM -CreateOption Attach `
       -ManagedDiskId $originalVM.StorageProfile.OsDisk.ManagedDisk.Id `
       -Name $originalVM.StorageProfile.OsDisk.Name `
       -Linux

# Add Data Disks
    foreach ($disk in $originalVM.StorageProfile.DataDisks) { 
    Add-AzVMDataDisk -VM $newVM `
       -Name $disk.Name `
       -ManagedDiskId $disk.ManagedDisk.Id `
       -Caching $disk.Caching `
       -Lun $disk.Lun `
       -DiskSizeInGB $disk.DiskSizeGB `
       -CreateOption Attach
    }

# Add NIC(s) and keep the same NIC as primary; keep the Private IP too, if it exists.
    foreach ($nic in $originalVM.NetworkProfile.NetworkInterfaces) {    
    if ($nic.Primary -eq "True")
    {
            Add-AzVMNetworkInterface `
               -VM $newVM `
               -Id $nic.Id -Primary
               }
           else
               {
                 Add-AzVMNetworkInterface `
                -VM $newVM `
                 -Id $nic.Id 
                }
      }

# Recreate the VM
    New-AzVM `
       -ResourceGroupName $resourceGroup `
       -Location $originalVM.Location `
       -VM $newVM `
       -DisableBginfoExtension
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see the image output in image 13 if the PowerShell script execution was successful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2pjmipc7tp4j3dyc8pom.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2pjmipc7tp4j3dyc8pom.png" alt=" " width="800" height="171"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 14)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Checking back into the availability set group, we can confirm the VM (notavailable) has been added to the available set. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2l7r1odrwxhgr9k8gvm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2l7r1odrwxhgr9k8gvm.png" alt=" " width="800" height="249"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 15)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9pgssgmqa4oqyj8yrdps.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9pgssgmqa4oqyj8yrdps.png" alt=" " width="800" height="397"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 16)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Notice that two VMs, notavailable and available1, are in the same fault domain. This is due to the fact that during the availability set creation we only configured for two fault domains.&lt;/p&gt;

&lt;p&gt;Microsoft documentation to change the availability sets :&lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machines/windows/change-availability-set" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machines/windows/change-availability-set&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/Gydera/PowerShell-Script-To-Add-Azure-Virtual-Machine" rel="noopener noreferrer"&gt;https://github.com/Gydera/PowerShell-Script-To-Add-Azure-Virtual-Machine&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>cloudskills</category>
    </item>
    <item>
      <title>Setting-Up A Basic Azure Load Balancer &amp; Availability Sets</title>
      <dc:creator>Abiola Omiyale</dc:creator>
      <pubDate>Sat, 24 Sep 2022 10:26:52 +0000</pubDate>
      <link>https://dev.to/cli_tayo/setting-up-a-basic-azure-load-balancer-availability-sets-14m1</link>
      <guid>https://dev.to/cli_tayo/setting-up-a-basic-azure-load-balancer-availability-sets-14m1</guid>
      <description>&lt;p&gt;In this project, I will show you how to create and link the following resources on the Azure cloud platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2axr2ejd4jouwpa1mfip.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2axr2ejd4jouwpa1mfip.png" alt=" " width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Provision an Azure virtual machine with an Ubuntu OS image.&lt;/li&gt;
&lt;li&gt;Availability sets &lt;/li&gt;
&lt;li&gt;Install Apache webserver on the Azure virtual machine (Cloud Init). &lt;/li&gt;
&lt;li&gt;Load Balancer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To carry out a reproduction of the same projects in this task, you can create an Azure account and have access to myriads of resources to play with. (Note : This is not an affiliate or sponsored ad for Azure.)&lt;br&gt;
&lt;a href="https://azure.microsoft.com/en-us/free/" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9iwrrdjarasn00hhudrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9iwrrdjarasn00hhudrr.png" alt=" " width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt; &lt;strong&gt;Provision an Azure virtual machine with an Ubuntu OS image&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;From the Azure home portal, locate and click the all resources button to see all the available resources you can work with on your subscription. &lt;br&gt;
Better still, we can always search for the resource by name in the global search bar (e.g., searching for virtual machines will bring out the virtual machine resource).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkzptlmhkzao5kdctag8r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkzptlmhkzao5kdctag8r.png" alt=" " width="610" height="174"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 1)&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An Azure virtual machine gives you the flexibility of virtualization without having to buy and maintain the physical hardware that runs it. However, you still need to maintain the virtual machine by performing tasks, such as configuring, patching, and installing the software that runs on it.&lt;/p&gt;

&lt;p&gt;For more information on Azure Virtual machines: &lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machines/overview" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machines/overview&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Click on the create virtual machines button to launch the creation process for Azure Virtual Machines.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkh0vpegeozvailmaqizd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkh0vpegeozvailmaqizd.png" alt=" " width="770" height="287"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 2)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnxeztq8gk44el0zpdm1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnxeztq8gk44el0zpdm1.png" alt=" " width="800" height="351"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 3)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2 Availability Set&lt;/strong&gt;&lt;br&gt;
An Availability Set is a logical grouping capability for isolating VM resources from each other when they're deployed. Azure makes sure that if a hardware or software failure happens, only a subset of your VMs are impacted and your overall solution stays operational. Availability sets are essential for building reliable cloud solutions. For more information,see: &lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machines/availability#virtual-machines-scale-sets" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machines/availability#virtual-machines-scale-sets&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, in a house we have rooms 1 &amp;amp; 2; when you deploy your virtual machines into an availability set, Azure deploys the virtual machines into separate houses, such that if there is a disaster in room 1, it won't have an effect on room 2. The two rooms will only be down at the same time when the house (room 1 &amp;amp; room 2) is impacted by the disaster. &lt;br&gt;
There are various availability options to help with disaster recovery on Azure: &lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machines/availability" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machines/availability&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bp75qzzb316muxlxs4o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bp75qzzb316muxlxs4o.png" alt=" " width="800" height="140"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 4)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6ppn1l75403snvl8j3o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6ppn1l75403snvl8j3o.png" alt=" " width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can create an availability set as a stand-alone resource and attach and assign our virtual machines to the created availability sets. However, in this project, the availability sets will be created during the virtual machine instance creation (refer to image 3, where we launched the virtual machine resources creation).In the availability options, you select the drop down menu and select the availability sets.&lt;/p&gt;

&lt;p&gt;Click the "create new availability" button to create a new availability set.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd31ajvolg7k4e3hd5daz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd31ajvolg7k4e3hd5daz.png" alt=" " width="800" height="340"&gt;&lt;/a&gt; &lt;strong&gt;(Image 5)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The virtual machine creation process continues. Virtual machine OS Image: The OS image determines what purpose the virtual machine serves. You can provision a virtual machine as a Windows desktop, a Windows server, or a Linux server with various Linux distributions. For more information, see: &lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machines/overview#distributions" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machines/overview#distributions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the Image tab, select See all images to see all the available images on the Azure marketplace. (For this project, we will be using the Ubuntu Server 20.04 LTS-Gen2)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc45lto2lkjiee2wvzewo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc45lto2lkjiee2wvzewo.png" alt=" " width="800" height="232"&gt;&lt;/a&gt;&lt;strong&gt;(IMAGE 6)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;VM SIZE: Determine the type of virtual machine we get and the operations that can be performed on it. For more information, see: &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomqmag94ce73zks0i7gb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fomqmag94ce73zks0i7gb.png" alt=" " width="800" height="235"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 7)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Clicking the "See all sizes" option for the Virtual Machine size option shows all the sizes available to select in your subscription.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl467vr9dbatygp4hd93o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl467vr9dbatygp4hd93o.png" alt=" " width="800" height="268"&gt;&lt;/a&gt;&lt;strong&gt;(IMAGE 8)&lt;/strong&gt;-You can filter the VM cost by using the top/down toggle button).&lt;/p&gt;

&lt;p&gt;In another project, we will generate an SSH key for logging into a Linux server&lt;/p&gt;

&lt;p&gt;In the public inbound ports, select the allowed ports. In the allowed inbound ports (HTTPS 80—this will allow users to access the webserver webpages; Port 22—to allow a user to log into the webserver). (This settings can be controlled from the Network security group)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16lgvifdukuynp8mdc8e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16lgvifdukuynp8mdc8e.png" alt=" " width="800" height="309"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 9)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the selection of the virtual machine OS disks (for this project we will use a standard HDD ). Azure charges differently based on the type of disk you are using (Ultra Disk, Premium Disk, or Standard Disk ). For more information, see: &lt;a href="https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the networking tab, we will use the virtual network (VNET) and subnet automatically created by the Azure wizard for this project (Note: we can also create the VNET and subnet as standalone resources, and add the VM to it).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9qwmv05ldw7pokcrkq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9qwmv05ldw7pokcrkq6.png" alt=" " width="800" height="306"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 10)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This time we won't use the Azure wizard to automatically create a load balancer. We will create the load balancer as a stand-alone resource after completing the set up of the virtual machines and the availability sets.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvi82pldyk02k9osngt77.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvi82pldyk02k9osngt77.png" alt=" " width="800" height="275"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 11)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3 **  **Install Apache webserver on the Azure virtual machine (Cloud Init).&lt;/strong&gt; &lt;br&gt;
For custom data &amp;amp; cloud init, we will use a bash script to set-up a webserver (apache) during the virtual machine. For more information on cloud init: &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgho2t5nz6p5vqgtegjce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgho2t5nz6p5vqgtegjce.png" alt=" " width="800" height="318"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 12)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the custom data box input this bash script. :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/sh
sudo apt install apache2 -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the setup has been validated, create the VM. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm02xttrczx6keozehigi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm02xttrczx6keozehigi.png" alt=" " width="800" height="336"&gt;&lt;/a&gt; &lt;strong&gt;(Image 13)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When the VM has successfully been created, with the created VM attached public IP (51.142.119.100) we created in the network wizard tab, do this to confirm if the Apache webserver was successfully launched.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhkmsayq8k28cvoppzt4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhkmsayq8k28cvoppzt4i.png" alt=" " width="800" height="333"&gt;&lt;/a&gt; (Note : Port 80 (HTTP) was opened during the VM creation process from Image so we can access the webserver over the internet. Access to and from the VM is configured in the Network security group tab of the networking section as shown in IMAGE 9.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F186ptsvf3ogvankul496.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F186ptsvf3ogvankul496.png" alt=" " width="800" height="199"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 14)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We don't need a public IP for the VM, so we will disable the public IP currently attached to the VM. As we will be attaching a load balancer to the VM, the IP of the load balancer will sit in front of the virtual machines.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62pofj3udlhq3bzmh62g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62pofj3udlhq3bzmh62g.png" alt=" " width="800" height="346"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 15)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lub8z67yi3ip6pxup1a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lub8z67yi3ip6pxup1a.png" alt=" " width="800" height="310"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 16)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F36lngvstygp6v06xxjjr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F36lngvstygp6v06xxjjr.png" alt=" " width="800" height="354"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 17)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuiuuch3oc7ngb0nh22d0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuiuuch3oc7ngb0nh22d0.png" alt=" " width="800" height="306"&gt;&lt;/a&gt; &lt;strong&gt;(Image 18)&lt;/strong&gt; &lt;em&gt;&lt;strong&gt;(Use the toggle button to disassociate from the Public IP)&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We add another virtual machine to the same availability set as the first one. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkevnquv0cu98928uiii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkevnquv0cu98928uiii.png" alt=" " width="800" height="391"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 19)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the networking tab we add the virtual machine to the same virtual network(VNET), as the first virtual machine. Make certain that it is provisioned in the same region and virtual network as the first virtual machine, if not you won't be able to add it to the basic load balancer.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8aece7w49dbiq1v9ytcb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8aece7w49dbiq1v9ytcb.png" alt=" " width="800" height="363"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 20)&lt;/strong&gt; (We will disable the public IP from setup wizard this time) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5bjdvtqw1oidawnnfo2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5bjdvtqw1oidawnnfo2.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;strong&gt;(IMAGE 21)&lt;/strong&gt; (the second virtual machine in the availability set.&lt;/p&gt;

&lt;p&gt;You can confirm the availability setup of the virtual machine from the availability and scaling section. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwd07ee3s0848vez1xrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwd07ee3s0848vez1xrr.png" alt=" " width="800" height="312"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 22)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4&lt;/strong&gt; *&lt;em&gt;Load Balancer *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Load balancing refers to evenly distributing load (incoming network traffic) across a group of backend resources or servers.&lt;/p&gt;

&lt;p&gt;Azure Load Balancer operates at layer 4 of the Open Systems Interconnection (OSI) model. It's the single point of contact for clients. Load balancer distributes inbound flows that arrive at the load balancer's front end to backend pool instances. These flows are according to configured load-balancing rules and health probes. The backend pool instances can be Azure Virtual Machines or instances in a virtual machine scale set. &lt;br&gt;
For more information : &lt;a href="https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-overview" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/load-balancer/load-balancer-overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can locate the load balancer resources from all resources, or from the global search. &lt;strong&gt;(IMAGE 23)&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fubsjwc4rsgi3bkeyaawc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fubsjwc4rsgi3bkeyaawc.png" alt=" " width="800" height="396"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;We will be using Azure basic load balancer, SKU, as the public load balancer for this project since we intend to serve websites from the virtual machines. For more information on Azure load balancer SKUs, see: &lt;a href="https://learn.microsoft.com/en-us/azure/load-balancer/skus#skus" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/load-balancer/skus#skus&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6m5a4e2c4weok1ewkwo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz6m5a4e2c4weok1ewkwo.png" alt=" " width="800" height="351"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 24)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We will add a public IP to the load balancer that will sit at the front of the availability set that has the virtual machines.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvp6svqp8nuwwguyyp58s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvp6svqp8nuwwguyyp58s.png" alt=" " width="800" height="333"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 25)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc65vui5rugry9fxx8dnq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc65vui5rugry9fxx8dnq.png" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;strong&gt;(IMAGE 26)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, we will add the virtual machines in the availability sets to the backend of the load-balancers.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiy0g4qvd1mte23y1yeci.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiy0g4qvd1mte23y1yeci.png" alt=" " width="800" height="289"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 27)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjft8r1p6l6jlk5x4vn8k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjft8r1p6l6jlk5x4vn8k.png" alt=" " width="800" height="369"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 28)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inbound RULE&lt;/strong&gt;&lt;br&gt;
Here we link the Frontend_IP_Configuration and Backend_Pool&lt;br&gt;
Protocol: TCP, Port: 80 (to access the webserver content), BackendPort :80 (to the virtual machines)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3d3rdnupaobz01vxm29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3d3rdnupaobz01vxm29.png" alt=" " width="800" height="340"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 29)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HEALTH PROBE:&lt;/strong&gt; Will monitor the health status of the virtual machines in the backend. This will determine if traffic will still be directed to the virtual machines.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjyw2bqm9ogbuwsl0sfk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjyw2bqm9ogbuwsl0sfk.png" alt=" " width="800" height="358"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 30)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After adding the inbound rules, we review and create&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0soepcqf26lropxjojg7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0soepcqf26lropxjojg7.png" alt=" " width="800" height="382"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 27)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fneyilxy4n8q5myit6e0g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fneyilxy4n8q5myit6e0g.png" alt=" " width="800" height="375"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 28)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Checking the status of the virtual machines in the availability sets confirms that the load-balancers frontends IP configuration linked to the VM.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpg397xu3tfwz60gu32oi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpg397xu3tfwz60gu32oi.png" alt=" " width="800" height="351"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 29)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff8534hvuv93mcorbndci.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff8534hvuv93mcorbndci.png" alt=" " width="800" height="367"&gt;&lt;/a&gt; &lt;strong&gt;(IMAGE 30)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We confirm if the IP is still serving the default Apache web page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08qkd5ipbko7kez7r3ho.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08qkd5ipbko7kez7r3ho.png" alt=" " width="800" height="439"&gt;&lt;/a&gt; &lt;strong&gt;(Image 31)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Project completed; please leave your comments, feedback, and project suggestions for me to write about.&lt;/p&gt;

&lt;p&gt;You can also read: How to add virtual machine to an existing availability-sets on Azure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/cli_tayo/adding-a-virtual-machine-to-an-existing-availability-sets-on-azure-ahh"&gt;https://dev.to/cli_tayo/adding-a-virtual-machine-to-an-existing-availability-sets-on-azure-ahh&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloudskills</category>
      <category>servers</category>
    </item>
  </channel>
</rss>
