Puncte:2

Nginx Docker Container nu mai funcționează neregulat

drapel cn

Server-ul:

Folosesc Nginx ca un proxy de intrare pentru serverul meu. Nginx rulează într-un container Docker.

docker-compose.yml:

 nginx_ingress:
    imagine: nginx:latest
    porturi:
      - „80:80”
      - „443:443”
    retele:
      nivel frontal: {}
      nivelul din spate:
        adresa_ipv4: 172.28.1.1
    reporniți: întotdeauna
    volume:
      - /var/lib/my-server/config/nginx_ingress:/etc/nginx/conf.d
      - /var/lib/my-server/data/certbot/conf:/etc/letsencrypt
      - /var/lib/my-server/data/certbot/www:/var/www/certbot
    comandă: „/bin/sh -c „în timp ce :; dormi 6 ore și așteaptă $${!}; nginx -s reîncărcare; terminat & nginx -g \"daemon off;\"'"

Deoarece gestionez mai multe certificate cu un alt container, vreau ca Nginx să reîncarce cu grație configurația la fiecare 6 ore.

Ideea este că îmi pot gestiona toate certificatele independent cu un alt container. Nu vreau să ruleze nimic pe gazda mea (fără cronjob) și nu vreau să combin containerul meu nginx-proxy-container cu containerul meu de certificat. Vreau ca fiecare piesă a puzzle-ului să ruleze independent. (Am primit ideea din acest tutorial: https://pentacent.medium.com/nginx-and-lets-encrypt-with-docker-in-less-than-5-minutes-b4b8a60d3a71)

Problema:

Uneori, proxy-ul (nginx) nu mai funcționează. În timp ce containerul Docker în sine continuă să ruleze.

Jurnalele arată următoarele:

...
25/10/2021 05:51:42 [notificare] 1#1: semnal 3 (SIGQUIT) primit, închidere
25/10/2021 05:51:42 [notificare] 12#12: închidere grațioasă
25/10/2021 05:51:42 [notificare] 12#12: ieșire
25/10/2021 05:51:42 [notificare] 13#13: închidere grațioasă
2021/10/25 05:51:42 [notificare] 12#12: ieșire
25/10/2021 05:51:42 [notificare] 13#13: ieșire
25/10/2021 05:51:42 [notificare] 13#13: ieșire
25/10/2021 05:51:42 [notificare] 1#1: semnalul 17 (SIGCHLD) primit de la 12
25/10/2021 05:51:42 [notificare] 1#1: procesul de lucru 12 a ieșit cu codul 0
25/10/2021 05:51:42 [notificare] 1#1: procesul de lucru 13 a ieșit cu codul 0
2021/10/25 05:51:42 [notificare] 1#1: ieșire
2021/10/25 05:51:44 [notificare] 1#1: folosind metoda evenimentului „epoll”
2021/10/25 05:51:44 [notificare] 1#1: nginx/1.21.3
25/10/2021 05:51:44 [notă] 1#1: construit de gcc 8.3.0 (Debian 8.3.0-6) 
25/10/2021 05:51:44 [notificare] 1#1: OS: Linux 5.4.0-86-generic
2021/10/25 05:51:44 [notificare] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
25/10/2021 05:51:44 [notificare] 1#1: începeți procesele lucrătorilor
2021/10/25 05:51:44 [notificare] 1#1: începeți procesul lucrătorului 9
2021/10/25 05:51:44 [notificare] 1#1: începe procesul lucrătorului 10

Cu uneori Adică uneori. Nu am reușit să deslușesc niciun model până acum. Mai întâi am crezut că Nginx se închide la fiecare 6 ore din cauza comanda. Dar se pare că nu este cazul. Am redus timpul de somn la 2 minute și Nginx a continuat să funcționeze bine ore în șir. Apoi am setat din nou timpul de somn la 6 ore și exact 6 ore mai târziu, Nginx a încetat să funcționeze (vezi jurnalul de mai sus). Am repornit containerul Docker și de atunci Nginx rulează (au trecut mai mult de 24 de ore acum). După cum puteți vedea în următoarele jurnale, în majoritatea cazurilor reîncărcarea Nginx funcționează perfect:

...
2021/10/25 11:51:44 [notificare] 19#19: procesul de semnal a început
2021/10/25 11:51:44 [notificare] 1#1: semnal 1 (SIGHUP) primit de la 19, reconfigurare
2021/10/25 11:51:44 [notificare] 1#1: reconfigurare
2021/10/25 11:51:44 [notificare] 1#1: folosind metoda evenimentului „epoll”
2021/10/25 11:51:44 [notificare] 1#1: începeți procesele lucrătorilor
2021/10/25 11:51:44 [notificare] 1#1: începeți procesul lucrătorului 21
2021/10/25 11:51:44 [notificare] 1#1: începe procesul lucrătorului 22
2021/10/25 11:51:44 [notificare] 10#10: închidere grațioasă
2021/10/25 11:51:44 [notificare] 9#9: închidere grațioasă
2021/10/25 11:51:44 [notificare] 10#10: ieșire
2021/10/25 11:51:44 [notificare] 9#9: ieșire
2021/10/25 11:51:44 [notificare] 9#9: ieșire
2021/10/25 11:51:44 [notificare] 10#10: ieșire
25/10/2021 11:51:44 [notificare] 1#1: semnalul 17 (SIGCHLD) primit de la 10
2021/10/25 11:51:44 [notificare] 1#1: procesul de lucru 9 a ieșit cu codul 0
2021/10/25 11:51:44 [notificare] 1#1: procesul de lucru 10 a ieșit cu codul 0
2021/10/25 11:51:44 [notificare] 1#1: semnal 29 (SIGIO) primit
...
...
2021/10/25 17:51:44 [notificare] 23#23: procesul de semnal a început
25/10/2021 17:51:44 [notă] 1#1: semnal 1 (SIGHUP) primit de la 23, reconfigurare
25/10/2021 17:51:44 [notificare] 1#1: reconfigurare
2021/10/25 17:51:44 [notificare] 1#1: folosind metoda evenimentului „epoll”
2021/10/25 17:51:44 [notificare] 1#1: începeți procesele lucrătorilor
2021/10/25 17:51:44 [notificare] 1#1: începe procesul lucrătorului 25
2021/10/25 17:51:44 [notificare] 1#1: începe procesul lucrătorului 26
2021/10/25 17:51:44 [notificare] 22#22: închidere grațioasă
2021/10/25 17:51:44 [notificare] 21#21: închidere grațioasă
2021/10/25 17:51:44 [notificare] 21#21: ieșire
25/10/2021 17:51:44 [notificare] 22#22: ieșire
25/10/2021 17:51:44 [notificare] 21#21: ieșire
25/10/2021 17:51:44 [notificare] 22#22: ieșire
2021/10/25 17:51:44 [notificare] 1#1: semnalul 17 (SIGCHLD) primit de la 21
2021/10/25 17:51:44 [notificare] 1#1: procesul de lucru 21 a ieșit cu codul 0
25/10/2021 17:51:44 [notificare] 1#1: semnal 29 (SIGIO) primit
2021/10/25 17:51:44 [notificare] 1#1: semnalul 17 (SIGCHLD) primit de la 22
25/10/2021 17:51:44 [notificare] 1#1: procesul de lucru 22 a ieșit cu codul 0
25/10/2021 17:51:44 [notificare] 1#1: semnal 29 (SIGIO) primit
...

Intrebarile mele:

  1. Este ceva în neregulă cu comanda Eu folosesc? Ar trebui să se oprească containerul de îndată ce se oprește Nginx? (Poate ceva în neregulă cu procesul principal?)
  2. De ce se oprește Nginx doar neregulat? De ce nu la fiecare 6 ore? Vedeți vreo diferență între primul log și al doilea/al treilea?
  3. Aveți alte sugestii cum aș putea face Nginx să se reîncarce singur? (după cum am menționat mai sus, nu vreau nimic pe gazdă + nu vreau să combin containerele nginx și certbot dacă nu este cu adevărat necesar...)

Vă mulţumesc pentru ajutor!

nulldevops avatar
drapel cn
Se pare că funcționează acum. Trebuie doar să `--force-recreate` pe `docker-compose up`. Dacă nu forțez-recreez ceva, pur și simplu aruncă pe nginx din când în când... Sper că asta ajută pe cineva.
lonix avatar
drapel cn
Am și eu această problemă, uneori funcționează luni de zile și alteori se oprește la câteva zile. O să încerc trucul tău de recreere forțată - mulțumesc! Dar de când ai postat asta, ai găsit cauza? Aceasta este cu adevărat o problemă derutantă...
nulldevops avatar
drapel cn
@lonix Nu am mai avut probleme de atunci. Dar încă nu sunt sigur ce a cauzat acest comportament.
lonix avatar
drapel cn
Mă bucur să aud asta. PS nu folosești docker stack/swarm, nu? Eu sunt, dar configurația mea este similară cu a ta. Am făcut upgrade la cel mai recent nginx, care are câteva remedieri de erori, poate că va ajuta!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.