Ինչ-որ մեկը խնդրում է վերակապակցել VPN հաճախորդը, և այդ խնդրանքը կարող է նշանակել երեք տարբեր բան։ Այն կարող է նշանակել մեկ նույնականացված նստաշրջանի գցում, յուրաքանչյուր հաճախորդի տեղեկացում, որ UDP սերվերը հեռանում է, կամ հենց դեմոնի վերագործարկում։ Յուրաքանչյուրն ունի ազդեցության տարբեր շառավիղ, և սխալ ընտրությունը մեկ օգտատիրոջ համար ուղղումը վերածում է ծառայության ընդհատման։ Շրջանակը որոշումն է, և հրամանը բխում է դրանից։

Հարցրեք, թե ում վրա պետք է ազդի, նախքան հարցնելը, թե որ գործիքն օգտագործել։

Մեկ օրինակ՝ կառավարման միջերեսը

Կարգավորված կառավարման միջերեսը կարող է թվարկել միացված օրինակները և գցել դրանցից ուղիղ մեկը։ Յուրաքանչյուր նստաշրջան կրում է հաճախորդի նույնացուցիչ, և client-kill CID թիրախավորում է հենց այդ նույնացուցիչը, այլ ոչ թե ընդհանուր անուն։ Կարդացեք կենդանի նույնացուցիչը ընթացիկ կարգավիճակի ելքից, քանի որ հին մատյանից պատճենված արժեքը վերաբերում է նստաշրջանի, որն այլևս գոյություն չունի։ Օրինակը գցելը վերջացնում է այդ կապը և ուրիշ ոչինչ։

Այն չի երաշխավորում նոր կապ։ Կվերադառնա արդյոք հաճախորդը, կախված է նրա կրկնափորձի կարգավորումներից, մնացած հեռավոր գրառումներից, նույնականացման պահանջներից և նրանից, թե արդյոք վերահսկող հավելվածը դեռ աշխատում է։ Վերադարձող հաճախորդը ստանում է նոր նույնացուցիչ, և դրա համար նույնացուցիչների համեմատումը հինը նորից տարբերելու միակ հուսալի ձևն է։

UDP ելքի ծանուցումը յուրաքանչյուր հաճախորդի հրահանգ չէ

explicit-exit-notify ելքի և վերագործարկման իրադարձությունների մասին կոնֆիգուրացիայի հրահանգ է։ UDP հաճախորդում այն նշում է մյուս կողմին, որ նստաշրջանն ավարտվում է, և թվային արգումենտը կառավարում է, թե քանի անգամ է ծանուցումը կրկնվում։ Երբ սերվերն աշխատում է UDP-ով, այն վերագործարկման կառավարման հաղորդագրություն է ուղարկում իր միացված հաճախորդներին, և փաստաթղթավորված արժեքները տարբերում են նույն սերվերին վերակապակցումը այլ հեռավոր գրառում անցնելուց։ Սա լայն լսարան ունեցող կյանքի ցիկլի ազդանշան է։

Դրանում ոչինչ չի ընտրում կամայական հաճախորդի կամայական պահին։ Այն որպես վերակապակցման կոճակ դիտարկելը միանգամից հասնում է բոլոր միացված նստաշրջաններին։

Ազդանշանները գործում են գործընթացի վրա, ոչ թե նստաշրջանի

SIGUSR1 խնդրում է աշխատող գործընթացին վերագործարկել իր կապը՝ առանց կոնֆիգուրացիան նորից կարդալու, և կայունության ընտրանքները որոշում են, թե ինչ է վերապրում այդ վերագործարկումը։ SIGHUP ավելի հեռու է գնում՝ այն նորից կարդում է կոնֆիգուրացիայի ֆայլը և նորից բացում իր ռեսուրսները։ SIGTERM և SIGINT պահանջում են կարգուկանոնով անջատում։ Դրանք գործընթացի մակարդակի գործողություններ են․ բազմահաճախորդ սերվերի վրա դրանք ազդում են գործընթացի կրած յուրաքանչյուր նստաշրջանի վրա, ոչ թե տոմսում նշվածի։

Երբ գործընթացն աշխատում է ծառայությունների կառավարչի ներքո, օգտագործեք կառավարչի սեփական կառավարումը՝ գործընթացների ցանկում գտած PID-ին ազդանշան ուղարկելու փոխարեն։ Կարդացեք միավորը՝ տեսնելու, թե որ ազդանշանն է ուղարկում կառավարիչը, որովհետև վերագործարկումն ու վերաբեռնումը տարբեր բաներ են անում նույն դեմոնի հետ։

Որոշեք շրջանակը նախքան գործիքն ընտրելը

Երեք հարց լուծում է այն։ Ում վրա պետք է ազդի՝ մեկ օգտատիրոջ, մեկ սերվերի բոլոր հաճախորդների, թե դեմոնի և այն ամենի, ինչ նա կրում է։ Ինչ պետք է պահպանվի՝ կոնֆիգուրացիան, թունելի վիճակը, թե ոչ մեկը։ Ով է լիազորված դա անել՝ կառավարման ինտեգրումը, ծառայության սեփականատերը, թե ցանցային օպերատորը, որը վերահսկում է ելքի ծանուցումը։ Պատասխանեք դրանց, և համապատասխանում է միայն մեկ գործիք։

Չնույնականացված կառավարման լսորդ ավելացնելը՝ վերակապակցման կոճակ ստանալու համար, պորտին հասնող ցանկացածին տալիս է այդ կոճակից շատ ավելին։

Ստուգեք նոր նստաշրջանը, ոչ թե անջատումը

Անջատման իրադարձությունը ապացուցում է, որ հին նստաշրջանն ավարտվել է։ Այն ոչինչ չի ասում նոր նստաշրջանի մասին, որը նույնականացվում է, հասցե է ստանում, երթուղիներ է տեղադրում կամ հասնում է այն ռեսուրսին, որն անհրաժեշտ էր օգտատիրոջը։ Ստուգեք նոր նույնացուցիչը, ապա թունելի վիճակը, ապա մեկ իրական ռեսուրս։ Այդ երեք քայլերն են տարբերությունը վերակապակցման և աշխատող կապի միջև։

Գրեք շրջանակը փոփոխությունների մատյանում։ «Վերակապակցեցի հաճախորդին» նկարագրություն չէ, երբ հաճախորդը քառասունից մեկն էր ընդհանուր սերվերի վրա։

Առնչվող հոդվածներ