Dec 1, 2023

HAProxy

Instalacija HAProxy-a

Instalacija Haproxy-a može se razlikovati ovisno o operativnom sustavu koji koristite. Evo koraka za instalaciju Haproxy-a na nekim od popularnih operativnih sustava:

Ubuntu / Debian:

Koristite sljedeće naredbe u terminalu:

  1. Ažuriranje paketnih izvora:

    sudo apt-get update
  2. Instalacija Haproxy-a:

    sudo apt-get install haproxy
  3. Potvrda instalacije:

    haproxy -v

CentOS / RHEL:

  1. Instalacija EPEL repozitorija (ako već nije instaliran):

    sudo yum install epel-release
  2. Instalacija Haproxy-a:

    sudo yum install haproxy
  3. Potvrda instalacije:

    haproxy -v

Konfiguracija:

Nakon instalacije, konfiguracijski datoteku možete pronaći obično na putanji /etc/haproxy/haproxy.cfg. Otvorite tu datoteku koristeći uređivač teksta (npr. nano, vim, gedit) i prilagodite konfiguraciju prema vašim potrebama.

Nakon što izmijenite konfiguracijsku datoteku, sačuvajte promjene i pokrenite Haproxy servis. Ovisno o distribuciji Linuxa, naredbe za upravljanje servisom mogu biti različite:

  • Za Ubuntu / Debian:

    sudo systemctl start haproxy
    sudo systemctl enable haproxy # Ovo osigurava da se Haproxy pokrene pri pokretanju sustava
  • Za CentOS / RHEL:

    sudo systemctl start haproxy
    sudo systemctl enable haproxy

Nakon ovih koraka, Haproxy bi trebao biti uspješno instaliran i pokrenut na vašem sustavu. Možete pristupiti konfiguracijskoj datoteci kako biste prilagodili postavke prema vašim zahtjevima i potrebama aplikacije koju želite balansirati.

HAProxy sa više domena 

Host tabela na haproxy:

/etc/hosts

  
127.0.0.1 localhost 127.0.1.1 router
140.82.58.111 server1
95.179.179.5 server2
199.247.28.183 server3
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
/etc/haproxy/haproxy.cfg

global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 10s
timeout client 60s
timeout server 60s
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http_in
mode http
option httplog
bind *:80
option forwardfor
acl host_server1 hdr(host) -i entroinfo.xyz
acl host_server1 hdr(host) -i www.entroinfo.xyz
acl host_server2 hdr(host) -i sub1.kubehttps.xyz
acl host_server3 hdr(host) -i sub2.kubehttps.xyz
use_backend http_server1 if host_server1
use_backend http_server2 if host_server2
use_backend http_server3 if host_server3
backend http_server1
mode http
option httplog
option forwardfor
server server1 server1:80
backend http_server2
mode http
option httplog
option forwardfor
server server2 server2:80
backend http_server3
mode http
option httplog
option forwardfor
server server3 server3:80
frontend https_in
mode tcp
option tcplog
bind *:443
acl tls req.ssl_hello_type 1
tcp-request inspect-delay 5s
tcp-request content accept if tls
acl host_server1 req.ssl_sni -i entroinfo.xyz
acl host_server1 req.ssl_sni -i www.entroinfo.xyz
acl host_server2 req.ssl_sni -i sub1.kubehttps.xyz
acl host_server3 req.ssl_sni -i sub2.kubehttps.xyz
use_backend https_server1 if host_server1
use_backend https_server2 if host_server2
use_backend https_server3 if host_server3
backend https_server1
mode tcp
option tcplog
option ssl-hello-chk
server server1 server1:443
backend https_server2
mode tcp
option tcplog
option ssl-hello-chk
server server2 server2:443
backend https_server3
mode tcp
option tcplog
option ssl-hello-chk
server server3 server3:443

Provera konfiguracije

Da biste provjerili ispravnost konfiguracijske datoteke Haproxyja, koristite naredbu haproxy -c -f /putanja/do/konfiguracijske/datoteke/haproxy.cfg.

Ova naredba provjerava ispravnost sintakse konfiguracijske datoteke bez pokretanja Haproxyja. Ako postoji bilo kakva pogreška u sintaksi datoteke, ova naredba će prikazati poruku o pogrešci koja će vam pomoći u otklanjanju problema.

Primjer naredbe za provjeru konfiguracije Haproxyja:

haproxy -c -f /etc/haproxy/haproxy.cfg

Zamijenite /etc/haproxy/haproxy.cfg stvarnom putanjom do vaše konfiguracijske datoteke.

Ako nema pogrešaka pri provjeri konfiguracije, naredba će vratiti poruku poput "Configuration file is valid". Ako postoje greške, dobit ćete odgovarajuću poruku koja će vam pomoći da identificirate i ispravite problem u konfiguracijskoj datoteci.

Global

Opcije pod globalnom sekcijom u konfiguracijskoj datoteci Haproxy-a postavljaju globalne parametre i postavke koje se primjenjuju na razini cijelog Haproxy servisa. Ovdje su neke od glavnih opcija koje se mogu postaviti unutar globalne sekcije:

  1. log: Definira način na koji se logovi generiraju i gdje se šalju. Primjer: log /dev/log local0.

  2. chroot: Postavlja direktorij u kojem će Haproxy promijeniti korijenski direktorij nakon pokretanja, čime se osigurava dodatna sigurnost.

  3. stats socket: Definira putanju do Unix socketa za interakciju s Haproxy statistikama.

  4. stats timeout: Postavlja vremensko ograničenje za prikupljanje statistika.

  5. user i group: Postavlja korisničko ime i grupu pod kojima će Haproxy pokrenuti procese radi sigurnosti.

  6. daemon: Ova opcija govori Haproxyju da se pokrene kao daemon, tj. kao pozadinski proces.

  7. maxconn: Postavlja maksimalni broj aktivnih konekcija koje Haproxy može obraditi.

Primjer globalne sekcije u Haproxy konfiguraciji:


global
    log /dev/log    local0
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon
    maxconn 2000

Ove opcije se koriste za postavljanje globalnih parametara Haproxyja koji će se primijeniti na sve frontend i backend sekcije definirane u konfiguracijskoj datoteci. Važno je prilagoditi ove opcije prema potrebama i zahtjevima vaše infrastrukture i aplikacije kako bi Haproxy radio kako treba i osigurao optimalnu učinkovitost i sigurnost.

Defaults

Opcija defaults u Haproxy konfiguraciji služi za postavljanje zadanih vrijednosti i parametara koji se primjenjuju na sve backendove i frontendove ako se ti parametri eksplicitno ne definiraju u određenim sekcijama.

Evo nekoliko ključnih opcija koje se često koriste unutar defaults sekcije:

  1. mode: Postavljanje načina rada (mode) koji se koristi za obradu prometa, poput http, tcp, health, itd. Primjer: mode http.

  2. log: Definira način generiranja logova za promet koji prolazi kroz Haproxy.

  3. timeout connect: Postavlja vremensko ograničenje za uspostavu TCP konekcije.

  4. timeout client: Postavlja vremensko ograničenje za čekanje na aktivnost od klijenta.

  5. timeout server: Postavlja vremensko ograničenje za čekanje na aktivnost od servera.

  6. option: Postavljanje specifičnih opcija koje kontroliraju ponašanje Haproxyja. Na primjer, option http-server-close zatvara HTTP sesiju nakon odgovora od servera.

Primjer defaults sekcije u Haproxy konfiguraciji:

defaults
    mode http
    log global
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
    option http-server-close

Ove opcije postavljaju zadane vrijednosti za sve frontendove i backendove ako se ove vrijednosti ne definiraju eksplicitno unutar pojedinačnih sekcija. To omogućuje jednostavnije i konzistentnije upravljanje parametrima kao što su vremenska ograničenja, načini rada i opcije za sve dijelove konfiguracije Haproxyja. Važno je prilagoditi ove zadane vrijednosti prema potrebama i zahtjevima vašeg sustava kako bi Haproxy radio kako treba i osigurao optimalnu učinkovitost.




Nov 13, 2023

docker logout

 Docker komanda docker logout se koristi za odjavljivanje sa Docker Hub-a ili drugog Docker registra. Kada se korisnik prijavi (login) koristeći docker login, Docker čuva autentikacione podatke na sistemu kako bi omogućio pristup privatnim Docker image-ovima i drugim resursima koji zahtevaju autentikaciju. Komanda docker logout briše te autentikacione podatke i odjavljuje korisnika sa Docker Hub-a ili drugog registra.

Osnovna upotreba:

docker logout

Ova komanda odjavljuje trenutnog korisnika sa Docker Hub-a ili drugog registra.

Primer:

docker logout

Ovaj primer odjavljuje trenutnog korisnika sa Docker Hub-a.

Ovo je korisno kada želite prekinuti sesiju sa Docker registrom ili ako želite promeniti korisničke informacije ili pristup drugim registrima. Nakon izvršenja docker logout, bilo koji pokušaj pristupa privatnim image-ovima na Docker Hub-u ili drugom registru zahtevaće ponovnu autentikaciju korisnika kroz docker login.

docker volume

 Docker komanda docker volume koristi se za upravljanje Docker volumenima. Volumeni su posebni Docker objekti koji omogućavaju trajno skladištenje podataka između kontejnera i host sistema. Evo nekoliko osnovnih komandi i primera:

Prikazivanje svih Docker volumena:

docker volume ls

Ova komanda prikazuje listu svih trenutno dostupnih Docker volumena.

Kreiranje novog Docker volumena:

docker volume create ime_volumena

Ova komanda kreira novi Docker volumen sa određenim imenom.

Primer:

docker volume create moj_volume

Ovaj primer kreira novi Docker volumen sa imenom "moj_volume".

Prikazivanje detalja o Docker volumenu:

docker volume inspect ime_volumena

Ova komanda prikazuje detalje o određenom Docker volumenu, uključujući i putanju na host sistemu gde je volumen smešten.

Primer:

docker volume inspect moj_volume

Ovaj primer prikazuje detalje o Docker volumenu sa imenom "moj_volume".

Brisanje Docker volumena:

docker volume rm ime_volumena

Ova komanda briše određeni Docker volumen.

Primer:

docker volume rm moj_volume

Ovaj primer briše Docker volumen sa imenom "moj_volume".

Povezivanje Docker volumena sa kontejnerom:

Prilikom pokretanja kontejnera, možete koristiti opciju -v (ili --volume) kako biste povezali Docker volumen sa kontejnerom.

docker run -v moj_volume:/putanja/unutar/kontejnera moj_image

Ovaj primer povezuje Docker volumen "moj_volume" sa kontejnerom na putanju "/putanja/unutar/kontejnera".

Automatsko kreiranje Docker volumena prilikom pokretanja kontejnera:

Ako Docker volumen sa određenim imenom ne postoji, možete koristiti opciju --mount prilikom pokretanja kontejnera kako biste automatski kreirali volumen.

docker run --mount source=moj_volume,target=/putanja/unutar/kontejnera moj_image

Ovaj primer automatski kreira Docker volumen "moj_volume" i povezuje ga sa kontejnerom na putanji "/putanja/unutar/kontejnera".

Docker volumeni su korisni za trajno skladištenje podataka između pokretanja i za deljenje podataka između više kontejnera. Oni su efikasan način za upravljanje podacima u Docker okruženju.