Redis یک انتخاب رایج برای ذخیره سازی است و امکان استفاده مجدد از داده های کش ذخیره شده در فضای حافظه اصلی اپلیکیشن را به جای جستجوی یک پایگاه داده برای داده های پر کاربرد فراهم می کند. در این آموزش نحوه راه اندازی یک Redis Replication Cluster آموزش داده خواهد شد.
فهرست مطالب
معرفی Redis Replication Cluster
Redis یک سرور منبع باز محبوب و پرکاربرد است و مجموعه ای غنی از ویژگی ها را ارائه می دهد که آن را برای طیف وسیعی از موارد استفاده از جمله به عنوان پایگاه داده، لایه caching، بروکر پیام، قابل استفاده در اپلیکیشن های کاربردی وب، اپلیکیشن های چت و پیام رسانی، تجزیه و تحلیل داده های بلادرنگ و موارد دیگر موثر می کند. Replication در Redis یک مدل برنامه نویسی است که به شما امکان می دهد ذخیره سازی key-value را در ماشین های مختلف پیاده سازی کنید تا قابلیت اطمینان، تحمل خطا و دسترسی را بهبود بخشد.
پیش نیازها
- پیکربندی مجموعه ای از سه نود اوبونتو 20.04 با شبکه خصوصی
- هر نود باید دارای دو مورد زیر باشد:
- یک کاربر non-root با امتیازات sudo
- پایگاه داده نصب شده
نحوه راه اندازی Redis Replication Cluster
ابتدا باید SSH را به هر سه سرور منتقل کنید. سپس باید از نصب و فعال بودن سرور Redis اطمینان حاصل کنید. مراحل زیر را برای این کار دنبال کنید.
بسته redis-cli را با کمک دستور زیر راه اندازی کنید:
$ redis-cli
سپس دستور زیر را اجرا کنید:
127.0.0.1:6379> PING
خروجی زیر نشان می دهد که سرور Redis در حال اجرا است:
127.0.0.1:6379> PONG
برای خروج از سرور Redis کافی است CTRL + C را بزنید.
نحوه پیکربندی تنظیمات Replication سرور Redis
سرور Redis برای کار در حالت replication به بسیاری از تنظیمات پیکربندی متکی است و باید تنظیمات را در هر سه نود پیکربندی کنید.
تنظیمات پیکربندی Redis به طور پیش فرض در فایل زیر پیدا می شود:
/etc/redis/redis.conf
می توانید از ویرایشگر متن مورد علاقه خود برای باز کردن هر سه سرور استفاده کنید. در این آموزش از ویرایشگر nano استفاده می کنیم:
$ sudo nano /etc/redis/redis.conf
اکنون باید تغییرات پیکربندی زیر را در هر سه سرور انجام دهید.
نود-1: نود پرایمری – 10.106.0.1:
bind 127.0.0.1 ::1 10.106.0.1 protected-mode no requirepass EXAMPLE_REPL_PASSWORD
نود-2: نود Replica – 10.106.0.2:
bind 127.0.0.1 ::1 10.106.0.2 protected-mode no replicaof 10.106.0.1 6379 masterauth EXAMPLE_REPL_PASSWORD requirepass EXAMPLE_REPL_PASSWORD
نود-3 : نود Replica- 10.106.0.3:
bind 127.0.0.1 ::1 10.106.0.3 protected-mode no replicaof 10.106.0.1 6379 masterauth EXAMPLE_REPL_PASSWORD requirepass EXAMPLE_REPL_PASSWORD
دقت کنید که باید EXAMPLE_REPL_PASSWORD را با رمز عبور قوی جایگزین کنید. درنهایت بعد از اینکه ویرایش را تمام کردید لازم است فایل را ذخیره کرده و ببندید.
هر سه سرور Redis را با کمک دستور زیر ریستارت کنید:
$ sudo systemctl restart redis-server
نحوه تست کردن Redis Replication
اکنون می توانید نمودار معماری Redis replication را که تنظیم کرده اید ببینید:
+------------------+ +---------------+ +---------------+ | Primary | ---> | Replica 1 | | Replica 2 | | (receive writes) | | (exact copy) | | (exact copy) | +------------------+ +---------------+ +---------------+
هر کلید نوشته شده در سرور اصلی Redis بطور خودکار در نمونه های Replica کپی می شود. با انجام دادن مراحل زیر می توانید این موضوع را تایید کنید.
ابتدا باید با اجرا کردن دستور زیر وارد سرور Redis در نود اولیه-1 (10.106.0.1) شوید:
$ redis-cli
در مرحله بعد باید در سرور Redis احراز هویت کنید.
127.0.0.1:6379> AUTH EXAMPLE_REPL_PASSWORD
برای بررسی وضعیت Replication می توانید دستور زیر را وارد کنید:
127.0.0.1:6379> info replication
خروجی باید چیزی شبیه زیر باشد:
# Replication role:master connected_slaves:2 slave0:ip=10.106.0.2,port=6379,state=online,offset=1120,lag=0 slave1:ip=10.106.0.3,port=6379,state=online,offset=1120,lag=0 master_replid:fa1b59b5bf10563aaefd6b77d9ce5b455746506e master_replid2:0000000000000000000000000000000000000000 master_repl_offset:1120 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:1120
اکنون باید یک کلید Test با مقدار بصورت زیر تنظیم کنید:
127.0.0.1:6379> set test "The key value was set on the primary node."
سپس باید پیام تایید زیر را دریافت کنید:
OK
دو پنجره ترمینال جدید باز می شود. SSH به نود های Replica: نود-2 (10.106.0.2) و نود-3 (10.106.0.3).
$ redis-cli
اکنون دوباره با کمک دستور زیر به سرور های Redis در نود های Replica احراز هویت کنید:
127.0.0.1:6379> AUTH EXAMPLE_REPL_PASSWORD
سپس باید مقدار کلید Test ایجاد شده در نود پرایمری را با کمک دستور زیر بازیابی کنید:
127.0.0.1:6379> GET test
در نهایت باید خروجی زیر را دریافت کنید:
"The key value was set on the primary node."
خروجی فوق نشان می دهد پروسه Replication طبق انتظار کار می کند.
نحوه ارتقا Replica به پرایمری
اگر نود پرایمری پایین بیاید می توانید با کمک فرآیند زیر هر نود Replica را برای تبدیل به نود پرایمری ارتقا دهید.
ابتدا باید در نود Replica وارد سرور Redis شوید.
$ redis-cli
در مرحله بعد با کمک دستور زیر در نود-1 برای سرور Redis احراز هویت کنید:
127.0.0.1:6379> AUTH EXAMPLE_REPL_PASSWORD
اکنون باید به Replica بگویید که تکثیر داده ها را از نود پرایمری قدیمی متوقف کند. وارد کردن کد دستوری زیر می توانید این کار را انجام دهید:
127.0.0.1:6379> replicaof no one
برای خروج از سرور Redis در نود Replica دستور زیر را وارد کنید:
127.0.0.1:6379> QUIT
در مرحله بعد فایل پیکربندی Redis را در نود Replica باز کنید. برای اینکه Redis در حالت پرایمری اجرا شود باید خطوط زیر را اضافه کنید:
replicaof 10.106.0.1 6379 masterauth EXAMPLE_REPL_PASSWORD
فایل را ذخیره کرده و ببندید.
سپس باید با اجرا کردن دستور زیر سرور Redis را در پرایمری جدید ریستارت کنید:
$ sudo systemctl restart redis-server
اکنون دوباره وارد سرور Redis در نود-2 (10.106.0.3) شوید. آن را احراز هویت کنید و سپس با کمک دستور زیر به نود Replica بگویید تا از قسمت پرایمری تازه انتخاب شده شروع به تکثیر کند:
127.0.0.1:6379> replicaof 10.106.0.2 6379
خروجی باید مانند زیر باشد:
OK
برای اطمینان از اینکه تنظیمات پرایمری جدید مطابق با آن تنظیم شده است می توانید در نود-2 (10.106.0.3) دستور زیر را وارد کنید:
127.0.0.1:6379> info replication
اکنون باید خروجی زیر را دریافت کنید:
# Replication role:slave master_host:10.106.0.2 master_port:6379 master_link_status:up master_last_io_seconds_ago:6 master_sync_in_progress:0 slave_repl_offset:42 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:0612cd32ed6f06ca81b4ab21a6cff76b7e561b3e master_replid2:0000000000000000000000000000000000000000 master_repl_offset:42 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:42
خروجی فوق نشان می دهد که نسخه پرایمری جدید در حال اجرا است.
در نهایت می توانید آدرس IP پرایمری جدید را در هر اپلیکیشنی که به نود پرایمری متصل بود، تنظیم کنید.
آذرسیس مفتخر است، سرور مجازی از 60 لوکیشن برتر سراسر جهان را با 7 روز گارانتی بازگشت وجه، برای شما همراهان آذرسیس فراهم کند.
نتیجه گیری
در این مقاله نحوه راه اندازی یک Redis Replication Cluster و همچنین نحوه پیکربندی معماری Redis Replication آموزش داده شد. با کمک تنظیمات این مقاله می توانید یک محیط مقاوم به خطا پیاده سازی کنید تا Redis از آن استفاده کند.