WIUNIX ACADEMY
آموزش نصب Redis Sentinel در اوبونتو و دبیان
صفحهٔ 3 از 7؛ مراحل قبلی و پیشنیازها را پیش از ادامه مرور کن.
آموزش متناسب با محیط تو
کجا اجرا میکنی؟
سیستمعامل و نسخه را انتخاب کن تا مراحل، دستورها و راهحلها برای همان محیط نمایش داده شوند.
آموزش متناسب با مقادیر تو
تنظیمات این آموزش
مقادیر نمونه را برای محیط خودت تنظیم کن؛ متن و دستورهای مرتبط با هم تغییر میکنند. رمز، کلید خصوصی و توکن وارد نکن. مقادیر فقط در همین زبانه نگهداری میشوند و به سرور یا لینک اشتراکگذاری فرستاده نمیشوند. پیش از اجرا، DNS، گواهیها و سیاست شبکهٔ واقعی را بررسی کن.
آیپی، دامنه یا پورت مثالها با محیط تو فرق دارد؟ دکمهٔ زیر را باز کن، مقادیر را تغییر بده و «اعمال در آموزش» را بزن؛ سپس دستورهای بهروزشده را کپی کن.
تنظیم مقادیر برای محیط من5 مقدار قابلتغییر
قدم بعدی
تفکیک مدیر Sentinel از کلاینت کشف سرویس
روی سه سرور. فایل بعد دسترسی مدیر و همتای Sentinel را از کشف سرویس جدا میکند. PEER طبق قرارداد بالادستی اختیار مدیریتی دارد و نباید به اپلیکیشن داده شود. در این روش ACL، تنظیم requirepass همزمان اضافه نمیشود.
sudo install -o root -g redis -m 0640 /dev/null /etc/redis/sentinel-users.acl
sudo nano /etc/redis/sentinel-users.acl
فایل مجزای محافظتشده آماده است.
محتوای ACL برای Sentinel
نام نقشها و رمز هر نقش روی سه سرور برابر است. DISCOVERY امکان درخواست جابهجایی یا تغییر تنظیمات ندارد. رمز ADMIN برای نگهداری است؛ PEER با CONTROL سرور داده اشتباه نشود.
user default off
user admin on >REPLACE_ADMIN_64_HEX allchannels +@all
user peer on >REPLACE_PEER_64_HEX allchannels +@all
user discovery on >REPLACE_DISCOVERY_64_HEX -@all +auth +client|getname +client|id +client|setname +command +hello +ping +role +sentinel|get-master-addr-by-name +sentinel|master +sentinel|myid +sentinel|replicas +sentinel|sentinels +sentinel|masters
قدم بعدی
تنظیم نشانی و رأیدهی Sentinel
فایل Sentinel اختصاصی با پنل بعد جایگزین شود. در B و C هر دو نشانی bind و sentinel announce-ip، نشانی همان میزبان باشند؛ مبدأ نظارت اولیه در هر سه A است. رمز CONTROL با ACL داده و PEER با ACL رأیدهنده برابر باشد. فایل و پوشهٔ آن باید بازنویسی اتمی را اجازه دهند؛ فقطخواندنیکردن یا برگرداندن فایل اولیه بعد از انتخابات درست نیست.
sudo nano /etc/redis/sentinel.conf
هر رأیدهنده نشانی قابل دسترس مستقل و تنظیمات مشترک گروه و احراز هویت دارد.
محتوای تنظیمات رأیدهنده
زمان۱۰ ثانیه برای تشخیص اولیه است، نه تعهد زمان بازیابی. انتخابات، انتخاب نسخهٔ مناسب، همگامسازی و اتصال دوبارهٔ اپلیکیشن زمان بیشتری میخواهند. parallel-syncs با مقدار۱ تعداد دریافتکنندههای در حال بازهمگامسازی را محدود میکند. فعالبودن tls-replication ارتباط رأیدهندهها و اتصال آنها به Redis را نیز TLS میکند.
bind 127.0.0.1 10.20.0.10
protected-mode yes
port 0
tls-port 26379
tls-cert-file /etc/redis/tls/node.pem
tls-key-file /etc/redis/tls/node.key
tls-ca-cert-file /etc/redis/tls/ca.pem
tls-auth-clients yes
tls-protocols "TLSv1.2 TLSv1.3"
tls-replication yes
daemonize no
supervised systemd
pidfile /run/sentinel/redis-sentinel.pid
logfile /var/log/redis/redis-sentinel.log
dir /var/lib/redis
aclfile /etc/redis/sentinel-users.acl
sentinel announce-ip 10.20.0.10
sentinel announce-port 26379
sentinel monitor academy 10.20.0.10 6379 2
sentinel auth-user academy control
sentinel auth-pass academy REPLACE_CONTROL_64_HEX
sentinel sentinel-user peer
sentinel sentinel-pass REPLACE_PEER_64_HEX
sentinel down-after-milliseconds academy 10000
sentinel failover-timeout academy 180000
sentinel parallel-syncs academy 1
قدم بعدی
کنترل مجوز و باقینماندن مقدار نمونه
قبل از روشنکردن سرویس روی سه سرور اجرا شود. مالک دو فایل قابل بازنویسی redis است؛ فایلهای ACL ریشهمالک میمانند. پوشهٔ تنظیمات بخشی از وضعیت حساس اجراست و نباید با استقرار گیت بازنویسی شود. محدودیت سرویس باید نوشتن در این مسیر را مجاز بداند؛ سختسازی واحد را کورکورانه غیرفعال نکنید. محتوای محرمانهٔ فایلها چاپ نشود.
(
set -euo pipefail
sudo chown redis:redis /etc/redis /etc/redis/redis.conf /etc/redis/sentinel.conf
sudo chmod 0750 /etc/redis
sudo chmod 0640 /etc/redis/redis.conf /etc/redis/sentinel.conf
sudo chown root:redis /etc/redis/users.acl /etc/redis/sentinel-users.acl
sudo chmod 0640 /etc/redis/users.acl /etc/redis/sentinel-users.acl
if sudo grep -E 'REPLACE_' /etc/redis/redis.conf /etc/redis/sentinel.conf /etc/redis/users.acl /etc/redis/sentinel-users.acl >/dev/null; then
echo 'Unfilled secret placeholder: STOP' >&2; exit 1
else
status=$?
test "$status" -eq 1
fi
sudo -u redis test -w /etc/redis
sudo -u redis test -w /etc/redis/redis.conf
sudo -u redis test -w /etc/redis/sentinel.conf
systemctl show redis-server redis-sentinel -p User -p Group -p ExecStart -p ReadWritePaths -p ReadWriteDirectories -p RuntimeDirectory
sudo ss -lntp
)
مقدار نمونه باقی نمانده، بازنویسی مجاز است و مسیر واحد با بستهٔ انتخابی برابر است.
قدم بعدی
راهاندازی Redis روی سه میزبان اختصاصی
ابتدا A و سپس B و C روشن شوند. این اولین شروع با تنظیمات تازه است. فقط پورت TLS ۶۳۷۹ روی loopback و IP خصوصی انتخابی دیده شود. اگر شروع شکست خورد، پیش از تکرار علت را بخوانید؛ Redis فرمان عمومی بررسی آفلاین تنظیمات مشابه nginx -t ندارد.
sudo systemctl enable --now redis-server
sudo systemctl status redis-server --no-pager
sudo ss -lntp
هر سه سرویس فعالاند و پورت متن ساده یا عمومی ندارند.