1.3.4 دسترس پذیری بالا
امروزه سامانه ایمیل یکی از مهمترین سیستمهای یک سازمان میباشد. بنابراین ایجاد یک سامانه ایمیل با دسترسپذیری بالا بسیار بااهمیت است.
معماری منعطف zcp راهکارهای متفاوتی را برای ایجاد یک دسترسپذیری بالا را پیشنهاد میدهد. در ادامه برخی از این راهکارها را بررسی مینماییم.
بیشتر سازمانها دارای سرورهایی بصورت مجازی میباشند که منابع محدودی در آن مورد استفاده قرارگرفته است. بیشتر روشهای مجازی سازی مانند VMware Vsphere, Red Hat Enterprise Virtualization, OpenStack و Citrix Xen server دسترسپذیری بالا را بعنوان یکی از ویژگیهای استاندارد پیشنهاد میدهند.
ویژگیهای HA مربوط به مجازی سازی میتواند برای zcp نیز استفاده گردد. زمانیکه برای یک سخت افزار مشکلی رخ میدهد، نرم افزار مجازی سازی بصورت خودکار یک VM را روی یکی دیگر از سرورها راه اندازی میکند، مانند تصویر زیر:
شکل 34 HA (1)
تصویری زیر معماری Zarafa با دسترس پذیری بالا در صورت استفاده از فضای ذخیره سازی اشتراکی را نشان میدهد.
شکل 35 HA (2)
تصویر زیر معماری zarafa با دسترس پذیری بالا را در صورت استفاده از DRBD نشان میدهد.
شکل 36 HA (3)
در ادامه نصب و پیکربندی یک معماری HA را شرح میدهیم.
برای اینکار به سیستمهای زیر نیاز میباشد:
- دو سرور با هاردهای RAID 1 برای سیستم عامل و RAID 10 برای ذخیره دادهها
- دو کارت شبکه برای هرکدام از سرورها (ماشینهای مجازی)
بروی هر کدام از دو ماشین یک توزیع از لینوکس مثلا RHEL را نصب میکنیم. کارت شبکههای هر دو ماشین مجازی را بدین صورت پیکربندی میکنیم که، اولین کارت شبکه را به شبکه LAN با زیرشبکه 192.168.122.0/24 متصل میکنیم و کارت شبکه دوم هر دو ماشین را برای DRBD replication استفاده میکنیم.
جدول ۶ - HA
Servername |
VM1 |
VM2 |
eth0 |
192.168.122.25 |
192.168.122.26 |
eth1 |
10.0.0.25 |
10.0.0.26 |
با ویرایش فایل زیر hostname ماشینها را پیکربندی میکنیم.
/etc/sysconfig/network |
با ویرایش فایل زیر کارتهای شبکه VMها را پیکربندی میکنیم.
/etc/sysconfig/network-scripts/ifcfg-ethx |
خطوط زیر را به فایل hosts هرکدام از VM ها میافزاییم.
Vim /etc/hosts 192.168.122.25 VM1 192.168.122.26 VM2 |
پس از انجام پیکربندیها برای اعمال تغییرات سرویس network را ریست میکنیم.
service network restart |
با کمک دستوری ifconfig از صحیح بودن تغییرات اطمینان حاصل مینماییم.
[root@VM1 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 52:54:00:4C:30:83 inet addr:192.168.122.25 Bcast:192.168.122.255 Mask:255.255.255.0 inet6 addr: fe80::5054:ff:fe4c:3083/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:149 errors:0 dropped:0 overruns:0 frame:0 TX packets:65 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:12522 (12.2 KiB) TX bytes:8736 (8.5 KiB)
eth1 Link encap:Ethernet HWaddr 52:54:00:5F:6F:33 inet addr:10.0.0.25 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::5054:ff:fe5f:6f33/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:27 errors:0 dropped:0 overruns:0 frame:0 TX packets:29 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1242 (1.2 KiB) TX bytes:1530 (1.4 KiB) Interrupt:10 Base address:0x6000 |
بعد از پیکربندی شبکه سرویس ZCP را همانند آنچه در فصل پیکربندی گفته شد، نصب میکنیم، سرویسهای ZCP بصورت پیش فرض در زمان boot شدن ماشین start میشوند، در پیکربندی cluster میبایست سرویسها از حالت startup خارج شده تا Start شدن آنها توسط نرمافزار cluster انجام شود، دستورات زیر سرویسها را از حالت startup خارج میکند.
chkconfig mysqld off chkconfig zarafa-server off chkconfig zarafa-spooler off chkconfig zarafa-dagent off chkconfig zarafa-gateway off chkconfig zarafa-ical off chkconfig zarafa-licensed off chkconfig zarafa-monitor off |
با کمک دستور زیر نرمافزار Pacemaker cluster را از repo مربوط به Red Hat با دستور yum نصب میکنیم.
yum install pacemaker corosync |
نرم افزار DRBD بخشی از repoهای استاندارد Red Hat نمیباشد، به همین دلیل با کمک دستور زیر ابتدا rpmهای مربوطه را دانلود و نصب میکنیم.
rpm -Uhv drbd-8.3.8.1-30.el6.x86_64.rpm drbd-kmdl-2.6.32-71.18.1.el6.x86_64-8.3.8.1-30.el6.x86_64.rpm |
با کمک دستورات زیر startup سرویس Corosync را فعال و سرویس DRBD را غیرفعال میکنیم.
chkconfig drbd off chkconfig corosync on |
با کمک دستورات زیر سرویس Corosync را پیکربندی مینماییم:
cd /etc/corosync cp corosync.conf.example corosync.conf |
bindnetaddr: 10.0.0.0 |
Vim /etc/corosync/service.d/pcmk service } # Load the Pacemaker Cluster Resource Manager name: pacemaker ver: 0 } |
service corosync restart |
برای پیکربندی DRBD تغییرات زیر را روی فایل /etc/drbd.conf انجام میدهیم.
global { usage-count no; }
common { protocol C; syncer { rate 50M; } }
resource mysql { on bob { device /dev/drbd0; disk /dev/sdb1; address 10.0.0.25:7788; meta-disk internal; } on alice { device /dev/drbd0; disk /dev/sdb1; address 10.0.0.26:7788; meta-disk internal; } }
resource zarafa { on bob { device /dev/drbd1; disk /dev/sdb2; address 10.0.0.25:7799; meta-disk internal; } on alice { device /dev/drbd1; disk /dev/sdb2; address 10.0.0.26:7799; meta-disk internal; } } |
service drbd reload |
[root@VM1 etc]# drbdadm create-md mysql Writing meta data... initializing activity log NOT initialized bitmap New drbd meta data block successfully created. |
drbdadm up mysql |
drbdadm create-md zarafa Writing meta data... initializing activity log NOT initialized bitmap New drbd meta data block successfully created. |
drbdadm up zarafa |
لازم بذکر است که تمام تغییرات بالا میبایست روی هر دو VM صورت پذیرد.
با کمک دستور زیر همگام سازی DRBD آغاز میشود. این دستور در یکی از ماشینها با اجرا گردد.
[root@VM1 ~]# drbdadm -- --overwrite-data-of-peer primary all |
2.3.4 تیون کردن اجزای سیستم
زمانیکه یک لینوکس سرور را با zarafa نصب میکنیم، پیکربندی صحیح mysql برای دستیابی به بیشترین عملکرد سیستم این یک امر ضروری است. بیشتر مشکلات عملکرد سیستم بدلیل دسترسی به پایگاه داده میباشد، بنابراین تنظیم سیستم بگونه این که queryهای پایگاه داده با سرعت بیشتری اجرا شوند، در سرعت سیستم بسیار موثر است.
برای سیستمهای برزگ میبایست پارامترهای Cache مربوط به zarafa نیز بخوبی تنظیم گردند.
3.3.4 ملاحظات سخت افزاری
در این قسمت به تنظیمات مربوط به سخت افزاری میپردازیم که بر عملکرد سیستم تاثیر می گذارند.
۱. Memory usage
- تنظیم memory مصرفی یکی از بهترین راهها برای بهبود عملکرد سرور میباشد. برای نمونه در صورتی که RAM سرور بالا باشد، عملکرد سیستم افزایش مییابد.
- برای اطمینان از اینکه میزان RAM در دسترس به بهترین نحوه ممکن استفاده میشود، میتوان گفت که Zarafa بگونهای طراحی شده است فقط از مقدار RAM که بصورت فیزیکی در اختیارش قرار داده شد است استفاده میکند، و memory تخصیص داده شده با متصل شدن کاربران جدید اضافه نمیشود. لازم بذکر است که بخشی از RAM برای cache کردن فایلهای پیکربندی استفاده میشود.
۲. Hardware considerations
- سرورهای که در آنها zarafa اجرا می گردد، یکی از مشکلاتی که برای عملکرد آنها ممکن است پیش آید، مدت زمانی است که دادههای روی hard disk به client برسد، می باشد.این بدین معنی است که بطور کلی کارآیی I/O از کارآیی CPU مهتر میباشد.
۳. More Memory is More Speed
- استفاده از RAM بیشتر موجب cache کردن بهتر اطلاعات میباشد و در نتیجه موجب افزایش سرعت میگردد.
- Zarafa بگونهای طراحی شده است که برای استفاده در سامانههای بزرگ بتواند از RAM بیشتر استفاده کند و مشکل کاهش کارآیی برای آن پیش نیاید.
۴. RAID 1/10 is faster than RAID 5
- بطور کلی RAID 1 و RAID 10 در دسترسی به پایگاه داده از RAID 5 و RAID 6 سریعتر میباشند. بنابراین برای عدم کاهش کارآیی توصیه میگردد که از RAID 5 و RAID 6 استفاده نگردد.
۵. High rotation speed (RPMs) for better database performance
- سرعت گردش دیسکهای که برای نگهداری اطلاعات استفاده میگردند، دارای اهمیت میباشد. سرعت گردش دیسک روی seek times دیسک تاثیر میگذارد. اگرچه ساختار پایگاه دادههای zarafa بگونهای طراحی شدهاند که در دیسکهای سرعت پایین نیز بخوبی کار کنند، ولی در صورت استفاده از دیسکهای با سرعت بالا مانند 15K میتوان عملکرد سیستم را بهبود بخشید.
4.3.4 تنظیمات Memory Usage
اساسا بخش از تنظیمات وجود دارد که از memory سرور استفاده میکند:
- Zarafa’s cell cache
- MySQL’s buffer size
- MySQL’s query cache
میبایست در یک سرور که zarafa اجرا شده است میبایست Cache های بالا را بگونه ای تنظیم کرد که %80 از RAM آن سرور را اشغال کند، و %20 مابقی RAM باید برای پردازشهای سیستم آزاد باشند.
با یک حساب سرانگشتی میزان RAM هر بخش باید بصورت زیر تخصیص داده شود.
Zarafa caches:
- ``cache_cell_size``: around 25% of total RAM size
- ``cache_object_size``: about 100kb per user
- ``cache_indexedobject_size``: about 512kb per user
برای تنظیم میزان cache بالا باید فایل زیر را پیکربندی نماییم و سپس سرویس zarafa server را ریست کنیم:
/etc/zarafa/server.cfg |
MySQL settings:
- ``innodb_buffer_pool_size``: around 50% of total RAM size
- ``mysql_query_cache``: 32Mb
- ``innodb_log_file_size``: 25% of the innodb_buffer_pool_size
- ``innodb_log_buffer_size``: 32M
- ``innodb_file_per_table``
- ``max_allowed_packet``: 16M
- ``table_cache: 1000``
برای انجام تنظیمات بالا میبایست فایل زیر را پیکربندی نموده و سرویس mysql را ریست نماییم:
/etc/my.cnf Or /etc/mysql/my.cnf |
توصیه میگردد که تنظیمات mysql را قبل از آنکه سرویس zarafa server را استارت کنیم، انجام دهیم(قبل از آنکه سرویس zarafa به پایگاه داده متصل گردد و جداول آن ساخته شوند).
5.3.4 بک آپ گیری
سه روش برای backup گیری توصیه میگردد:
- Through the softdelete restore system
- Using the brick-level backup system
- With a full database backup
Softdelete restore
این روش میتواند توسط کاربران از طریق outlook استفاده گردد، این مورد بیشتر مواردی را پوشش میدهد که یک ایمیل بصورت ناگهانی پاک میگردد. ایمیلهایی که ممکن است توسط کاربران حذف گردند، در پوشه deleted items قرار میگیرند و این بدین معنی است که این ایمیلهای بصورت کامل حذف نشدهاند.
ایمیلهای حذف شده با توجه به مدت زمانیکه در فایل Server.cfg مشخص میگرد، در پوشه deleted item نگهداری میگردند.
در جدول زیر میزان احتمال برگرداندن ایمیلهای حذف شده، و شخص بازگردان ایمیل مشخص شده است:
جدول ۷ - backup
Restore request |
% of time spent |
Backup solution |
Performer |
Items < 30 days old |
80 % |
Softdelete system |
User and Administrator |
Items >= 30 days old |
10 % |
Bricklevel |
Administrator |
Items from a specific sender |
5 % |
Bricklevel |
Administrator |
Items over a specific time period |
3 % |
Bricklevel |
Administrator |
Disaster recovery |
2 % |
MySQL Dump |
Administrator |
Full database dump
تمام اطلاعاتی که در zarafa server ذخیره گردیدهاند در پایگاه داده مربوطه نیز ذخیره شدهاند. این بدین معنی است که برای برگرداندن اطلاعات کافیست که از پایگاه داده نسخه پشتیبان تهیه شده باشد. که برای تهیه این نسخه پشتیبان روشهای زیادی وجود دارد که در ادامه یک روش خوب شرح داده میشود، و بهتر است از روش زیر برای تهیه نسخه پشتیبان استفاده گردد.
محتوای کل پایگاه داده را میتوان از با استفاده از دستور mysqldump روی یک فایل ذخیره کرد. بهتر است موارد زیر به این دستور اضافه گردند:
--single-transaction با کمک این option یک single snapshot از پایگاه داده روی هارد گرفته میشود. و این اطمینان حاصل میگردد که در زمان تهیه نسخه پشتیبان هر دادهای به پایگاه داده اضافه گردد در نسخه پشتیبان قرار داده نمیشود. در واقع dumpای که گرفته میشود یک snapshot از پایگاه داده در زمانیکه dump آغاز میگردد، است .
این موضوع که هیچ tableای زمانیکه از پایگاه داده نسخه پشتیبان تهیه میکنیم، lock نباشد، دارای اهمیت میباشد. و این بدین معنی است که--opt و --lock-tables بهمراه دستور dump استفاده گردند.
mysqldump -p --single-transaction --routines <database> > <dumpfile> |
زمانیکه از ذخیرهسازی Attachmentها در بیرون از دیتابیس استفاده میگردد، میبایست از فایلهای Attachmentها نیز نسخه پشتیبان تهیه کرد، روشهای زیر برای این اقدام وجود دارد:
- Rsync
کپی کردن تمام فایلها در یک سرور پشتیبان
پیوست ۱: اسکریپتهای لازم برای نصب و راه اندازی سرویس ایمیل
حجم: 534 کیلوبایت
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.