Linuxin VPN- ja välityspalvelujen sammuttaminen oikeassa järjestyksessä
Pysäytä kuluttaja, kun polku on vielä olemassa, sitten välityspalvelin, sitten tunneli sen omistajan kautta. Käytä ExecStopia ja TimeoutStopSecia tietoisesti, älä laajaa tappamista.
Jumittuminen sammutuksen aikana välityspalvelimen ollessa käynnissä on harvoin VPN-vika, vaikka VPN olisi viimeinen asia ruudulla. Välityspalvelimen takana olevat sovellukset odottavat yhä polkua, joka on juuri katoamassa, eikä tunnelin omistavaa yksikköä ole vielä pyydetty sulkemaan sitä. Se, mikä näyttää hitaalta palvelulta, on yleensä järjestysongelma. Järjestys ratkaisee useampia näistä kuin mikään aikakatkaisun muutos.
Työskentele ulospäin käänteisessä järjestyksessä: ensin kuluttajat, sitten välityspalvelin, sitten tunneli, ja jokaisen pysäyttää se komponentti, joka sen käynnisti.
Luettele yksiköt ennen kuin pysäytät mitään
Kirjoita ylös sovelluksen yksikkö, välityspalvelimen yksikkö ja VPN:n omistaja, jotka ovat mukana normaalissa ajossa. Lisää jokainen nimipalvelinratkaisija tai apuri, jolla on oma purkunsa, sillä juuri ne ihmiset unohtavat kahdelta yöllä. Ilman sitä luetteloa ensimmäinen kirjoittamasi pysäytyskomento valitsee uhrin satunnaisesti.
Nimet ovat heikko todiste. Käyttäjän välityspalvelin, järjestelmän välityspalvelin ja toisen tilin tunneli voivat jakaa nimen, vaikka niiden elinkaaret ovat täysin erillisiä.
Lopeta työ ja pysäytä sitten kuluttaja
Suunniteltu pysäytys alkaa sovelluksesta: anna sen lopettaa tai peruuttaa pyyntönsä ja pysäytä sitten välityspalvelin sen palveluyksikön kautta. Jos sovelluksen pitää jatkaa toimintaansa sen jälkeen, kun tunneli katoaa, järjestä se tarkoituksella sen sijaan, että jättäisit sen roikkumaan reitille, joka on juuri katoamassa.
Pyynnöt, jotka olivat matkalla pysäytyksen aikana, kuuluvat kirjaukseen, sillä sieltä uudelleenyritysten myrsky seuraavalla käynnistyksellä tulee.
ExecStop ja ExecStopPost ovat eri välineitä
ExecStop= on synkroninen pysäytystoimenpide; ExecStopPost= on siivous, joka ajetaan myös epäonnistuneen käynnistyksen jälkeen. Pysäytyskomento, joka vain lähettää signaalin prosessille ja palaa, antaa systemdin jatkaa, kun kuluttaja vielä tyhjentää. Kaikki, mitä on tapahduttava joka tapauksessa, kuuluu jälkimmäiseen varianttiin, ja kaikki, mitä pysäytyksen on estettävä, synkroniseen. Tarkastele tehokasta yksikköä ja sen lisäosia sen sijaan, että muokkaisit pakettitiedostoa paikallaan.
Riippuvuusgraafi järjestää pysäytystyöt. Se ei muuta asynkronista skriptiä synkroniseksi eikä saa etäsovellusta tallentamaan tietojaan.
Rajaa pysäytys ja tiedä, mitä raja maksaa
TimeoutStopSec= rajoittaa sekä pysäytyskomentoa että palvelun omaa päättymistä, ja systemd siirtyy pakotettuun tappamiseen, kun raja vanhenee. Valitse arvo sovelluksen todellisen tyhjennyskäyttäytymisen mukaan ja kirjoita muistiin, mitä voi mennä, kun se täyttyy. Luku, joka valittiin siksi, että koneen pitäisi sammua nopeammin, on tietohäviön asetus valepuvussa.
Kun pysäytys on yhä hidas, tallenna yksikkö, sen lapsiprosessit, lokin aikaväli ja aikakatkaisun tulos. Jokaisen aikakatkaisun lyhentäminen tai laajaan tappamiseen tarttuminen on se tapa, jolla puhtaat sammutukset muuttuvat vioittuneeksi tilaksi seuraavalla käynnistyksellä.
Katkaise yhteys omistajan kautta ja testaa sitten kolme tapausta
Kun kuluttajat ovat alhaalla, pyydä tunnelin omistavaa hallintaa katkaisemaan yhteys: systemd-instanssi, NetworkManagerin aktiivinen yhteys tai toimittajan palvelu. Asiaankuulumattoman OpenVPN-prosessin tappaminen ei välttämättä poista istuntoa, joka toimitti reitin, ja uudelleenkäynnistyskäytännöllä varustettu välityspalvelin voi luoda pyynnön uudelleen, kun purat polkua. Sovita se käytäntö suunnitellun pysäytyksen kanssa ennen aloittamista.
Testaa tavallinen pysäytys, pysäytys aktiivisen pyynnön kanssa ja pysäytys, jossa tunneli pettää ensin. Toistettava aikarajallinen jakso voittaa nopean sammutuksen, joka toimii kerran.