آذرسیس

نحوه راه اندازی Redis Replication Cluster
5/5 - (1 امتیاز)

Redis یک انتخاب رایج برای ذخیره سازی است و امکان استفاده مجدد از داده های کش ذخیره شده در فضای حافظه اصلی اپلیکیشن را به جای جستجوی یک پایگاه داده برای داده های پر کاربرد فراهم می کند. در این آموزش نحوه راه اندازی یک Redis Replication Cluster آموزش داده خواهد شد.

معرفی Redis Replication Cluster

Redis یک سرور منبع باز محبوب و پرکاربرد است و مجموعه ای غنی از ویژگی ها را ارائه می دهد که آن را برای طیف وسیعی از موارد استفاده از جمله به عنوان پایگاه داده، لایه caching، بروکر پیام، قابل استفاده در اپلیکیشن های کاربردی وب، اپلیکیشن های چت و پیام رسانی، تجزیه و تحلیل داده های بلادرنگ و موارد دیگر موثر می کند. Replication در Redis یک مدل برنامه نویسی است که به شما امکان می دهد ذخیره سازی key-value را در ماشین های مختلف پیاده سازی کنید تا قابلیت اطمینان، تحمل خطا و دسترسی را بهبود بخشد.

پیش نیازها

  • پیکربندی مجموعه ای از سه نود اوبونتو 20.04 با شبکه خصوصی
  • هر نود باید دارای دو مورد زیر باشد:
  1. یک کاربر non-root با امتیازات sudo
  2. پایگاه داده نصب شده

نحوه راه اندازی 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 از آن استفاده کند.

Share this Post

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

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