Razumevanje mrežnih koncepata i protokola je esencijalno za svakog DevOps inženjera. U današnjem svetu distribuiranih sistema, cloud infrastrukture i mikroservisa, aplikacije retko funkcionišu izolovano. One komuniciraju sa drugim servisima, bazama podataka, eksternim API-jima i korisnicima putem mreže. Bez solidnog razumevanja kako mreže funkcionišu, dijagnostikovanje problema, optimizacija performansi i osiguravanje bezbednosti sistema postaje izuzetno teško. Ovaj tutorijal će vas provesti kroz ključne mrežne koncepte i protokole koji su relevantni za DevOps praksu.
Zašto su mreže važne u DevOps-u?
DevOps inženjeri su odgovorni za celokupan životni ciklus softvera, od razvoja do implementacije i održavanja u produkciji. Mreže igraju centralnu ulogu u svakoj od ovih faza:
Deployment aplikacija: Aplikacije se deployuju na servere koji su povezani u mrežu. Razumevanje IP adresa, portova i rutiranja je ključno za uspešan deployment.
CI/CD pipeline: CI/CD pipeline-i često uključuju faze koje zahtevaju mrežnu komunikaciju, kao što su preuzimanje koda iz repozitorijuma, pristup eksternim zavisnostima ili deployment na udaljene servere.
Mikroservisi: Arhitektura mikroservisa se u velikoj meri oslanja na mrežnu komunikaciju između malih, nezavisnih servisa. Problemi sa mrežom mogu dovesti do prekida komunikacije i nefunkcionalnosti celog sistema.
Cloud infrastruktura: Cloud provajderi nude širok spektar mrežnih servisa (VPC, Load Balancers, DNS, Firewalls). Razumevanje ovih servisa je ključno za dizajniranje i implementaciju robustne cloud infrastrukture.
Monitoring i rešavanje problema: Mnogi problemi u produkciji su povezani sa mrežom (npr. latencija, prekid veze, DNS problemi). Poznavanje mrežnih alata i protokola omogućava brzu dijagnostiku i rešavanje ovih problema.
Bezbednost: Mrežna bezbednost je kritična za zaštitu aplikacija i podataka. Razumevanje firewall-a, sigurnosnih grupa i VPN-ova je neophodno za implementaciju bezbednih sistema.
TCP/IP model i OSI model
Ova dva modela su fundamentalna za razumevanje kako mreže funkcionišu. Oni dele složeni proces mrežne komunikacije na manje, upravljive slojeve.
OSI Model (Open Systems Interconnection)
OSI model je referentni model koji opisuje kako se informacije prenose preko mreže. Sastoji se od sedam slojeva:
Fizički sloj (Physical Layer): Bavi se fizičkim prenosom bitova preko medija (kablovima, bežično). Primeri: Ethernet kablovi, Wi-Fi signali.
Sloj veze podataka (Data Link Layer): Odgovoran za prenos podataka između dva direktno povezana uređaja. Bavi se MAC adresama i detekcijom grešaka. Primeri: Ethernet, PPP.
Mrežni sloj (Network Layer): Odgovoran za logičko adresiranje (IP adrese) i rutiranje paketa između različitih mreža. Primeri: IP, ICMP.
Transportni sloj (Transport Layer): Obezbeđuje end-to-end komunikaciju između aplikacija. Bavi se segmentacijom, pouzdanim prenosom i kontrolom toka. Primeri: TCP, UDP.
Sloj sesije (Session Layer): Uspostavlja, održava i prekida sesije između aplikacija. Primeri: NetBIOS, RPC.
Sloj prezentacije (Presentation Layer): Bavi se formatiranjem podataka, enkripcijom i kompresijom. Primeri: JPEG, MPEG, SSL/TLS.
TCP/IP model je praktičniji model koji se koristi u internetu. Sastoji se od četiri sloja:
Sloj mrežnog pristupa (Network Access Layer): Kombinuje fizički sloj i sloj veze podataka OSI modela. Bavi se detaljima hardvera i mrežnog interfejsa.
Internet sloj (Internet Layer): Odgovoran za logičko adresiranje (IP adrese) i rutiranje paketa. Odgovara mrežnom sloju OSI modela. Protokoli: IP, ICMP, ARP.
Transportni sloj (Transport Layer): Obezbeđuje end-to-end komunikaciju. Odgovara transportnom sloju OSI modela. Protokoli: TCP, UDP.
Aplikacioni sloj (Application Layer): Kombinuje sloj sesije, sloj prezentacije i aplikacioni sloj OSI modela. Protokoli: HTTP, FTP, DNS, SMTP.
Tabela poređenja OSI i TCP/IP modela:
OSI Sloj
TCP/IP Sloj
Funkcija
7. Aplikacioni
4. Aplikacioni
Mrežni servisi za aplikacije
6. Prezentacioni
Formatiranje, enkripcija, kompresija podataka
5. Sesije
Uspostavljanje i održavanje sesija
4. Transportni
3. Transportni
End-to-end komunikacija, pouzdan prenos (TCP) ili brzi prenos (UDP)
3. Mrežni
2. Internet
Logičko adresiranje (IP), rutiranje paketa
2. Veze podataka
1. Mrežnog pristupa
Fizičko adresiranje (MAC), detekcija grešaka, prenos između direktno povezanih uređaja
1. Fizički
Fizički prenos bitova
DNS (Domain Name System)
DNS je sistem koji prevodi imena domena (npr. google.com) u IP adrese (npr. 172.217.160.142). Bez DNS-a, morali bismo da pamtimo IP adrese svakog sajta koji želimo da posetimo.
Kako DNS funkcioniše?
Kada ukucate ime domena u pretraživač, dešava se sledeće:
Vaš računar proverava svoj lokalni DNS keš.
Ako nije u kešu, šalje upit lokalnom DNS resolveru (obično vašem ruteru ili DNS serveru vašeg ISP-a).
Lokalni resolver šalje upit root DNS serverima.
Root serveri upućuju na TLD (Top-Level Domain) servere (npr. .com, .org).
TLD serveri upućuju na autoritativne DNS servere za taj domen.
Autoritativni DNS server vraća IP adresu domena.
Lokalni resolver kešira IP adresu i šalje je vašem računaru.
Vaš računar koristi IP adresu za povezivanje sa web serverom.
DNS zapisi
Najčešći tipovi DNS zapisa su:
A Record: Mapira ime domena na IPv4 adresu.
AAAA Record: Mapira ime domena na IPv6 adresu.
CNAME Record: Mapira alias ime domena na drugo kanoničko ime domena.
MX Record: Određuje mail servere za domen.
TXT Record: Sadrži tekstualne informacije, često se koristi za SPF, DKIM i DMARC zapise za email autentifikaciju.
Praktični alati za DNS
dig: Alat za upite DNS serverima. bash dig google.com dig google.com A dig google.com MX
nslookup: Stariji alat za DNS upite. bash nslookup google.com
HTTP/HTTPS protokoli
HTTP (Hypertext Transfer Protocol) i HTTPS (Hypertext Transfer Protocol Secure) su protokoli aplikacionog sloja koji se koriste za prenos podataka na World Wide Webu.
HTTP
Stateless: Svaki zahtev je nezavisan i server ne pamti prethodne zahteve.
Port 80: Standardni port za HTTP komunikaciju.
Metode: GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH.
HTTPS
Sigurna verzija HTTP-a: Koristi SSL/TLS enkripciju za zaštitu komunikacije između klijenta i servera.
Port 443: Standardni port za HTTPS komunikaciju.
Sertifikati: Zahteva SSL/TLS sertifikat instaliran na serveru.
Kako HTTPS funkcioniše?
TLS Handshake: Klijent i server pregovaraju o parametrima enkripcije.
Razmena sertifikata: Server šalje svoj SSL/TLS sertifikat klijentu.
Verifikacija sertifikata: Klijent proverava validnost sertifikata (izdavaoca, datum isteka).
Generisanje ključeva: Klijent i server generišu simetrične ključeve za enkripciju podataka.
Enkriptovana komunikacija: Svi podaci se prenose enkriptovano.
Praktični alati za HTTP/HTTPS
curl: Alat za prenos podataka sa ili na server, podržava HTTP, HTTPS, FTP, itd. bash curl https://www.google.com curl -I https://www.google.com # Prikazuje samo headere
wget: Alat za preuzimanje fajlova sa web servera. bash wget https://example.com/fajl.zip
Load Balancing i Reverse Proxy
Ovi koncepti su ključni za skalabilnost i otpornost web aplikacija.
Reverse Proxy
Reverse proxy je server koji se nalazi ispred jednog ili više web servera i prosleđuje klijentske zahteve tim serverima. On može da obavlja funkcije kao što su:
Load Balancing: Distribucija saobraćaja na više backend servera.
SSL Termination: Dekripcija HTTPS saobraćaja pre nego što stigne do backend servera.
Caching: Keširanje statičkog sadržaja.
Kompresija: Kompresija odgovora pre slanja klijentu.
Sigurnost: Filtriranje zlonamernog saobraćaja.
Popularni reverse proxy serveri su Nginx, Apache HTTP Server (sa mod_proxy), HAProxy.
Load Balancing
Load balancer distribuira dolazni mrežni saobraćaj na više servera u backend pool-u. Cilj je da se optimizuje iskorišćenost resursa, maksimizira protok, minimizira vreme odziva i izbegne preopterećenje pojedinačnih servera.
Algoritmi load balancinga:
Round Robin: Zahtevi se distribuiraju sekvencijalno na servere.
Least Connections: Zahtevi se šalju serveru sa najmanjim brojem aktivnih konekcija.
IP Hash: Zahtevi od istog klijenta se uvek šalju istom serveru.
Ova konfiguracija će distribuirati dolazni saobraćaj na myapp.example.com između backend1.example.com:8080 i backend2.example.com:8080 koristeći round robin algoritam.
Firewalls i Sigurnosne Grupe
Firewall-i su ključni za mrežnu bezbednost, kontrolišući dolazni i odlazni saobraćaj na osnovu definisanih pravila.
Firewall
Firewall je mrežni sigurnosni sistem koji nadgleda i kontroliše dolazni i odlazni mrežni saobraćaj na osnovu unapred definisanih sigurnosnih pravila. Može biti hardverski ili softverski.
Pravila firewall-a:
Dozvoli (Allow): Dozvoljava saobraćaj koji odgovara pravilu.
Odbij (Deny/Drop): Odbija saobraćaj koji odgovara pravilu.
Primeri softverskih firewall-a na Linuxu:
iptables: Tradicionalni Linux firewall.
ufw (Uncomplicated Firewall): Jednostavniji interfejs za iptables.
firewalld: Dinamički firewall daemon za RHEL/CentOS.
Sigurnosne Grupe (Security Groups)
Sigurnosne grupe su virtuelni firewall-i koji kontrolišu saobraćaj za jednu ili više instanci (npr. EC2 instance u AWS-u). One deluju na nivou instance, a ne na nivou podmreže, i omogućavaju detaljnu kontrolu pristupa.
Karakteristike sigurnosnih grupa:
Stateful: Ako dozvolite dolazni saobraćaj, odlazni odgovor je automatski dozvoljen.
Inbound/Outbound pravila: Definišete pravila za dolazni i odlazni saobraćaj.
Pravila dozvole: Podrazumevano, sav saobraćaj je odbijen, morate eksplicitno dozvoliti saobraćaj.
Praktičan primer: Konfiguracija UFW-a
# Omogući UFWsudo ufw enable# Dozvoli SSH (port 22)sudo ufw allow ssh# Dozvoli HTTP (port 80)sudo ufw allow http# Dozvoli HTTPS (port 443)sudo ufw allow https# Dozvoli saobraćaj sa specifične IP adrese na port 8080sudo ufw allow from 192.168.1.100 to any port 8080# Proveri status UFW-asudo ufw status verbose
VPN (Virtual Private Network) i sigurna komunikacija
VPN omogućava uspostavljanje sigurne, enkriptovane veze preko javne mreže (interneta).
Kako VPN funkcioniše?
VPN klijent uspostavlja enkriptovani
tunel do VPN servera. Sav saobraćaj između klijenta i servera prolazi kroz ovaj tunel i enkriptovan je, čime se obezbeđuje privatnost i sigurnost.
Upotreba VPN-a u DevOps-u
Siguran pristup resursima: DevOps inženjeri često pristupaju osetljivim resursima (serverima, bazama podataka) u privatnim mrežama. VPN omogućava siguran pristup tim resursima sa udaljenih lokacija.
Povezivanje sa cloud VPC-om: VPN se može koristiti za povezivanje lokalne mreže sa Virtual Private Cloud (VPC) u cloudu, omogućavajući hibridna okruženja.
Zaštita podataka u tranzitu: Enkripcija koju pruža VPN štiti podatke od presretanja i neovlašćenog pristupa.
Osnove Kubernetes mreža
Kubernetes ima kompleksan mrežni model koji omogućava komunikaciju između Podova, Servisa i eksternog sveta.
Ključni koncepti
Pod IP: Svaki Pod u Kubernetesu dobija svoju jedinstvenu IP adresu. Podovi unutar istog Node-a mogu komunicirati direktno, a Podovi na različitim Node-ovima komuniciraju preko overlay mreže.
Service IP: Servis je apstrakcija koja definiše logički skup Podova i politiku za pristup tim Podovima. Servis dobija stabilnu IP adresu (Cluster IP) koja se koristi za internu komunikaciju unutar klastera.
Ingress: Ingress je API objekat koji upravlja eksternim pristupom servisima unutar klastera, obično HTTP/HTTPS. Omogućava rutiranje saobraćaja na osnovu imena hosta ili putanje.
Network Policy: Network Policy omogućava definisanje pravila za kontrolu saobraćaja između Podova i/ili eksternih entiteta. To je firewall na nivou Podova.
Kako funkcioniše komunikacija u Kubernetesu?
Pod-to-Pod: Podovi komuniciraju direktno koristeći svoje IP adrese. Mrežni plugin (CNI - Container Network Interface) obezbeđuje povezivost između Podova na različitim Node-ovima.
Pod-to-Service: Podovi komuniciraju sa Servisima koristeći Service IP. Kube-proxy komponenta na svakom Node-u presreće saobraćaj ka Service IP-u i rutira ga ka odgovarajućem Podu.
External-to-Service: Eksterni saobraćaj može pristupiti Servisima putem NodePort, LoadBalancer ili Ingress.
Praktičan primer: Izlaganje aplikacije sa Kubernetes Servisom i Ingressom
Ova konfiguracija deployuje Nginx aplikaciju, kreira ClusterIP Servis za internu komunikaciju i Ingress koji omogućava pristup aplikaciji sa myapp.example.com.
Zaključak
Razumevanje mrežnih koncepata i protokola je temelj za uspešnog DevOps inženjera. Od osnovnih TCP/IP modela do kompleksnih Kubernetes mreža, svaki aspekt igra ključnu ulogu u dizajnu, implementaciji i održavanju modernih softverskih sistema. Kontinuiranim učenjem i praktičnim radom, razvićete veštine potrebne za rešavanje najizazovnijih mrežnih problema i izgradnju robusnih, skalabilnih i bezbednih infrastruktura.
Reference
[1] Kurose, J. F., & Ross, K. W. (2017). Computer Networking: A Top-Down Approach. Pearson.