Sziasztok,
Van egy 3 Node-os Swarm-om, amiben futtatok egy szolgaltatast, amit betettem nginx-proxy moge (https://github.com/nginx-proxy/nginx-proxy)
Amig a ket szolgaltatas egy node-on van, nincs is semmi gond, viszont ha elvandorolnak, akkor 503-as hibat kapok. Ez alapvetoen egy ismert hianyossag az nginx-proxy-nal, de paran irtak, h sikerult megkerulniuk a dolgot. (sajnos nekem nem). Jelenleg bindeltem a ket service-t hogy egy node-on fusson, csak ez igy a swarm ertelmet veszi el... (foleg h a tobbi szolgaltatasom is betennem nginx-proxy moge) Traefik-et is neztem, de azt nem sikerult eletre kelteni. (plusz az nginx szimpatikusabb lenne)
Itt a yaml ha segit:
version: '3.6'
services:
nginx-proxy:
image: hun25-21v:5000/nginxproxy/nginx-proxy:1.4-alpine
ports:
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- 'nginx-proxy_config:/etc/nginx/certs'
# environment:
networks:
- proxy
deploy:
placement:
constraints:
- node.labels.nginx_proxy==true
networks:
proxy:
external: true
volumes:
nginx-proxy_config:
external: true
name: nginx-proxy_config
version: '3.6'
services:
test_service:
container_name: test_service
image: hun25-21v:5000/test_service:latest
environment:
- VIRTUAL_HOST=test_service.domain.com
- VIRTUAL_PORT=3000
deploy:
placement:
constraints:
- node.labels.nginx_proxy==true
restart: always
networks:
- proxy
networks:
proxy:
external: true
- 330 megtekintés
Hozzászólások
Ha Swarm-ozol, akkor ajánlom figyelmedbe ezt az oldalt: https://geek-cookbook.funkypenguin.co.nz/docker-swarm/
Itt van rengeteg setup swarm-hoz.
Traefik Setup: https://geek-cookbook.funkypenguin.co.nz/docker-swarm/traefik/
Nálam megy rendesen az nginx is. A lényeg, hogy minden node-on fusson a HA miatt.
Illetve az nginx config-ból az adott service-t a belső címen címezd és a többit megoldja neked a swarm.
Azaz a proxy pass-od-ban valami lyesmi legyen:
proxy_pass http://SERVICE-NAME:BELSŐ-PORT;
Amúgy vannak olyan image-ek NGINX-ből amik felvannak rá készítve és a service-ekre felaggatott TAG-ek alapján belövik neked az nginx config-ot.
Ez is ilyen, de vannak limitációi. Pl.: egy service-re csak 1 forwardot tud.
https://github.com/garutilorenzo/docker-swarm-ingress
Remélem tudtam segíteni.
- A hozzászóláshoz be kell jelentkezni
"...fel vannak..."
- A hozzászóláshoz be kell jelentkezni
docker network create --driver=overlay --ingress my_ingress_network
docker service create --name my_service --network my_ingress_network my_image
docker service create --name proxy --network my_ingress_network --publish 80:80 --publish 443:443 my_proxy_image
Az overlay típusú network a lényeg. Hozzá kell tennem: én nem szeretem a swarm-ot, nekem már többször összedőlt a networkingje.
Éppen folyamatban is van a "leszállás" róla, egyik helyen vm-ekbe (és azon belül sima docker-compose) másik helyen kubernetes irányba.
zászló, zászló, szív
- A hozzászóláshoz be kell jelentkezni
A halozat overlay tipusu, de igy sem megy sajnos. A gond, hogy elv az nginx proxy azt figyeli, hogy a sajat docker konteneren indul-e el valami service, a tobbin nem nezi... Itt leirjak, 5 eve gond mar ez...
https://github.com/nginx-proxy/nginx-proxy/issues/97
Kozben probalkozom megint a Traefik-el, de ott meg 404 es hiba folyamatosan.... Illetve mintha nem latna a crt-t sem... pedig ho helyre mutat, ha belepek a kontenerbe, ott van.
version: '3.8'
services:
traefik:
image: traefik:v2.10
ports:
- target: 443
published: 443
protocol: tcp
mode: host
command:
- --providers.docker.swarmMode=true
- --providers.docker.exposedByDefault=false
- --providers.docker.network=proxy
- --providers.file.filename=/data/traefik/config.yml
- --providers.file.watch=true
- --entrypoints.web.http.redirections.entryPoint.to=websecure
- --entrypoints.web.http.redirections.entryPoint.scheme=https
- --entrypoints.websecure.address=:443
- --accesslog
- --log.level=info
environment:
- TZ=Europe/Budapest
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- nginx-proxy_config:/data/traefik
networks:
- proxy
deploy:
mode: global
placement:
constraints:
- node.role == manager
networks:
proxy:
external: true
volumes:
nginx-proxy_config:
external: true
name: nginx-proxy_config
version: "3.3"
services:
whoami:
image: "traefik/whoami"
container_name: "simple-service"
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`test.domain.com`)"
- "traefik.http.routers.traefik.entrypoints=websecure"
- "traefik.http.routers.traefik.tls=true"
- "traefik.http.services.hostname.loadbalancer.server.port=80"
networks:
- proxy
networks:
proxy:
external: true
- A hozzászóláshoz be kell jelentkezni
Próbálkozz egy másik image-el.
Amit én linkeltem nginx image-et az nézi: https://github.com/garutilorenzo/docker-swarm-ingress/blob/master/nginx-ingress/ingress/ingress.py#L65
- A hozzászóláshoz be kell jelentkezni
nem akarja ezzel sem... azt irja, az ingress network megy, de nincs mappelve domain...
version: "3.8"
services:
nginx:
image: garutilorenzo/docker-swarm-ingress:latest
ports:
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- proxy
secrets:
- domain.com.key
- domain.com.crt
environment:
PROXY_MODE: ssl-term-bridg
deploy:
replicas: 1
update_config:
parallelism: 1
delay: 10s
restart_policy:
condition: on-failure
placement:
constraints: [node.role == manager]
secrets:
domain.com.key:
external: true
domain.com.crt:
external: true
networks:
proxy:
external: true
name: proxy
version: '3.6'
services:
test:
container_name: test
ports:
- 3000:3000
image: hun25-21v:5000/test:latest
restart: always
labels:
ingress.host: domain.com
ingress.port: 3000
networks:
- proxy
networks:
proxy:
external: true
- A hozzászóláshoz be kell jelentkezni
Tippre a deploy hiányzik.
...
deploy: <-- szerintem ez hianyzik
labels:
ingress.host: domain.com
ingress.port: 3000
- A hozzászóláshoz be kell jelentkezni
Köszi, holnap megnézem.
- A hozzászóláshoz be kell jelentkezni
Milyen hálózati problémáid voltak a swarm-al?
Én csak Host OS upgrade-nél futottam bele eddig. Ott a probléma az volt, hogy a Swarm az IPTABLES-t piszkálja ahogy elviekben a compose is.
Ott volt valami change a Host OS részéről és összeborult.
Még kb. 5 éve próbálkoztam vanilla K8S-el. Ott 8 hónap alatt 8x állt meg a networking.
Ott mindig megdögölött az ARP komponens és emiatt rossz címekre oldott fel.
Nálam a kis/home projektek akkor költöztek vissza swarm-ra.
- A hozzászóláshoz be kell jelentkezni
odáig vezettem vissza hogy restartkor nem volt mindegy hogy restartkor egy bizonyos docker networkben a service (jwilder-féle proxy) vagy valami más indult el. Ha nem a proxy indult el (és foglalta el a 443-as portot) akkor nem tudott proxyzni.
Aztán lehet persze hogy az ingress configom nem volt teljesen oké, eléggé összetákolt motyó volt amúgyis (vegyesen service-k és compose).
Az tette be a kaput amikor egy docker upgrade után valami megkattant az overlayfs-ben és semmi se indult el, na akkor már mindegy volt hogy hova állítom vissza a backupot, ezért aztán "szétraktam".
Így most sokkal kevesebb a terhelés az egyes overlayfs-eken (és nem is zfs van hanem ext4). Külön-külön lehet upgradelni, béke.
Ja és nincs annyi (se service se erőforrás) hogy megérné a kubernetes.
zászló, zászló, szív
- A hozzászóláshoz be kell jelentkezni
Egyelore en is ezt csinalom...
https://github.com/nginx-proxy/nginx-proxy/issues/97#issuecomment-13975…
A service-ek is futnak most minden node-on, mert nyilvan csak igy mukodik.
Tettem egy 15 sec-es Round-robin-t a DNS-re igy van "terheleselosztas" valamilyen szinten.
- A hozzászóláshoz be kell jelentkezni