WIUNIX ACADEMY
آموزش نصب Redis Sentinel در اوبونتو و دبیان
صفحهٔ 4 از 7؛ مراحل قبلی و پیشنیازها را پیش از ادامه مرور کن.
آموزش متناسب با محیط تو
کجا اجرا میکنی؟
سیستمعامل و نسخه را انتخاب کن تا مراحل، دستورها و راهحلها برای همان محیط نمایش داده شوند.
آموزش متناسب با مقادیر تو
تنظیمات این آموزش
مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر میکنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری میشوند و به سرور یا لینک اشتراکگذاری فرستاده نمیشوند. پیش از اجرا، DNS، گواهیها و سیاست شبکهٔ واقعی را بررسی کن.
آیپی، دامنه یا پورت مثالها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای بهروزشده را کپی کن.
تنظیم مقادیر برای محیط من5 مقدار قابلتغییر
قدم بعدی
ورود مدیر برای بررسی تکثیر واقعی
روی هر سه سرور، رمز ADMIN در ورودی مخفی داده شود. رمز در آرگومان یا تاریخچهٔ شل قرار نگیرد. پنل بعد نشست تعاملی redis-cli است و نباید در شل اجرا شود.
sudo redis-cli --tls --cacert /etc/redis/tls/ca.pem --cert /etc/redis/tls/node.pem --key /etc/redis/tls/node.key -h 127.0.0.1 -p 6379 --user admin --askpass
نشست TLS احراز هویتشده باز میشود.
قدم بعدی
بررسی نقش، اتصال و پیشرفت دریافت داده
در A نقش master و دو connected_slaves انتظار میرود. در B و C نقش slave، مبدأ10.20.0.10، وضعیت اتصال up و مقدار صفر برای master_sync_in_progress لازم است. هنگام نوشتن، پیشرفت offset را هم ببینید؛ اتصال سالم بهتنهایی رسیدن دادهٔ مورد نظر را ثابت نمیکند. خروجی Redis هنوز بعضی نامهای قدیمی master و slave را دارد. ذخیرهسازی هم نباید خطای تکرارشونده داشته باشد.
ROLE
INFO replication
INFO persistence
QUIT
نقش، مقدار دقیق و پاسخ مشخصشده در توضیح همین مرحله بررسی شود؛ نتیجهٔ غیرمنتظره ادامهٔ کار را متوقف میکند.
قدم بعدی
اتصال آزمایشی با نقش محدود اپلیکیشن
روی A، رمز APP در ورودی مخفی وارد شود. این نقش محدود فقط کلیدهای academy:*، فرمان WAIT و بررسی سلامت و نقش را پوشش میدهد و الگوی عمومی همهٔ اپلیکیشنها نیست. SET و WAIT باید در همین اتصال اجرا شوند.
sudo redis-cli --tls --cacert /etc/redis/tls/ca.pem --cert /etc/redis/tls/node.pem --key /etc/redis/tls/node.key -h 127.0.0.1 -p 6379 --user app --askpass
حساب اپلیکیشن بدون اختیار مدیریتی متصل است.
قدم بعدی
نوشتن نشانگر و بررسی دو نسخهٔ دریافتکننده
در همان نشست APP اجرا شود. پاسخ SET باید OK باشد و WAIT در پنج ثانیه عدد۲ بدهد. صفر یا یک یعنی بررسی تکثیر کامل نشده؛ در این حالت تمرین ادامه پیدا نکند. حتی عدد۲ هم تضمین اجماع یا ثبت پایدار نیست. این کلید فقط متعلق به آزمایش اختصاصی است.
SET academy:probe before-failover
WAIT 2 5000
GET academy:probe
QUIT
Illustrative successful output / نمونهٔ خروجی موفق:
OK
(integer) 2
"before-failover"نقش، مقدار دقیق و پاسخ مشخصشده در توضیح همین مرحله بررسی شود؛ نتیجهٔ غیرمنتظره ادامهٔ کار را متوقف میکند.
قدم بعدی
خواندن داده در مقصد و اثبات رد نوشتن
در B و C با همان پنل ورود APP به نمونهٔ محلی وصل شوید و نشست زیر را اجرا کنید. روی هر دو، GET باید before-failover باشد. تلاش SET باید خطای READONLY بدهد و کلید را تغییر ندهد. رد پاسخ قدیمی هنگام قطع اتصال عمدی است؛ برای پنهانکردن نتیجه، نوشتن روی نسخهٔ دریافتکننده را فعال نکنید.
GET academy:probe
SET academy:probe forbidden-write
QUIT
نقش، مقدار دقیق و پاسخ مشخصشده در توضیح همین مرحله بررسی شود؛ نتیجهٔ غیرمنتظره ادامهٔ کار را متوقف میکند.
قدم بعدی
روشنکردن رأیدهندهها بهترتیب
ابتدا A، سپس B و بعد C اجرا شوند. بین افزودن هر رأیدهنده۳۰ ثانیه فاصله و بررسی لاگ باشد تا کشف همتاها انجام شود. این فاصله وعدهٔ زمان بازیابی نیست و به واحد سرویس تازه نیاز ندارد.
sudo systemctl enable --now redis-sentinel
sudo systemctl status redis-sentinel --no-pager
sleep 30
sudo tail -n 40 /var/log/redis/redis-sentinel.log
سه رأیدهنده همدیگر را بدون خطای احراز هویت یا بازنویسی پیدا میکنند.