آذرسیس

نحوه نصب و پیکربندی Redis در CentOS 8 - آذرسیس
5/5 - (2 امتیاز)

در این آموزش نصب و پیکربندی Redis در CentOS 8 در لینوکس را بررسی خواهیم کرد! Redis یک ذخیره ساز ساختار داده در حافظه منبع باز است. می‌توانید از آن به‌عنوان جایگزین Memcached برای ذخیره simple key-value pairs، به‌عنوان پایگاه داده NoSQL یا حتی یک message broker با الگوی Pub-Sub استفاده کنید. این راهنما به شما نشان می دهد که چگونه Redis را در CentOS 8 نصب، پیکربندی، تنظیم دقیق و ایمن کنید.

نحوه نصب و پیکربندی Redis در CentOS 8

حال می خواهیم نحوه نصب این محل ذخیره سازی محبوب و مفید را باهم بررسی کنیم. 

نصب و پیکربندی Redis در CentOS 8

1. نصب Redis

در مرحله اول باید فعال سازی مخزن را انجام دهید:

sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

در مرحله دوم لیست تمام بسته های Redis موجود در Remi repo را با دستور زیر بدست آورید:

dnf module list | grep redis

نتیجه باید به این صورت باشد:

redis     5 [d]        common [d]     Redis persistent key-value database                   
redis     remi-5.0     common [d]     Redis persistent key-value database                  
redis     remi-6.0     common [d]     Redis persistent key-value database

مقادیر در ستون دوم بالا با نسخه های اصلی Redis مطابقت دارد.

در مرحله سوم با فرض اینکه آخرین نسخه اصلی 6.0 است، آن نسخه را نصب کنید.

sudo dnf module install redis:remi-6.0 -y

در مرحله چهارم سرویس Redis را فعال کنید تا در زمان بوت شروع شود:

sudo systemctl enable redis.service

در مرحله آخر redis را اجرا کنید:

sudo systemctl start redis.service

2. پیکربندی Redis

1. فایل پیکربندی Redis را در ویرایشگر مورد علاقه خود باز کنید:

sudo nano /etc/redis.conf

2. ظرفیت حافظه مورد نظر را برای برنامه خود تنظیم کنید:

maxmemory 128mb

به طور پیش‌فرض، وقتی حافظه به حداکثر رسید، Redis نوشتن داده‌های جدید را متوقف می‌کند. اگر می‌خواهید Redis با حذف خودکار داده‌های قدیمی، داده‌های جدید بنویسد، باید به Redis بگویید چگونه آن‌ها را حذف کند. سیاست اخراج allkeys-lru برای اکثر کاربران انتخاب خوبی است. خط زیر را اضافه کنید:

maxmemory-policy allkeys-lru

3. تنظیم save در بخش disk policy

به طور پیش فرض، Redis داده های درون حافظه خود را پس از یک دوره مشخص یا تعداد مشخصی از عملیات نوشتن در برابر DB ذخیره می کند. تنظیمات پیش فرض عبارتند از:

save 900 1
save 300 10
save 60 10000

این بدان معناست که صرفه جویی رخ خواهد داد:

  • تغییر حداقل 1 کلید پس از 900 ثانیه (15 دقیقه)
  • تغییر حداقل 10 کلید پس از 300 ثانیه (5 دقیقه)
  • تغییر 10000 کلید پس از 60 ثانیه

با تنظیمات پیش فرض بالا، Redis هر بار که مجدداً راه اندازی می شود، داده های ذخیره شده را در حافظه بارگذاری می کند. بنابراین داده های حافظه قبلی شما بازیابی خواهند شد. اگر به این ویژگی نیاز ندارید، می‌توانید با گذاشتن نظر در آن خطوط، آن را کاملاً غیرفعال کنید:

# save 900 1
# save 300 10
# save 60 10000

اگر تصمیم دارید این ویژگی را حفظ کنید، باید سرور را به یک طرح بزرگتر ارتقا دهید یا یک فایل تعویض لینوکس مناسب اضافه کنید تا مطمئن شوید که حافظه Redis دو برابر حداکثر حافظه اعلام شده در بالا است. در غیر این صورت، در بدترین حالت، زمانی که حداکثر حافظه به دست می آید، فرآیند ذخیره سازی می تواند باعث شود که حافظه سرور شما تمام شود.

1. فایل پیکربندی را ذخیره کرده و ببندید، سپس Redis را مجددا راه اندازی کنید تا تغییرات اعمال شود.

sudo systemctl restart redis.service

3. تنظیم دقیق سیستم

1. بررسی فایل log Redis

sudo tail /var/log/redis/redis.log

اطلاعاتی مانند موارد زیر را خواهید دید:

5228:M 15 Aug 2020 04:14:29.133 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
5228:M 15 Aug 2020 04:14:29.133 # Server initialized
5228:M 15 Aug 2020 04:14:29.133 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
5228:M 15 Aug 2020 04:14:29.133 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.

2. برای رفع اخطار اول دستور زیر را وارد کنید:

echo 'net.core.somaxconn = 512' | sudo tee -a /etc/sysctl.conf > /dev/null

3. برای رفع اخطار دوم دستور زیر را وارد کنید:

echo 'vm.overcommit_memory = 1' | sudo tee -a /etc/sysctl.conf > /dev/null

4. مقادیر sysctl را دوباره بارگیری کنید:

sudo sysctl –p

5. برای رفع آخرین اخطار، قبل از شروع سرویس Redis باید صفحات بزرگ شفاف را در زمان بوت غیرفعال کنید.

یک فایل اسکریپت جدید ایجاد کنید:

sudo nano /usr/bin/disable-transparent-hugepage

متن زیر را در فایل قرار دهید:

#!/bin/bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
exit 0

فایل را ذخیره کرده و ببندید، سپس آن را قابل اجرا کرده و به اکانت روت هدایت کنید:

sudo chown root:root /usr/bin/disable-transparent-hugepage
sudo chmod 770 /usr/bin/disable-transparent-hugepage

سپس، فایل پیکربندی سرویس systemed را ایجاد کنید که اسکریپت را در زمان راه‌اندازی فراخوانی می‌کند:

sudo nano /etc/systemed/system/disable-transparent-hugepage.service

متن زیر را در فایل قرار دهید:

[Unit]
Description=Disable Transparent Huge Pages (THP) for Redis.
Before=redis.service

[Service]
Type=exec
ExecStart=/usr/bin/disable-transparent-hugepage

[Install]
WantedBy=multi-user.target

فایل را ذخیره کرده و ببندید، سپس سرویس را فعال کنید:

sudo systemctl enable disable-transparent-hugepage.service

4. تأیید تنظیمات Redis

  1. سرور Redis را مجددا راه اندازی کنید:
sudo reboot
  1. پس از راه اندازی مجدد سرور، فایل log Redis را بررسی کنید تا مطمئن شوید که هیچ هشداری وجود ندارد:
sudo tail /var/log/redis/redis.log
  1. از برنامه redis-cli برای اتصال به Redis از طریق IP loopback پیش فرض 127.0.0.1 و پورت 6379 استفاده کنید:
redis-cli -h 127.0.0.1 -p 6379

اگر اتصال با موفقیت انجام شود، خط فرمان Redis را خواهید دید:

127.0.0.1:6379>
  1. چند دستور Redis را وارد کنید تا مطمئن شوید کار می کند:
set testkey testvalue
get testkey
exit

اگر نتیجه زیر را مشاهده کردید، Redis به درستی کار می کند:

127.0.0.1:6379> set testkey testvalue
OK
127.0.0.1:6379> get testkey
"testvalue"
127.0.0.1:6379> exit

5. پیکربندی Redis برای دسترسی به شبکه خصوصی (اختیاری)

اگر یک محیط تولید با چندین سرور برای برنامه خود تنظیم کنید، سرورهای برنامه نیاز به دسترسی به سرور Redis دارند. برای ایمنی استفاده از شبکه خصوصی توصیه می شود.

پیکربندی شبکه خصوصی

  1. این راهنما را دنبال کنید تا یک شبکه خصوصی را برای این سرور و سرورهای برنامه ای که نیاز به ارتباط با Redis دارند فعال و پیکربندی کنید.
  2. سرویس فایروال را به روز کنید تا اتصالات ورودی از شبکه خصوصی مجاز شود:
sudo firewall-cmd --permanent --zone=trusted --change-interface=ens7
  1. یک سرویس systemd ایجاد کنید تا راه اندازی Redis را تا زمانی که رابط خصوصی فعال شود و آدرس IP اختصاص داده شود به تاخیر بیاندازید.
sudo nano /etc/systemd/system/redis.service.d/wait-for-ips.conf

متن زیر را در فایل قرار دهید و سپس آن را ذخیره کرده و ببندید:

[Unit]
After=network-online.target
Wants=network-online.target
  1. فایل پیکربندی Redis را ویرایش کنید.
sudo nano /etc/redis.conf
  1. آدرس IP خصوصی را که Redis باید به آن متصل شود اضافه کنید. به عنوان مثال، Redis باید هم به Loopback داخلی (127.0.0.1) و هم به یک آدرس IP خصوصی (192.168.0.100) متصل شود:
bind 127.0.0.1 192.168.0.100
  1. فایل پیکربندی را ذخیره کرده و ببندید.
  2. Redis را مجدداً راه اندازی کنید تا تغییرات اعمال شود.
sudo systemctl restart redis.service

تست شبکه خصوصی

  1. از طریق SSH به یکی از سرورهای برنامه خود در شبکه خصوصی خود متصل شوید.
  2. با فرض اینکه سرور برنامه نیز CentOS 8 است، به طور موقت Redis را نصب کنید تا نرم افزار redis-cli را دریافت کنید.
sudo dnf install redis
  1. برای اتصال به سرور Redis از برنامه redis-cli استفاده کنید.
redis-cli -h 192.168.0.100 -p 6379

اگر اتصال با موفقیت انجام شود، خط فرمان Redis را خواهید دید:

192.168.0.100:6379>
  1. چند دستور Redis را وارد کنید تا مطمئن شوید کار می کند:
set testkey testvalue
get testkey
exit
  1. اگر نتیجه زیر را مشاهده کردید، Redis به درستی کار می کند.
127.0.0.1:6379> set testkey testvalue
OK
127.0.0.1:6379> get testkey
"testvalue"
127.0.0.1:6379> exit
  1. بسته redis را روی سرور برنامه Uninstall کنید.
sudo dnf remove redis

 

آذرسیس ارائه دهنده انواع سرور اختصاصی و سرور مجازی با پهنای باند نامحدود

نتیجه گیری

در این آموزش نصب و پیکربندی Redis در CentOS 8 در لینوکس را بررسی کردیم. امیدوارم این مقاله برایتان مفید بوده باشد. نظرات خود را از طریق فرم زیر با ما به اشتراک بگذارید.

سوالات متداول

چگونه پی ببریم که redis در سنتوس نصب شده است؟

وضعیت redis را می توان با دستور sudo systemctl status redis. service. می توان پی برد.

Share this Post

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *