Tutorijal: Mreže i protokoli

Uvod u Mreže i Protokole za DevOps inženjere

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:

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:

  1. Fizički sloj (Physical Layer): Bavi se fizičkim prenosom bitova preko medija (kablovima, bežično). Primeri: Ethernet kablovi, Wi-Fi signali.
  2. 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.
  3. Mrežni sloj (Network Layer): Odgovoran za logičko adresiranje (IP adrese) i rutiranje paketa između različitih mreža. Primeri: IP, ICMP.
  4. Transportni sloj (Transport Layer): Obezbeđuje end-to-end komunikaciju između aplikacija. Bavi se segmentacijom, pouzdanim prenosom i kontrolom toka. Primeri: TCP, UDP.
  5. Sloj sesije (Session Layer): Uspostavlja, održava i prekida sesije između aplikacija. Primeri: NetBIOS, RPC.
  6. Sloj prezentacije (Presentation Layer): Bavi se formatiranjem podataka, enkripcijom i kompresijom. Primeri: JPEG, MPEG, SSL/TLS.
  7. Aplikacioni sloj (Application Layer): Pruža mrežne servise aplikacijama. Primeri: HTTP, FTP, SMTP, DNS.

TCP/IP Model

TCP/IP model je praktičniji model koji se koristi u internetu. Sastoji se od četiri sloja:

  1. 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.
  2. Internet sloj (Internet Layer): Odgovoran za logičko adresiranje (IP adrese) i rutiranje paketa. Odgovara mrežnom sloju OSI modela. Protokoli: IP, ICMP, ARP.
  3. Transportni sloj (Transport Layer): Obezbeđuje end-to-end komunikaciju. Odgovara transportnom sloju OSI modela. Protokoli: TCP, UDP.
  4. 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:

  1. Vaš računar proverava svoj lokalni DNS keš.
  2. Ako nije u kešu, šalje upit lokalnom DNS resolveru (obično vašem ruteru ili DNS serveru vašeg ISP-a).
  3. Lokalni resolver šalje upit root DNS serverima.
  4. Root serveri upućuju na TLD (Top-Level Domain) servere (npr. .com, .org).
  5. TLD serveri upućuju na autoritativne DNS servere za taj domen.
  6. Autoritativni DNS server vraća IP adresu domena.
  7. Lokalni resolver kešira IP adresu i šalje je vašem računaru.
  8. Vaš računar koristi IP adresu za povezivanje sa web serverom.

DNS zapisi

Najčešći tipovi DNS zapisa su:

Praktični alati za DNS

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

HTTPS

Kako HTTPS funkcioniše?

  1. TLS Handshake: Klijent i server pregovaraju o parametrima enkripcije.
  2. Razmena sertifikata: Server šalje svoj SSL/TLS sertifikat klijentu.
  3. Verifikacija sertifikata: Klijent proverava validnost sertifikata (izdavaoca, datum isteka).
  4. Generisanje ključeva: Klijent i server generišu simetrične ključeve za enkripciju podataka.
  5. Enkriptovana komunikacija: Svi podaci se prenose enkriptovano.

Praktični alati za HTTP/HTTPS

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:

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:

Tipovi load balancera:

Praktičan primer: Nginx kao Reverse Proxy i Load Balancer

Primer Nginx konfiguracije za load balancing između dva backend servera:

http {
    upstream backend_servers {
        server backend1.example.com:8080;
        server backend2.example.com:8080;
    }

    server {
        listen 80;
        server_name myapp.example.com;

        location / {
            proxy_pass http://backend_servers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

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:

Primeri softverskih firewall-a na Linuxu:

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:

Praktičan primer: Konfiguracija UFW-a

# Omogući UFW
sudo 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 8080
sudo ufw allow from 192.168.1.100 to any port 8080

# Proveri status UFW-a
sudo 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

Osnove Kubernetes mreža

Kubernetes ima kompleksan mrežni model koji omogućava komunikaciju između Podova, Servisa i eksternog sveta.

Ključni koncepti

Kako funkcioniše komunikacija u Kubernetesu?

Praktičan primer: Izlaganje aplikacije sa Kubernetes Servisom i Ingressom

Deployment i Servis:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: nginx
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: ClusterIP

Ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app-service
            port:
              number: 80

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


Autor: Manus AI Datum: 27. jul 2025.