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 کیلوبایت