نحوه ايجاد استخر (pool) اضافي براي ذخيره سازي با استفاده از GlusterFS در اوبونتو 20.04
هنگام ذخيره هرگونه اطلاعات مهم ، داشتن يك نقطه خرابي بسيار خطرناك است. در حالي كه بسياري از پايگاه داده ها و نرم افزارهاي ديگر به شما امكان مي دهند داده ها را در زمينه يك برنامه واحد پخش كنيد ، ساير سيستم ها مي توانند در سطح سيستم فايلها كار كنند تا اطمينان حاصل شود كه داده ها هر زمان كه در ديسك نوشته شده باشند ، به جاي ديگري كپي مي شوند.
GlusterFS يك سيستم فايل ذخيره سازي متصل به شبكه است كه به شما امكان مي دهد منابع ذخيره سازي چندين ماشين را جمع كنيد. به نوبه خود ، اين ويژگي به شما اجازه مي دهد تا دستگاه هاي ذخيره سازي متعددي را كه در بين بسياري از رايانه ها توزيع مي شود ، به عنوان يك واحد تكي قدرتمند استفاده كنيد. GlusterFS همچنين به شما امكان مي دهد انواع مختلفي از تنظيمات ذخيره سازي را ايجاد كنيد ، بسياري از آنها از نظر عملكردي مشابه سطوح RAID هستند. به عنوان مثال ، مي توانيد داده ها را در گره هاي مختلف در خوشه نواري كنيد ، يا مي توانيد افزونگي را براي دسترسي بهتر به اطلاعات پياده سازي كنيد.
اهداف
در اين راهنما ، يك مجموعه ذخيره سازي خوشه اي اضافي ايجاد خواهيد كرد ، كه به يك سيستم فايل توزيع شده نيز شناخته مي شود يا همانطور كه در اسناد GlusterFS به آن اشاره شده است ، يك استخر ذخيره سازي قابل اعتماد ايجاد ميكنيد. اين استخر عملكردي شبيه به پيكربندي RAID آينه اي بر روي شبكه فراهم مي كند: هر سرور مجازي مستقل شامل كپي داده هاي خود است و به برنامه هاي شما امكان دسترسي به هر كپي را مي دهد و از اين طريق به توزيع بار قابل خواندن شما كمك مي كند.
اين خوشه GundterFS اضافي از دو سرور مجازي Ubuntu 20.04 تشكيل شده است. مشابه سرور مجازي NAS با RAID آينه اي عمل مي كند. سپس به يك سرور سوم Ubuntu 20.04 پيكربندي شده براي عملكرد به عنوان يك كلاينت GlusterFS دسترسي پيدا خواهيد كرد.
نكته اي در مورد اجراي ايمن GlusterFS
وقتي داده ها را به يك واليوم GlusterFS اضافه مي كنيد ، آن داده ها با هر دستگاه موجود در استخر ذخيره سازي كه در آن واليوم هاست است همگام سازي مي شود. اين ترافيك بين گره ها به طور پيش فرض رمزگذاري نشده است ، به اين معني كه خطري وجود دارد كه بتواند توسط سو استفاده گران رديابي شود.
به همين دليل ، اگر مي خواهيد از GlusterFS در توليد استفاده كنيد ، توصيه مي شود كه آن را در يك شبكه جداگانه اجرا كنيد. به عنوان مثال ، مي توانيد آن را به گونه اي تنظيم كنيد تا در يك Virtual Private Cloud (VPC) يا با يك VPN بين هر يك از گره ها اجرا شود.
پيش نيازها
براي دنبال كردن اين آموزش ، به سه سرور مجازي اوبونتو 20.04 در حال اجرا نياز داريد. هر سرور مجازي بايد داراي يك كاربر غير ريشه با امتيازات ادمين و فايروال تنظيم شده با UFW باشد. براي انجام اين كار ، راهنماي تنظيم اوليه سرور مجازي ما براي اوبونتو 20.04 را دنبال كنيد.
توجه: همانطور كه در بخش اهداف گفته شد ، اين آموزش پيكربندي دو سرور مجازي Ubuntu را انجام مي دهد تا به عنوان سرور مجازي در استخر ذخيره سازي شما عمل كنند و مابقي نيز به عنوان كلاينت باشند كه براي دسترسي به اين گره ها استفاده خواهيد كرد.
براي شفاف سازي ، اين آموزش با نام هاي هاست زير به اين دستگاه ها اشاره مي كند:
نام هاست نقش آن در استخر
gluster0 سرور مجازي
gluster1 سرور مجازي
gluster2 كلاينت
دستوراتي كه بايد بر روي gluster0 يا gluster1 اجرا شوند ، به ترتيب رنگهاي آبي و قرمز دارند:
Sammy@gluster0:~$
Sammy@gluster1:~$
دستوراتي كه فقط بايد روي كلاينت اجرا شوند (gluster2) رنگ سبز دارند:
Sammy@gluster2:~$
دستوراتي كه مي توانند يا بايد روي بيش از يك دستگاه اجرا شوند ، رنگ خاكستري دارند:
$
مرحله 1 – پيكربندي رزولوشن DNS در هر دستگاه
تنظيم نوعي رزولوشن نام هاست بين هر رايانه مي تواند در مديريت استخر ذخيره سازي Gluster شما كمك كننده باشد. به اين ترتيب ، هر وقت در اين آموزش مجبور به مراجعه به يكي از دستگاه هاي خود در يك دستور gluster هستيد ، مي توانيد به جاي آدرس IP مربوطه ، آنها را با يك نام دامنه يا حتي يك نام مستعار به خاطر بسپاريد.
اگر نام دامنه اضافي نداريد ، يا اگر مي خواهيد چيزي را سريع تنظيم كنيد ، مي توانيد به جاي آن فايل / etc / hosts را در هر رايانه ويرايش كنيد. اين يك فايل ويژه در دستگاه هاي لينوكس است كه در آن مي توانيد سيستم را پيكربندي كنيد تا نامهاي هاست موجود در فايل را در آدرسهاي IP ثابت مشخص كنيد.
توجه: اگر مي خواهيد سرور مجازي هاي خود را براي تأييد هويت با دامنه اي كه در اختيار داريد پيكربندي كنيد ، ابتدا لازم است يك نام دامنه از يك ثبت دامنه – مانند Namecheap يا Enom – دريافت كنيد و ركوردهاي DNS مناسب را پيكربندي كنيد.
پس از پيكربندي يك ركورد براي هر سرور مجازي ، مي توانيد به مرحله دوم برويد. از آنجا كه اين راهنما را دنبال مي كنيد ، مطمئن شويد كه glusterN.example.com و glusterN را با نام دامنه اي جايگزين مي كنيد كه به سرور مجازي مربوطه در دستور نمونه ارجاع مي شود.
با استفاده از ويرايشگر متن مورد نظر خود ، اين فايل را با امتيازات اصلي در هر يك از دستگاه هاي خود باز كنيد. در اينجا ، ما از nano استفاده خواهيم كرد:
$ sudo nano /etc/hosts
به طور پيش فرض ، با حذف كامنت ها فايل چيزي شبيه به اين خواهد بود:
/etc/hosts
127.0.1.1 hostname hostname
127.0.0.1 localhost
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
در يكي از سرور مجازي هاي اوبونتو ، آدرس IP سرور مجازي را به همراه هر نامي كه مايل به استفاده براي ارجاع آنها در دستورات زير تعريف هاست محلي هستيد اضافه كنيد.
در مثال زير ، هر سرور مجازي با يك نام هاست طولاني كه با glusterN.example.com مطابقت دارد و يك نام كوتاه كه به صورت glusterN است ، ارائه مي شود. مي توانيد قسمتهاي glusterN.example.com و glusterN هر خط را با هر اسمي – يا نامهاي جدا شده با اسپيس – كه مي خواهيد براي دسترسي به هر سرور مجازي از آنها استفاده كنيد ، تغيير دهيد. البته توجه داشته باشيد كه در كل اين آموزش از اين مثالها استفاده خواهد شد:
توجه: اگر سرور مجازي هاي شما بخشي از استخر زيرساختي Virtual Private Cloud هستند ، بايد از آدرس IP خصوصي سرور مجازي ها در فايل / etc / host ها به جاي IP هاي عمومي آنها استفاده كنيد.
/etc/hosts
. . .
127.0.0.1 localhost
first_ip_address gluster0.example.com gluster0
second_ip_address gluster1.example.com gluster1
third_ip_address gluster2.example.com gluster2
. . .
پس از پايان افزودن اين خطوط جديد به فايل / etc / host هاي يك دستگاه ، آنها را در فايل هاي / etc / hosts در دستگاه هاي ديگر خود كپي كرده و اضافه كنيد. هر فايل /etc/hosts بايد همان خطوط را داشته باشد ، آدرسهاي IP سرور مجازي هاي شما را به نامهايي كه انتخاب كرده ايد پيوند دهد.
پس از اتمام ، هر فايل را ذخيره كنيد و ببنديد. اگر از nano استفاده كرده ايد ، اين كار را با فشار دادن CTRL + X ، Y ، و سپس ENTER انجام دهيد.
اكنون كه تنظيمات نام هاست را بين هر يك از سرور مجازي هاي خود پيكربندي كرده ايد ، سپس با تنظيم استخر و واليوم ، دستورات را ساده تر مي كنيد. سپس ، گام ديگري را برميداريد كه بايد روي هر يك از سرور مجازي هاي شما انجام شود. يعني ، درواقع بايگاني بسته رسمي شخصي پروژه (PPA) Gluster را به هر سه سرور مجازي Ubuntu خود اضافه كنيد تا اطمينان حاصل شود كه مي توانيد جديدترين نسخه GlusterFS را نصب كنيد.
مرحله 2 – تنظيم منابع نرم افزاري روي هر دستگاه
اگرچه مخازن پيش فرض Ubuntu 20.04 APT شامل بسته هاي GlusterFS هستند ، اما در زمان نوشتن اين مقاله، جديدترين نسخه ها نيستند. يكي از راه هاي نصب آخرين نسخه پايدار GlusterFS (نسخه 7.6 در زمان اين نوشتار) اضافه كردن PPA رسمي پروژه Gluster به هر سه سرور مجازي Ubuntu شما است.
با اجراي دستور زير روي هر سرور مجازي ، PPA را براي بسته هاي GlusterFS اضافه كنيد:
$ sudo add-apt-repository ppa:gluster/glusterfs-7
هنگامي كه از شما خواسته شد تأييد كنيد كه در واقع مي خواهيد PPA را اضافه كنيد ، ENTER را فشار دهيد.
پس از افزودن PPA ، شاخص بسته محلي هر سرور مجازي را ريفرشكنيد. اين كار باعث مي شود هر سرور مجازي از بسته هاي جديد موجود آگاه شود:
$ sudo apt update
پس از افزودن PPA رسمي پروژه Gluster به هر سرور مجازي و به روزرساني شاخص بسته محلي ، آماده نصب بسته هاي لازم GlusterFS هستيد. اما ، از آنجا كه دو تا از سه ماشين شما به عنوان سرور مجازي هاي Gluster و ديگري به عنوان كلاينت عمل مي كنند ، دو روش نصب و پيكربندي مجزا وجود دارد. ابتدا اجزاي سرور مجازي را نصب و تنظيم مي كنيد.
مرحله 3 – نصب مؤلفه هاي سرور مجازي و ايجاد استخر ذخيره سازي مطمئن
استخر ذخيره سازي هر مقدار ظرفيت ذخيره از بيش از يك منبع ذخيره سازي است. در اين مرحله ، دو سرور مجازي خود را – gluster0 و gluster1 – به عنوان اجزاي خوشه پيكربندي مي كنيد.
در هر دو gluster0 و gluster1 ، بسته بندي سرور مجازي GlusterFS را با تايپ كردن دستور زير نصب كنيد:
$ sudo apt install glusterfs-server
هنگامي كه از شما خواسته شد ، Y و سپس ENTER را فشار دهيد تا نصب را تأييد كنيد.
فرايند نصب به طور خودكار GlusterFS را پيكربندي مي كند تا به عنوان يك سرويس سيستمي اجرا شود. با اين حال ، اين سرويس به طور خودكار شروع نمي شود و با بوت شدن فعال نميشود.
براي شروع glusterd ، سرويس GlusterFS ، دستور شروع systemctl زير را در gluster0 و gluster1 اجرا كنيد:
$ sudo systemctl start glusterd.service
سپس دستور زير را روي هر دو سرور مجازي اجرا كنيد. اين كار باعث مي شود تا هر زمان كه سرور مجازي بوت شود ، سرويس شروع شود:
$ sudo systemctl enable glusterd.service
پس از آن ، مي توانيد وضعيت سرويس را در يكي يا هر دو سرور مجازي بررسي كنيد:
$ sudo systemctl status glusterd.service
اگر سرويس به روز و در حال اجرا باشد ، خروجي مانند اين را دريافت خواهيد كرد:
Output
● glusterd.service – GlusterFS, a clustered file-system server
Loaded: loaded (/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-02 21:32:21 UTC; 32s ago
Docs: man:glusterd(8)
Main PID: 14742 (glusterd)
Tasks: 9 (limit: 2362)
CGroup: /system.slice/glusterd.service
└─14742 /usr/sbin/glusterd -p /var/run/glusterd.pid –log-level INFO
با فرض اينكه از راهنماي پيش نياز ستاپ اوليه سرور مجازي پيروي كرده ايد ، فايروال را با UFW بر روي هر يك از دستگاه هاي خود تنظيم كرده ايد. به همين دليل ، قبل از برقراري ارتباطات بين آنها و ايجاد استخر ذخيره سازي ، بايد فايروال را در هر گره باز كنيد.
Daemon Gluster از پورت 24007 استفاده مي كند ، بنابراين بايد به هر گره اجازه دهيد از طريق فايروال هر گره ديگر در استخر ذخيره سازي خود به آن پورت دسترسي پيدا كند. براي انجام اين كار ، دستور زير را در gluster0 اجرا كنيد. به ياد داشته باشيد gluster1_ip_address را به آدرس IP gluster1 تغيير دهيد:
Sammy@gluster0:~$ sudo ufw allow from gluster1_ip_address to any port 24007
و دستور زير را روي gluster1 اجرا كنيد. دوباره مطمئن شويد gluster0_ip_address را به آدرس IP gluster0 تغيير دهيد:
Sammy@gluster1:~$ sudo ufw allow from gluster0_ip_address to any port 24007
همچنين بايد به دستگاه كلاينت (gluster2) اجازه دسترسي به اين پورت را بدهيد. در غير اين صورت ، بعد از تلاش براي تنظيم واليوم ، بعداً به مشكلاتي دچار خواهيد شد. دستور زير را بر روي هر دو سرور مجازي gluster0 و gluster1 اجرا كنيد تا اين پورت در دستگاه كلاينت شما باز شود:
سپس ، براي اطمينان از اينكه هيچ ماشين ديگري قادر به دسترسي به پورت Gluster در هر يك از سرور مجازي ها نيست ، قانون deny زير را نيز به gluster0 و gluster1 اضافه كنيد:
$ sudo ufw deny 24007
اكنون آماده برقراري ارتباط بين gluster0 و gluster1 هستيد. براي انجام اين كار ، بايد دستورالعمل gler peer probe را در يكي از گره هاي خود اجرا كنيد. فرقي نمي كند از كدام گره استفاده كنيد ، اما مثال زير نشان مي دهد كه فرمان در gluster0 اجرا مي شود:
Sammy@gluster0:~$ sudo gluster peer probe gluster1
در اصل ، اين دستور به gluster0 مي گويد كه به gluster1 اعتماد كند و آن را به عنوان بخشي از استخر ذخيره خود ثبت كند. اگر كاوشگر موفقيت آميز باشد ، خروجي زير را برمي گرداند:
Output
peer probe: success
مي توانيد در هر زمان با اجراي دستور gluster peer status روي هر كدام از موارد ، بررسي كنيد كه گره ها در حال برقراري ارتباط هستند. در اين مثال، روي gluster1 در حال اجرا است:
Sammy@gluster1:~$ sudo gluster peer status
اگر اين دستور را از gluster1 اجرا كنيد ، خروجي مانند اين را نشان مي دهد:
Output
Number of Peers: 1
Hostname: gluster0.example.com
Uuid: a3fae496-c4eb-4b20-9ed2-7840230407be
State: Peer in Cluster (Connected)
در اين مرحله ، دو سرور مجازي شما در حال برقراري ارتباط و آماده براي ايجاد حجم ذخيره با يكديگر هستند.
مرحله 4 – ايجاد يك حجم ذخيره سازي
به ياد بياوريد كه هدف اصلي اين آموزش ايجاد استخر اضافي ذخيره سازي است. براي اين منظور شما مي توانيد يك واليوم با عملكرد كپي گيري تنظيم كنيد ، كه به شما امكان مي دهد چندين نسخه از داده هاي خود را نگه داريد و از بروز مشكل در خوشه خود جلوگيري كنيد.
براي ايجاد يك واليوم ، مي توانيد از دستور gluster volume createبا اين تركيب كلي استفاده كنيد:
sudo gluster volume create volume_name replica number_of_servers domain1.com:/path/to/data/directory domain2.com:/path/to/data/directory force
در اينجا معني آرگومان ها و گزينه هاي فرمان gluster volume create آورده شده است:
volume_name: اين نامي است كه شما مي توانيد پس از ايجاد ، به آن واليوم بدهيد. دستور مثال زير يك واليوم با نام Volum1 ايجاد مي كند.
replica number_of_servers: به دنبال نام واليوم ، مي توانيد نوع واليوم را تعيين كنيد. به ياد بياوريد كه هدف از اين آموزش ايجاد استخر اضافي ذخيره سازي است ، بنابراين ما از نوع واليوم كپي گيري استفاده خواهيم كرد. نياز به يك آرگومان دارد كه نشان مي دهد داده هاي واليوم روي چند سرور مجازي كپي ميشود (در مورد اين آموزش 2 سرور مجازي).
domain1.com:/… و domain2.com:/…: ماشينها و محل دايركتوري آجرها را تعريف مي كنند – اصطلاح GlusterFS براي واحد اصلي ذخيره سازي آن ، كه شامل هر دايركتوري در مورد هر دستگاهي است كه به عنوان يك قسمت يا يك نسخه از يك واليوم بزرگتر – كه واليوم 1 را تشكيل مي دهد، ارائه ميشود. مثال زير دايركتوري به نام gluster-store را در ديركتوري اصلي هر دو سرور مجازي ايجاد مي كند.
Force: اين گزينه ، هشدارها يا گزينه هايي كه ممكن است ظاهر شوند و ايجاد واليوم را متوقف كنند، رد مي كند.
طبق كنوانسيون هايي كه در ابتدا در اين آموزش ايجاد شده است ، مي توانيد اين دستور را براي ايجاد يك واليوم اجرا كنيد. توجه داشته باشيد كه مي توانيد آن را از طريق gluster0 يا gluster1 اجرا كنيد:
$ sudo gluster volume create volume1 replica 2 gluster0.example.com:/gluster-storage gluster1.example.com:/gluster-storage force
اگر واليوم با موفقيت ايجاد شد ، خروجي زير را دريافت خواهيد كرد:
Output
volume create: volume1: success: please start the volume to access data
در اين مرحله ، واليوم شما ايجاد شده است ، اما هنوز فعال نيست. با اجراي دستور زير ، مجدداً از هر يك از سرور مجازي هاي Gluster مي توانيد واليوم را شروع كرده و آن را براي استفاده در دسترس قرار دهيد:
$ sudo gluster volume start volume1
اگر واليوم به درستي شروع شده باشد ، اين خروجي را دريافت خواهيد كرد:
Output
volume start: volume1: success
سپس ، بررسي كنيد كه واليوم آنلاين باشد. دستور زير را از هر يك از گره هاي خود اجرا كنيد:
$ sudo gluster volume status
خروجي مشابه اين را برمي گرداند:
Output
Status of volume: volume1
Gluster process TCP Port RDMA Port Online Pid
——————————————————————————
Brick gluster0.example.com:/gluster-storage 49152 0 Y 18801
Brick gluster1.example.com:/gluster-storage 49152 0 Y 19028
Self-heal Daemon on localhost N/A N/A Y 19049
Self-heal Daemon on gluster0.example.com N/A N/A Y 18822
Task Status of Volume volume1
——————————————————————————
There are no active volume tasks
براساس اين خروجي ، brickها در هر دو سرور مجازي بصورت آنلاين هستند.
به عنوان آخرين مرحله براي پيكربندي واليوم خود ، بايد فايروال را در هر دو سرور مجازي باز كنيد تا دستگاه كلاينت شما بتواند به آن متصل شود و واليوم آن را نصب كند. با توجه به خروجي نمونه فرمان قبلي ، volume1 در پورت 49152 در هر دو دستگاه در حال اجرا است. اين پورت پيش فرض GlusterFS براي واليوم اوليه آن است و در واليوم بعدي كه ايجاد مي كنيد از پورت 49153 ، سپس 49154 و غيره استفاده خواهيد كرد.
دستور زير را بر روي هر دو gluster0 و gluster1 اجرا كنيد تا gluster2 از طريق فايروال مربوط به هر يك به اين پورت دسترسي داشته باشد:
$ sudo ufw allow from gluster2_ip_address to any port 49152
سپس ، براي يك لايه امنيتي بيشتر ، يك قانون deny ديگر براي پورت واليوم در هر دو gluster0 و gluster1 اضافه كنيد. اين كار تضمين مي كند كه هيچ دستگاهي به غير از كلاينت شما نمي تواند به واليوم هر سرور مجازي دسترسي داشته باشد:
$ sudo ufw deny 49152
اكنون كه واليوم شما به روز و در حال اجراست ، مي توانيد دستگاه كلاينت خود را تنظيم كرده و از راه دور استفاده از آن را شروع كنيد.
مرحله 5 – نصب و پيكربندي مولفه هاي كلاينت
اكنون واليوم شما پيكربندي شده و براي استفاده توسط دستگاه كلاينت شما در دسترس است. قبل از شروع كار ، بايد بسته glusterfs-client را از PPA تنظيم شده در مرحله 1 در دستگاه كلاينت خود نصب كنيد. متعلقات اين بسته شامل برخي از كتابخانه هاي مشترك و ماژول هاي مترجم GlusterFS و ابزارهاي FUSE لازم براي كار كردن آن است.
دستور زير را در gluster2 اجرا كنيد:
Sammy@gluster2:~$ sudo apt install glusterfs-client
در ادامه واليوم ذخيره از راه دور خود را روي رايانه كلاينت خود سوار مي كنيد. قبل از اينكه بتوانيد اين كار را انجام دهيد ، بايد يك نقطه اتصال ايجاد كنيد. به طور معمول ، اين نقطه در ديركتوري / mnt است ، اما در هر مكان راحت مي توان از آن استفاده كرد.
براي سادگي ، دايركتوري به نام /storage-poolرا بر روي دستگاه كلاينت خود ايجاد كنيد تا به عنوان نقطه سوارسازي ارائه شود. اين نام ديركتوري با يك اسلش (/) كه آن را در ديركتوري اصلي قرار مي دهد ، شروع مي شود ، بنابراين شما بايد آن را با امتيازات sudo ايجاد كنيد:
Sammy@gluster2:~$ sudo mkdir /storage-pool
اكنون مي توانيد واليوم از راه دور را نصب كنيد. اما قبل از آن ، نگاهي به نحو دستور mount مورد نظر براي انجام اين كار بيندازيد:
sudo mount -t glusterfs domain1.com:volume_name /path/to/mount/point
mount ابزاري است كه در بسياري از سيستم عاملهاي يونيكس مانند يافت مي شود. براي نصب سيستم فايل ها – هر چيزي از دستگاههاي ذخيره سازي خارجي ، مانند كارتهاي SD يا USB ، براي ذخيره سازي متصل به شبكه ، مانند اين آموزش – تا دايركتوري هاي موجود در سيستم فايل هاي موجود دستگاه استفاده مي شود. تركيب دستور mount كه از آن استفاده خواهيد كرد شامل گزينه -t است كه به سه آرگومان نياز دارد: نوع سيستم فايل نصب شده ، دستگاهي كه مي توان سيستم فايل براي سوار شدن روي آن را پيدا كرد و دايركتوري روي كلاينت كه در آن واليوم را نصب خواهيد كرد.
توجه كنيد كه در اين مثال ، آرگومان دستگاه به يك نام هاست اشاره مي كند كه به دنبال آن يك علامت كولون و سپس نام واليوم اضافه مي شود. GlusterFS ديركتوري هاي ذخيره سازي واقعي را در هر هاست ابستركت ميكند، به اين معني كه اين دستور به دنبال نصب ديركتوري /gluster-storage نيست ، بلكه به جاي آن volume1.
همچنين توجه داشته باشيد كه فقط بايد يك عضو از خوشه ذخيره را مشخص كنيد. اين مي تواند هر دو گره باشد ، زيرا سرويس GlusterFS با آنها به عنوان يك دستگاه رفتار مي كند.
دستور زير را روي دستگاه كلاينت خود (gluster2) اجرا كنيد تا واليوم را در ديركتوري /storage-pool ايجاد كنيد:
Sammy@gluster2:~$ sudo mount -t glusterfs gluster0.example.com:/volume1 /storage-pool
پس از آن ، دستور df را اجرا كنيد. كه مقدار فضاي موجود در ديسك را براي سيستم فايلي هايي كه كاربر از آن استفاده مي كند ، نشان مي دهد:
Sammy@gluster2:~$ df
اين دستور نشان مي دهد كه واليوم GlusterFS در محل صحيح نصب شده است:
Output
Filesystem 1K-blocks Used Available Use% Mounted on
. . .
gluster0.example.com:/volume1 50633164 1938032 48695132 4% /storage-pool
اكنون مي توانيد آزمايش كنيد كه هر داده اي كه براي كلاينت ارسال مي كنيد همانطور كه انتظار مي رود در گره هاي سرور مجازي شما كپي شود.
مرحله 6 – تست ويژگي هاي افزونگي (Redundancy)
اكنون كه كلاينت خود را براي استفاده از استخر و واليوم خود تنظيم كرده ايد ، مي توانيد عملكرد آن را آزمايش كنيد.
در دستگاه كلاينت (gluster2) خود ، به نقطه سوار سازي در مرحله قبل برويد:
Sammy@gluster2:~$ cd /storage-pool
سپس چند فايل آزمايشي ايجاد كنيد. دستور زير ده فايل خالي جداگانه در استخر شما ايجاد مي كند:
Sammy@gluster2:~$ sudo touch file_{0..9}.test
اگر دايركتوريهاي ذخيره سازي را كه قبلاً در مورد هر هاست ذخيره سازي تعريف كرده ايد ، بررسي كنيد ، متوجه مي شويد كه همه اين فايل ها در هر سيستم موجود هستند.
در gluster0:
Sammy@gluster0:~$ ls /gluster-storage
Output
file_0.test file_2.test file_4.test file_6.test file_8.test
file_1.test file_3.test file_5.test file_7.test file_9.test
به همين ترتيب ، در gluster1:
Sammy@gluster1:~$ ls /gluster-storage
Output
file_0.test file_2.test file_4.test file_6.test file_8.test
file_1.test file_3.test file_5.test file_7.test file_9.test
همانطور كه اين خروجي ها نشان مي دهد ، فايل هاي آزمايشي كه به كلاينت اضافه كرديد نيز براي هر دو گره شما نوشته شده است.
اگر تا به حال نقطه اي وجود داشته باشد كه يكي از گره هاي موجود در خوشه ذخيره شما تنزل يابد ، در صورت ايجاد تغييراتي در سيستم فايل ، مي تواند از همگام سازي با استخر ذخيره خارج شود. انجام يك عمل خوانش در نقطه نصب كلاينت پس از بازگشت گره به صورت آنلاين ، به گره هشدار مي دهد تا فايل هاي از دست رفته را دريافت كنيد:
Sammy@gluster2:~$ ls /storage-pool
اكنون كه تأييد كرده ايد كه واليوم ذخيره شما به درستي نصب شده است و مي تواند داده ها را در هر دو دستگاه در خوشه تكرار كند ، مي توانيد دسترسي به استخر ذخيره سازي را غيرفعال كنيد.
مرحله 7 – محدود كردن ويژگي هاي افزونگي
در اين مرحله ، هر رايانه اي مي تواند بدون هيچ محدوديتي به واليوم ذخيره شما وصل شود. شما مي توانيد با تنظيم گزينه auth.allow ، كه آدرس هاي IP هر كلاينت را كه بايد به واليوم دسترسي داشته باشد تعريف ميكند، اين مشخصه را تغيير دهيد.
اگر از پيكربندي /etc/hostsاستفاده مي كنيد ، نامهايي كه براي هر سرور مجازي تعيين كرده ايد به طور صحيح مسيريابي نمي شوند. به جاي آن بايد از يك آدرس IP ثابت استفاده كنيد. از طرف ديگر ، اگر از ركوردهاي DNS استفاده مي كنيد ، نام دامنه اي كه پيكربندي كرده ايد در اينجا كار خواهد كرد.
روي هر يك از گره هاي ذخيره سازي خود (gluster0 يا gluster1) ، دستور زير را اجرا كنيد:
$ sudo gluster volume set volume1 auth.allow gluster2_ip_address
اگر فرمان با موفقيت انجام شود ، اين خروجي را برمي گرداند:
Output
volume set: success
اگر در هر نقطه اي نياز به حذف محدوديت داريد ، مي توانيد اين دستور را تايپ كنيد:
$ sudo gluster volume set volume1 auth.allow *
با اين كار مجدداً اتصالات از هر دستگاه امكان پذير مي شود. اين كار ايمن نيست ، اما مي تواند براي مشكلات اشكال زدايي مفيد باشد.
اگر چندين كلاينت داريد ، مي توانيد آدرس IP يا نام دامنه آنها را همزمان (بسته به اينكه از / etc / host يا رزولوشن نام هاست DNS استفاده كنيد) مشخص كنيد ، و با كاما از هم جدا كنيد:
$ sudo gluster volume set volume1 auth.allow gluster_client1_ip,gluster_client2_ip
استخر ذخيره سازي شما اكنون پيكربندي شده ، ايمن و آماده استفاده است. در مرحله بعد چند دستور را ياد خواهيد گرفت كه به شما كمك مي كنند اطلاعاتي درباره وضعيت استخر ذخيره خود بدست آوريد.
مرحله 8 – دريافت اطلاعات در مورد استخر ذخيره سازي خود با دستورات GlusterFS
هنگامي كه شروع به تغيير برخي از تنظيمات ذخيره سازي GlusterFS مي كنيد ، ممكن است در مورد گزينه هايي كه در دسترس داريد ، اينكه كدام واليوم زنده است و كدام گره ها با هر واليوم مرتبط هستند ، دچار سردرگمي شويد.
دستورات مختلفي وجود دارد كه در گره هاي شما براي بازيابي اين داده ها و تعامل با استخر شما وجود دارد.
اگر مي خواهيد اطلاعات مربوط به هر يك از واليوم هاي خود را داشته باشيد ، فرمان gluster volume info را اجرا كنيد:
$ sudo gluster volume info
Output
Volume Name: volume1
Type: Replicate
Volume ID: a1e03075-a223-43ab-a0f6-612585940b0c
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gluster0.example.com:/gluster-storage
Brick2: gluster1.example.com:/gluster-storage
Options Reconfigured:
auth.allow: gluster2_ip_address
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
performance.client-io-threads: off
به طور مشابه ، براي به دست آوردن اطلاعات در مورد هر همتايي كه اين گره به آن متصل است ، مي توانيد تايپ كنيد:
Sammy@gluster1:~$ sudo gluster peer status
Number of Peers: 1
Hostname: gluster0.example.com
Uuid: cb00a2fc-2384-41ac-b2a8-e7a1793bb5a9
State: Peer in Cluster (Connected)
اگر مي خواهيد اطلاعات دقيقي در مورد عملكرد هر گره داشته باشيد ، مي توانيد با تايپ كردن دستور زير يك واليوم را تنظيم كنيد:
$ sudo gluster volume profile volume_name start
پس از اتمام اين دستور ، مي توانيد اطلاعاتي را كه جمع آوري شده است با تايپ دستور زير بدست آوريد:
$ sudo gluster volume profile volume_name info
Output
Brick: gluster0.example.com:/gluster-storage
——————————————–
Cumulative Stats:
%-latency Avg-latency Min-Latency Max-Latency No. of calls Fop
——— ———– ———– ———– ———— —-
0.00 0.00 us 0.00 us 0.00 us 30 FORGET
0.00 0.00 us 0.00 us 0.00 us 36 RELEASE
0.00 0.00 us 0.00 us 0.00 us 38 RELEASEDIR
Duration: 5445 seconds
Data Read: 0 bytes
Data Written: 0 bytes
Interval 0 Stats:
%-latency Avg-latency Min-Latency Max-Latency No. of calls Fop
——— ———– ———– ———– ———— —-
0.00 0.00 us 0.00 us 0.00 us 30 FORGET
0.00 0.00 us 0.00 us 0.00 us 36 RELEASE
0.00 0.00 us 0.00 us 0.00 us 38 RELEASEDIR
Duration: 5445 seconds
Data Read: 0 bytes
Data Written: 0 bytes
. . .
همانطور كه قبلاً نشان داده شده است ، براي ليستي از كليه مؤلفه هاي مرتبط با GlusterFS كه در هريك از گره هاي شما اجرا شده است ، دستور gluster volume status را اجرا كنيد:
$ sudo gluster volume status
Output
Status of volume: volume1
Gluster process TCP Port RDMA Port Online Pid
——————————————————————————
Brick gluster0.example.com:/gluster-storage 49152 0 Y 19003
Brick gluster1.example.com:/gluster-storage 49152 0 Y 19040
Self-heal Daemon on localhost N/A N/A Y 19061
Self-heal Daemon on gluster0.example.com N/A N/A Y 19836
Task Status of Volume volume1
——————————————————————————
There are no active volume tasks
اگر مي خواهيد واليوم ذخيره سازي GlusterFS خود را مديريت كنيد ، ممكن است ايده خوبي باشد كه به كنسول GlusterFS وارد شويد. اين امر به شما امكان مي دهد قبل از همه چيز با محيط GlusterFS خود ارتباط برقرار كنيد:
$ sudo gluster
اين امر به شما اعلاني را نشان مي دهد كه مي توانيد دستورات خود را تايپ كنيد. help اعلان خوبي براي جهت گيري ميباشد:
Gluster> help
Output
peer help – display help for peer commands
volume help – display help for volume commands
volume bitrot help – display help for volume bitrot commands
volume quota help – display help for volume quota commands
snapshot help – display help for snapshot commands
global help – list global commands
پس از اتمام ، براي خروج از كنسول Gluster ، exit را اجرا كنيد:
Gluster> exit
با اين كار ، آماده هستيد تا GlusterFS را با برنامه بعدي خود ادغام كنيد.
نتيجه
با تكميل اين آموزش ، يك سيستم ذخيره سازي اضافي داريد كه به شما امكان مي دهد همزمان روي دو سرور مجازي جداگانه بنويسيد. اين ويژگي مي تواند براي تعدادي از برنامه ها مفيد باشد و مي تواند اطمينان حاصل كند كه داده هاي شما حتي در صورت تنزل يك سرور مجازي در دسترس باشند
برچسب: ،