keepalive у OpenVPN ці restart у systemd: што аднаўляе злучэнне?
Маўклівы партнёр, мёртвы працэс і непрыдатны дадатак — гэта тры розныя збоі. Аддайце keepalive OpenVPN, працэс — systemd, і праверце кожны выпадак.
Тры розныя рэчы могуць пайсці не так з тунэлем, і яны патрабуюць трох розных рэакцый. Партнёр перастае адказваць, працэс дэмана памірае, або дадатак за тунэлем перастае абслугоўваць. Канфігурацыя, якая перазапускае сэрвіс пры любой з гэтых падзей, — гэта не ўважлівы нагляд; гэта адно грубое дзеянне, ужытае да незвязаных збояў. Параўнанне таго, што кожны механізм сапраўды можа назіраць, робіць падзел працы відавочным.
Тры збоі, якія выглядаюць як адзін
Маўчанне партнёра азначае, што іншы канец перастаў пасылаць, і OpenVPN можа выявіць гэта сам, бо валодае пульсам. Смерць працэса азначае, што дэман выйшаў, што заўважае менеджэр сэрвісаў і не можа заўважыць OpenVPN. Збой дадатка азначае, што тунэль у парадку, а нешта за ім не, і ні адзін з двух іншых механізмаў не мае спосабу гэта ведаць. Кожны патрабуе іншай рэакцыі, і ні адзін з іх не тоесны заўвазе, што тунэль працуе.
Гэта розныя сігналы з розных узроўняў, і ў кожнага ёсць уласнік, які можа дзейнічаць без здагадак. Змешванне іх дае сістэму, якая перазапускаецца на сімптомы, якія не можа расшыфраваць.
Запішыце тры выпадкі перад зменай любога таймера. Сам спіс звычайна паказвае, што адзін механізм просяць пакрыць усе тры.
Да чаго насамрэч разгортваецца keepalive
Дырэктыва keepalive — гэта скарот, і разгортванне адрозніваецца па рэжыме. На серверы keepalive 10 60 ператвараецца ў лакальны ping кожныя дзесяць секунд, лакальны таймаўт перазапуску ў 120 секунд і значэнні 10 і 60, што перадаюцца кліентам. Таймаўт сервера наўмысна падвоены, каб кліент атрымаў шанец перазапусціцца раней, чым сервер здасца. Чытайце разгорнутую форму ў працуючай канфігурацыі, а не скарот у профілі.
Менавіта праз гэта падваенне любое апісанне, якое сцвярджае, што абодва канцы перазапускаюцца праз шэсцьдзесят секунд, памылковае. Гэта таксама тлумачыць, чаму два канцы не флапаюць у нагу, калі шлях пагаршаецца.
Пульс — гэта трафік партнёраў OpenVPN, а не ICMP-проба нейкага публічнага хоста. Адказ даказвае толькі тое, што далёкі канец тунэля жывы. Ён нічога не кажа пра базу даных або вэб-сэрвіс, які карыстальнік сапраўды мае патрэбу.
За чым не сочыць Restart=on-failure
Прачытайце ўсталяваны юніт перад даданнем перавызначэння. Restart=on-failure рэагуе на дакументаваныя ўмовы збою працэса, што не тоесна назіранню за станам злучэння. Ён не спрацоўвае таму, што пачалося ўнутранае перападлучэнне, і чысты выхад мае іншую семантыку, чым крах.
Гэтае адрозненне важнае, бо ўнутраны перазапуск захоўвае той жа працэс жывым. Юніт нічога не бачыць, тунэль аднаўляецца сам, і гэта правільны вынік.
Задайце RestartSec і ліміты запуску свядома, інакш цыкл крахаў будзе біць па шлюзе і пахавае сапраўдную памылку пад паведамленнямі пра перазапуск. Ліміт перазапуску, які спрацаваў, пакідае юніт у стане збою, што бачна, а неабмежаваны цыкл — не.
ping-restart і ping-exit не ўзаемазаменныя
ping-restart запускае ўнутраны перазапуск OpenVPN і захоўвае працэс. ping-exit завяршае працэс па такім жа таймаўце, што перадае рашэнне менеджэру сэрвісаў. Яны ўзаемавыключальныя, і выбар другога змяняе таго, хто валодае аднаўленнем. Розніца ў тым, хто вырашае паспрабаваць зноў, і колькі стану перажывае спробу.
Калі вы выбіраеце выхад па таймаўце, юніту патрэбны палітыка перазапуску і апрацоўка статусу выхаду, якія адпавядаюць, інакш збой жыццяздольнасці выглядае як канчатковы прыпынак. Параметры захавання таксама могуць зберагчы інтэрфейсы і маршруты праз унутраны перазапуск, але не праз выхад працэса.
Выберыце адзін жыццёвы цыкл на разгортванне і запішыце чаму. Профіль, які нясе абедзве дырэктывы, — гэта профіль, які не вызначыўся.
Праверце кожны збой як асобны выпадак
Змадэлюйце маўклівага партнёра, забіты дэман і недаступны дадатак у дазволеным акне, затым праверце, якое аднаўленне спрацавала. Маўклівы партнёр павінен даць унутранае перападлучэнне, забіты працэс — перазапуск юніта, а збой дадатка — ні адно з гэтага. Калі два выпадкі даюць аднолькавае дзеянне, уласнасць усё яшчэ змешаная.
Паўторнае аднаўленне таксама не з'яўляецца рамонтам. Адхіленыя ўліковыя даныя або два кліенты з адным эфектыўным імем будуць працягваць замяняць адзін аднаго, і хутчэйшыя таймеры робяць гэтае флапанне толькі хутчэйшым.