OpenVPN-এর keepalive নাকি systemd restart: কোনটি পুনরুদ্ধার করে?
একটি নীরব সমকক্ষ, একটি মৃত প্রক্রিয়া আর একটি অচল অ্যাপ্লিকেশন তিনটি আলাদা ব্যর্থতা। 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 একই ধরনের সময়সীমায় প্রক্রিয়া শেষ করে, যা সিদ্ধান্তটি সেবা ব্যবস্থাপকের হাতে দেয়। এগুলো পরস্পরবিরোধী, এবং দ্বিতীয়টি বেছে নিলে কে পুনরুদ্ধারের মালিক তা বদলে যায়। পার্থক্য হলো কে আবার চেষ্টা করার সিদ্ধান্ত নেয়, আর চেষ্টার পর কতটা অবস্থা টিকে থাকে।
যদি সময়সীমায় প্রস্থান বেছে নেন, তবে ইউনিটের একটি পুনরায় চালুর নীতি এবং প্রস্থান-অবস্থার ব্যবস্থাপনা দরকার যা মেলে, নইলে জীবনক্ষমতার ব্যর্থতা স্থায়ী বন্ধের মতো দেখায়। স্থায়িত্বের বিকল্পগুলো অভ্যন্তরীণ পুনরায় চালুর মধ্য দিয়ে ইন্টারফেস ও রুট রাখতে পারে, কিন্তু প্রক্রিয়া প্রস্থানের মধ্য দিয়ে নয়।
প্রতিটি স্থাপনার জন্য একটি জীবনচক্র বেছে নিন এবং কেন তা লিখুন। যে প্রোফাইলে দুটি নির্দেশই আছে, সেটি সিদ্ধান্ত না নেওয়া প্রোফাইল।
প্রতিটি ব্যর্থতা আলাদা কেস হিসেবে পরীক্ষা করুন
অনুমোদিত একটি সময় উইন্ডোতে নীরব সমকক্ষ, নিহত ডেমন এবং অনুপলব্ধ অ্যাপ্লিকেশন অনুকরণ করুন, তারপর দেখুন কোন পুনরুদ্ধার সক্রিয় হয়েছে। নীরব সমকক্ষের উচিত অভ্যন্তরীণ পুনঃসংযোগ, নিহত প্রক্রিয়ার ইউনিট পুনরায় চালু, আর অ্যাপ্লিকেশন বিভ্রাটের এগুলোর কোনোটিই নয়। যখন দুই কেস একই কাজ করে, তখনও মালিকানা মিশ্র।
বারবার পুনরুদ্ধারও মেরামত নয়। প্রত্যাখ্যাত শংসাপত্র বা একই কার্যকর নাম ভাগ করা দুটি ক্লায়েন্ট একে অপরকে প্রতিস্থাপন করতে থাকবে, এবং দ্রুততর টাইমার সেই দোলাচলকে আরও দ্রুত করে মাত্র।