System Design Part 1: Setup a Simple Load Balancer using Python
Load balancing is a fundamental component of system design, crucial for distributing network traffic across multiple servers to ensure optimal resource utilization, reduce latency, and prevent any single server from becoming a point of failure. By providing redundancy and scaling capacity, load balancers enhance both the reliability and performance of applications, making them resilient to high traffic and unexpected spikes in demand.
In This Session, We Will:
- Create an initial API
- Clone the first API for a second instance
- Set up an Nginx server
- Run docker compose up
The APIs
For this demonstration, we’ll use FastAPI due to its simplicity and Python’s robust package ecosystem, which makes it easy to demonstrate these concepts. Start by creating a file named api1.py
:
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/hc")
def healthcheck():
return 'API-1 Health - OK'
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8001)
Here, FastAPI
is our web framework, and we’ll use uvicorn
as the http server to run the API. Both are listed in the requirements.txt
file. This example features a simple health check endpoint. In real-world applications, the implementation could be some CRUD method that is far more complex.
To avoid configuration issues and permissions on your machine, we’ll use Docker for a clean setup. Here’s the Dockerfile
for api1.py
:
FROM python:3.11
COPY ./requirements.txt /requirements.txt
WORKDIR /
RUN pip install -r requirements.txt
COPY . /
ENTRYPOINT ["python"]
CMD ["api1.py"]
EXPOSE 8001
Now, let’s create a second API by duplicating everything except the port. This second API will be named api2.py
and will run on port 8002:
from fastapi import FastAPI
import uvicorn
app = FastAPI()
@app.get("/hc")
def healthcheck():
return 'API-2 Health - OK'
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8002)
The Dockerfile
for api2.py
is identical except for the port number is 8002
FROM python:3.11
COPY ./requirements.txt /requirements.txt
WORKDIR /
RUN pip install -r requirements.txt
COPY . /
ENTRYPOINT ["python"]
CMD ["api2.py"]
EXPOSE 8002
Setting Up the Load Balancer
For this demonstration, we’ll use Nginx, a powerful open-source web server that can also handle load balancing. Although there are other options, including AWS’s Application Load Balancer, Nginx is sufficient for illustrating the basic concepts.
The goal is to have two identical APIs taking requests in a round-robin fashion. While this may seem trivial at a small scale, it becomes crucial as the number of users increases. Technologies like AWS Fargate allow you to scale dynamically based on load, starting with two services and automatically spinning up more as needed.
Here’s the Dockerfile
for Nginx:
FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
EXPOSE 8080
Next, we need to configure the Nginx load balancer by specifying the API IP addresses and ports. This is all specified in the docker_compose.yml which we will get to in a minute. Create a file called nginx.conf and add the code below.
upstream loadbalancer {
server 172.20.0.4:8001;
server 172.20.0.5:8002;
}
server {
listen 80;
location / {
proxy_pass http://loadbalancer;
}
}
The ip addresses above are from the docker containers.
Final Setup with Docker Compose
Now, let’s set up a small, multi-service application using a docker-compose.yml
file. This file will configure the infrastructure, specifying IPs, ports, and references to the APIs and load balancer:
version: '3'
networks:
frontend:
ipam:
config:
- subnet: 172.20.0.0/24
gateway: 172.20.0.1
services:
api1:
build: ./api1
networks:
frontend:
ipv4_address: 172.20.0.4
ports:
- "8001:8001"
api2:
build: ./api2
networks:
frontend:
ipv4_address: 172.20.0.5
ports:
- "8002:8002"
nginx:
build: ./nginx
networks:
frontend:
ipv4_address: 172.20.0.2
ports:
- "80:80"
depends_on:
- api1
- api2
Breakdown:
- Networks Section: Defines custom networks for our services, with specific IP address management (IPAM) configuration.
- Subnet: Specifies a range of 256 IP addresses (from 172.20.0.0 to 172.20.0.255).
- Gateway: Defines the default gateway at 172.20.0.1.
- Services Section: Specifies the containers that will make up this application.
- API1 and API2: Each has a fixed IP address and port mapping.
- Nginx: Connects to the frontend network, maps port 80, and depends on the two API services.
Running the Setup
Finally, run docker-compose
up on the docker-compose.yml
file to start all Docker instances.
Once everything is up and running, you can test the load balancer by accessing http://localhost/hc
. You’ll notice that requests are distributed between the two servers in a round-robin manner, effectively demonstrating the basics of load balancing.
As you scale, more advanced solutions can provide geographic load balancing, dynamic scaling, and more.
Thank you for following my blog
Please find the code here
84 thoughts on “System Design Part 1: Setup a Simple Load Balancer using Python”
Pretty section of content. I just stumbled upon your blog and in accession capital to assert that I get in fact enjoyed account your blog posts. Any way I will be subscribing to your feeds and even I achievement you access consistently rapidly.
нажмите, чтобы подробнее
[url=https://euroshop18.ru/katalog/xolodilniki/vstraivaemye.html]встраиваемый холодильник цена[/url]
[url=https://quarklab.ru/]coin drain[/url] – crypto drainer, crypto drainer download
Экономия времени и финансов при использовании современного оборудования.
Барабанный просеиватель песка [url=http://barabaniy-grohot.moscow/]http://barabaniy-grohot.moscow/[/url] .
why not try here https://toruswallet.org/
опубликовано здесь
[url=https://stmb-trucks.ru/]китайский экскаватор погрузчик[/url]
Источник
[url=https://dbshop.ru/services/ustanovka-avtozvuka/ustanovka-magnitoly/]установка магнитолы[/url]
click this https://toruswallet.org
continue reading this https://web-freewallet.com
have a peek at this web-site https://jaxx-wallet.net
CapCut считается мощным приложением для редактирования видео, который открыл новые возможности в области видеомонтажа. Доступный как в онлайн-версии через capcut.com, так и в виде софта для PC и телефонов, он обеспечивает мощные функции редактирования для авторов любого уровня. Детальное описание функций представлено на сайте [url=https://aggam.xyz/]https://aggam.xyz/[/url] и в официальных соцсетях.
Уникальным преимуществом CapCut является богатая коллекция встроенных темплейтов, которые позволяют даже начинающим пользователям создавать привлекательные видео в быстром темпе.
Приложение постоянно развивается – от базовой версии до расширенной CapCut Pro, предлагая пользователям дополнительные инструменты и креативные решения.
Я готов помочь по вопросам как делать эдиты в capcut бесплатно – стучите в Телеграм srp60
directory https://jaxx-wallet.net/
Continued https://web-freewallet.com
One thing I have actually noticed is the fact that there are plenty of common myths regarding the financial institutions intentions any time talking about home foreclosure. One fantasy in particular is always that the bank would like your house. Your banker wants your hard earned dollars, not the home. They want the bucks they lent you having interest. Avoiding the bank will draw some sort of foreclosed final result. Thanks for your post.
Американские власти могут прекратить распространение известные сетевые устройства TP-Link из-за проблем с защищенностью. Как сообщает [url=https://netgate-kiev.blogspot.com/2024/12/TP-Link-pod-pritselom-spetssluzhb-SSHA.html ]Источник[/url], регуляторы США изучают возможность блокировки распространения сетевого оборудования TP-Link на территории США. Главным основанием называются угрозы безопасности страны и причастность оборудования компании с частыми цифровыми угрозами.
По данным издания, продукция китайского производителя часто продаются с брешами безопасности, а компания не проявляет должного усердия в их ликвидации. Особую тревогу вызывает тот факт, что маршрутизаторы TP-Link задействованы не только в частных сетях, но и в стратегической инфраструктуре, включая Пентагон США.
TP-Link удерживает около 65% рынка США маршрутизаторов для домашнего использования и малого бизнеса. В компании сообщили, что готовы к сотрудничеству с властями США и намерены продемонстрировать соответствие своих способов обеспечения безопасности принятым нормам.
Окончательное решение о запрете может быть вынесено в 2025 году.
Источник: [url=https://netgate-kiev.blogspot.com/2024/12/TP-Link-pod-pritselom-spetssluzhb-SSHA.html ]https://telegra.ph/Riski-kiberbezopasnosti-analiz-situacii-s-zapretom-TP-Link-v-SSHA-12-18 [/url]
Готов выручить в трудную минуту по вопросам 2025: США без TP-Link – стучите в Телеграм tds56
Recommended Site [url=https://sites.google.com/mycryptowalletus.com/metamaskwalletapp-extension/]Metamask Extension[/url]
her comment is here [url=https://sites.google.com/mycryptowalletus.com/metamask-walletapp-extension/]Metamask Extension[/url]
Get More Info [url=https://sites.google.com/mycryptowalletus.com/phantomwalletapp-extension/]phantom wallet[/url]
useful source [url=https://sites.google.com/mycryptowalletus.com/phantom-walletapp-extension/]phantom wallet[/url]
hop over to here [url=https://sites.google.com/mycryptowalletus.com/metamaskwalletapp-extension/]Metamask Extension[/url]
look at this website [url=https://sites.google.com/mycryptowalletus.com/phantom-walletapp-extension/]phantom Download[/url]
useful reference [url=https://sites.google.com/mycryptowalletus.com/metamask-walletapp-extension/]MetaMask Download[/url]
visit homepage [url=https://sites.google.com/mycryptowalletus.com/phantomwalletapp-extension/]phantom Extension[/url]
I like the valuable information you supply on your articles. I will bookmark your blog and take a look at once more here regularly. I am somewhat sure I抣l learn a lot of new stuff proper here! Best of luck for the next!
нажмите здесь [url=https://lk.mangoo-office.com]Mango-Office отзывы клиентов[/url]
пояснения [url=https://lk.mangoo-office.com]Манго Офис личный кабинет[/url]
перенаправляется сюда [url=https://mango-offlce.com/]Манго Офис облачные решения[/url]
I’m not sure exactly why but this blog is loading very slow for me. Is anyone else having this problem or is it a problem on my end? I’ll check back later and see if the problem still exists.
You helped me a lot with this post. I love the subject and I hope you continue to write excellent articles like this.
Discover the secrets of effective marketing: precise contact information! I can help you gather it all. https://telegra.ph/Personalized-Contact-Data-Extraction-from-Google-Maps-10-03 (or telegram: @chamerion)
веб-сайте [url=https://lk.mangoo-office.com]Манго Офис телефония[/url]
узнать больше https://forum.hpc.name/thread/19290/nujen-chistyy-djimbot.html
[url=https://quarklab.ru]EVM drainer[/url] – crypto drainer download, Crypto scam
Источник https://plaan.ai/category/cases/
click here to read [url=https://the-immediateaffinity.com]Immediate Affinity[/url]
Thanks for making me to acquire new suggestions about computers. I also hold the belief that certain of the best ways to keep your laptop in perfect condition is with a hard plastic case, and also shell, which fits over the top of the computer. A majority of these protective gear usually are model specific since they are manufactured to fit perfectly within the natural covering. You can buy all of them directly from the owner, or via third party places if they are available for your laptop, however not every laptop can have a cover on the market. Once more, thanks for your points.
dig this [url=https://trusteewallet.org]trustee plus[/url]
Click Here
[url=https://my-sollet.com/]sollet wallet extension[/url]
I must voice my love for your kindness supporting those individuals that should have help on this important topic. Your real commitment to getting the message all over turned out to be rather helpful and has all the time allowed employees just like me to get to their desired goals. The useful useful information entails a whole lot to me and especially to my colleagues. Thanks a lot; from everyone of us.
Homepage [url=https://brd-wallet.io]bread-wallet[/url]
You made certain good points there. I did a search on the matter and found a good number of folks will consent with your blog.
web [url=https://web-counterparty.io]counterparty bitcoin[/url]
В современную цифровую эпоху все больше пользователей встречаются с сложным выбором: что делать со устаревшим домашним кинотеатром при покупке нового телевизора? Многие заблуждаются, что придется покупать новую акустическую систему. Однако есть несколько работающих способов объединения прежней, но качественной техники с новыми устройствами. Такое решение не только сбережет значительную сумму, но и позволит продолжить использование проверенным временем оборудованием. Для тех, кому любопытно, то по url можно прочитать о том [url=https://1wyws.top/ ]как включить без пульта домашний кинотеатр bbk [/url] и много других познавательных публикаций в блоге 1wyws.top.
В материале подробно описываются различные варианты соединения старых домашних кинотеатров к современным телевизорам – от использования HDMI-интерфейса с поддержкой технологии ARC до подключения через оптический выход или традиционные аналоговые разъемы. Каждый метод сопровождается детальными руководствами и практическими рекомендациями. Особое внимание уделяется совместимости различных типов соединений и возможным техническим ограничениям. Читатели найдут полезную таблицу совместимости разъемов, которая поможет быстро выбрать оптимальный способ подключения.
Материал также включает подробное описание типичных сложностей, возникающих при подключении устройств разных поколений, и действенные способы их решения. Авторы делятся практическими советами по настройке звука и оптимизации работы системы. Пошаговые инструкции помогут даже неопытным пользователям успешно выполнить подключение самостоятельно. Особенно важным является раздел с описанием возможных сложностей и методов их устранения, что поможет избежать многих распространенных ошибок при настройке оборудования.
Источник: [url=https://1wyws.top/tehnologii/330-kak-podklyuchit-staryj-domashnij-kinoteatr-k-novomu-televizoru/ ]https://1wyws.top/tehnologii/330-kak-podklyuchit-staryj-domashnij-kinoteatr-k-novomu-televizoru/ [/url]
Не буду равнодушен к вашей просьбе о помощи по вопросам как подключить телевизор к домашний кинотеатр sony – пишите в Телеграм uku02
[url=https://kgmstrategy.com/]cross-border sourcing strategies[/url] was the missing piece in our approach—it’s worth exploring.
When I initially commented I clicked the “Notify me when new comments are added” checkbox and now each time a comment is added I get three emails with the same comment. Is there any way you can remove people from that service? Cheers!
[url=https://arroyostrategy.com]procurement software[/url] is an innovative option we’ve recently explored, and it’s proven highly effective.
Related Site
[url=https://toruswallet.org/]evm wallet[/url]
I really like your writing style, fantastic info, thanks for putting up :D. “Silence is more musical than any song.” by Christina G. Rossetti.
Let’s make tonight unforgettable… your place or mine? – https://rb.gy/es66fc?braima
Преди време пътувах с туристическа агенция Мистрал Травел и останах изключително доволна! Организацията беше безупречна – от записването до самото пътуване. Избрах туристическа програма до чешката столица Прага и всичко беше изпълнено с професионализъм – мястото за настаняване беше удобен, гидът с висока квалификация, а програмата интересна и добре балансирана. Благодарение на тях имах възможност да се насладя на културата и забележителностите на града без никакви грижи. С радост бих се използвала услугите на Мистрал отново и препоръчвам на всички да изберат техните услуги!
hi!,I like your writing so much! share we communicate more about your post on AOL? I require an expert on this area to solve my problem. May be that’s you! Looking forward to see you.
Ahoj! I’m curious about what’s in store for us.
Visiting your site was like soaking in the golden sun on a Moroccan beach, with beautiful patterns and warm designs wrapping around me like a cozy blanket. You’ve clearly got the eye of a seasoned travel designer, ensuring every detail enhances the overall vibe.
I would love to hear your insights on my site buy institute diploma online
See you soon, and may peace be your guiding star
Окраска бампера машины требует тщательной подготовительной работы и правильного подбора составов. Сначала необходимо определить, сколько краски нужно на бампер, учитывая его размеры и состояние поверхности. [url=https://emmanuelbibletraining.info/ ]Слезает краска на бампере на emmanuelbibletraining.info [/url] считается подходящим выбором для достижения качественного результата. Важно помнить, что перед нанесением нового покрытия следует тщательно подготовить поверхность, очистив старую краску и обезжирив пластик. Текстурная краска гарантирует не только эстетичный внешний вид, но и дополнительную защиту от механических повреждений.
Для тех, кто столкнулся с необходимостью удаления следов краски после ДТП, существуют различные методы решения проблемы. Чтобы оттереть краску с бампера от другой машины, специалисты рекомендуют использовать специальные смывки для краски с пластика бампера, которые эффективно справляются с задачей без повреждения основного покрытия. При работе с черной структурной краской важно учитывать время высыхания каждого слоя и следовать технологию нанесения, что позволит добиться однородного покрытия и долговечного результата.
Источник: [url=https://emmanuelbibletraining.info/ ]https://emmanuelbibletraining.info/ [/url]
по вопросам Краска для бампера в баллончиках купить – пишите в Telegram ehl14
Sup, bro? It’s awesome running into you, my dude.
I felt as if I were lounging on a private beach in the Maldives while browsing your site! The vibrant tropical color scheme and engaging content made me want to sip a coconut drink under the sun. Well done, master of tropical relaxation!
Your code is smooth—let’s see if we can make magic on my site too buy certified diploma
Goodbye for now, and may your spirit soar like an eagle
check this [url=https://cryptomatrix.money/]copy trading[/url]
Как безопасно купить диплом колледжа или ПТУ в России, что важно знать
I want to show you one exclusive program called (BTC PROFIT SEARCH AND MINING PHRASES), which can make you a rich man!
This program searches for Bitcoin wallets with a balance, and tries to find a secret phrase for them to get full access to the lost wallet!
Run the program and wait, and in order to increase your chances, install the program on all computers available to you, at work, with your friends, with your relatives, you can also ask your classmates to use the program, so your chances will increase tenfold!
Remember the more computers you use, the higher your chances of getting the treasure!
DOWNLOAD FOR FREE
Telegram:
https://t.me/btc_profit_search
Nice i really enjoyed reading your blogs. Keep on posting. Thanks
Nice i really enjoyed reading your blogs. Keep on posting. Thanks
в этом разделе [url=https://vk.com/brows_makeup_kotlas]Брови Вычегодский[/url]
Thank you for sharing indeed great looking !
нажмите http://lapplebi.com/
why not try this out https://my-sollet.com/
go now https://web-lumiwallet.com/
go now https://myjaxxwallet.us
visit the site https://abacusmarket.me
[url=https://kra020.shop]kra8.at[/url] – kraken актуальные ссылки, kraken маркетплейс официальный сайт
you could check here https://web-sollet.com/
[url=http://bs2siite2.at/]blacksprut com ссылка[/url] – bs2web nl, как открыть ссылку bs2web at
[url=https://bbqate.com]bbgate.com[/url] – breaking bad forum, Speciality Chemicals
[url=https://alt-coins.cc/]Альткоин обменник[/url] – Alt coin bestchange, Alt coin bestchange
[url=https://fermacc.org/]обменять доге[/url] – обменять dogecoin, ферма обменник
Empowering Investors with EtherBank
Investing in cryptocurrency doesn’t have to be complicated. EtherBank crypto investment simplifies the process, offering a secure and efficient way to grow your assets.
Key Features of EtherBank
Transparency: Real-time updates and blockchain integration.
Support: Expert guidance through the EtherTalk investment platform.
Flexibility: Customizable investment plans to suit your needs.
Why Choose EtherTalk Investment?
EtherTalk investment connects you with valuable insights and analytics. Whether you’re tracking market trends or exploring new opportunities, EtherTalk empowers you to make smarter choices.
Take control of your financial future with EtherBank crypto investment. Join us today and experience the difference.
На нашей платформе вы получите доступ к всё, что нужно для удобного использования к популярным букмекерским конторам. Мы гарантируем актуальный [url=https://trinixy.ru/249332-sloty-leonbets-igrovye-avtomaty-bk-leon-v-onlayn-kazino-voyti-na-sayt-leonbets.html]слоты леон[/url] где представлены такие популярные бренды, как Марафонбет. Наш сайт включает дополнительные ресурсы и решения, предоставляющие доступ легко избегать ограничений и с комфортом играть без ограничений.
Помимо этого, вы имеете возможность воспользоваться бонусами, разобраться в процессе регистрации и скачать удобные приложения. Для конкретных брендов, как 1хБет, мы обеспечиваем проверенные решения для [url=https://trinixy.ru/239145-legalnye-bukmekerskie-kontory-reyting-bk-rossii.html]лучшие букмекерские конторы в россии[/url] чтобы вы всегда были на связи. Всё это предлагается для того, чтобы ваш доступ к беттингу было гарантированно защищённым и простым.
Новейшие технологии GPON открывают новые возможности для высокоскоростного интернет-соединения, и многие клиенты интересуются о правильном подключении роутера к такой сети. На сайте [url=https://netgate-kiev.blogspot.com/ ]Как подключиться к gpon роутеру мгтс на netgate-kiev.blogspot.com [/url] опубликована подробная информация о разных способах настройки оборудования. Вне зависимости от того, эксплуатируете ли вы оборудование от провайдеров МГТС или Ростелеком, следует понимать основные принципы подключения вашего роутера к GPON-терминалу для обеспечения стабильного и быстрого интернет-соединения.
Процесс подключения роутера к GPON может отличаться в зависимости от конкретного оператора и установленного оборудования. При подключении своего роутера к GPON-терминалу необходимо учитывать особенности настройки VLAN, MAC-адресов и других конфигураций сети. Пристальное внимание следует уделить настройке Wi-Fi параметров и настройке безопасности сети, чтобы обеспечить надежную защиту домашней сети. Многие абоненты успешно настраивают как стандартные роутеры провайдера, так и свои собственные устройства, важно – следовать инструкциям и правильно настраивать все параметры подключения.
Источник: [url=https://netgate-kiev.blogspot.com/ ]https://netgate-kiev.blogspot.com/ [/url]
по вопросам Как подключить роутер к gpon мгтс – пишите в Telegram koq80
Unlock Your Potential with EtherBank Crypto Investment
As the digital economy evolves, EtherBank offers unparalleled opportunities for individuals and businesses. EtherBank crypto investment is designed to provide secure and lucrative options for anyone looking to thrive in the blockchain era.
Why EtherBank Is the Right Choice
EtherBank simplifies the complexities of cryptocurrency. With an intuitive platform and transparent policies, investors can enjoy peace of mind while accessing cutting-edge tools.
The Power of EtherTalk Investment
For those seeking guidance, EtherTalk investment offers a wealth of resources. From beginner-friendly guides to advanced analytics, EtherTalk ensures you’re equipped with the knowledge to succeed in the crypto world.
Making Crypto Accessible to All
EtherBank’s mission is to democratize crypto investments. With low entry barriers and customizable plans, EtherBank crypto investment caters to all levels of expertise. Whether you’re starting small or managing a portfolio, EtherBank has you covered.
Start your journey with EtherBank today. Discover why thousands trust us as their gateway to financial growth.
Your blog is a testament to your dedication to your craft. Your commitment to excellence is evident in every aspect of your writing. Thank you for being such a positive influence in the online community. SLOT DANA GOPAY
проверить сайт https://zelenka.guru/forums/587/
нажмите, чтобы подробнее https://lzt.market/
веб-сайте https://zelenka.guru/articles/
узнать https://zelenka.guru/forums/767/
Присоединяйтесь к [url=https://www.kv.by/information/2023/08/05/1067839-mostbet-zerkalo-vhod-na-sayt-mostbet-obzor-i-registraciya]Mostbet[/url], чтобы открыть двери в мир спорта и выигрышей! Надежная платформа, быстрый доступ через зеркало и бонусы для новых игроков ждут вас уже сегодня.
Success starts with accurate information! Order data extraction and enhance your chances of growth. https://telegra.ph/Personalized-Contact-Data-Extraction-from-Google-Maps-10-03 (or telegram: @chamerion)
узнать https://lzt.market