microsoft

نحوه LoadBalance کردن IP ها برای ایمیل های ارسالی توسط Exchange

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 
در این آموزش به شما نحوه Load Balance کردن آدرس IP های خروجی (IP ارسال ایمیل) در Microsoft Exchange را آموزش خواهیم داد.
تصور کنید شما یک یا دو سرور Edge برای ارسال ایمیل دارید و در مدت زمان کوتاهی مشتریان شما تعداد زیادی ایمیل را ارسال می کنند. پس از مدتی سرویس دهنده های بزرگ مثل Hotmail، Yahoo یا Gmail آدرس IP های شما را مسدود خواهند نمود.
توزیع بار (Load Balancing) در سرور Exchange 2016
عموما دلیل این مسدودی ارسال تعداد زیادی ایمیل از یک آدرس IP می باشد. حال تصور کنید هر دو آدرس Public سرورهای Edge شما مسدود شود. در این صورت هیچگونه ایمیلی از سمت شما به این سرویس دهنده ها ارسال نخواهد شد و تماما در صف انتظار قرار خواهند گرفت.

مشکل در اینجا این است که در سرورهای Edge شما تنها یک آدرس IP برای ایمیل های خروجی تعریف شده است.

نرم افزارهای ارسال ایمیل همچون Ironpot و برخی از نرم افزارهای ضد اسپم لینوکس این امکان را به شما می دهند که چندین آدرس IP را برای ایمیل های ارسالی در نظر بگیرید تا با این مشکل مواجه نشوید، اما آیا Exchange نیز همچنین امکانی دارد؟

البته به این شکل خیر، اما روشی برای تنظیم Custom Transport Agent در Exchange وجود دارد.


Load Balance کردن Transport Agent

مقدار Send Connector در این سیستم دارای خصوصیتی تحت عنوان "SourceIPAddress" می باشد. این آدرس IP یکی از آدرس هایی خواهد بود که Exchange برای ارسال ایمیل از آن استفاده خواهد نمود.
پس در اولین مرحله تعدادی آدرس IP اضافه خواهیم نمود.

192.168.1.240 EDGE Server IP 192.168.1.241 Outbound SMTP IP Address 1 192.168.1.242 Outbound SMTP IP Address 2 192.168.1.243 Outbound SMTP IP Address 3

در تنظیمات ما، سرور Edge در محیط DMZ  میباشد و یک ارتباط NAT یک به یک در شبکه ما فی ما بین آدرسهای داخلی و خارجی وجود دارد.

ممکن است تصور کنید با اضافه کردن چندین آدرس IP مشکل حل خواهد شد اما اشتباه کرده اید!

Microsoft Exchange در بین چندین Send Connector که یک Cost برای آنها تعریف شده است امکان Load Balance ندارد.
این نرم افزار با شرایط زیر نسبت به انتخاب Send Connector اقدام می کند:

1- اگر در تنظیمات گیرنده Send Connector مقدار مشخصی مانند contoso.com تعریف شده باشد نسبت به "*" دارای اولویت است.
2- ردیفی را انتخاب خواهد کرد که دارای کمترین Cost می باشد.
3- اگر چندین ردیف با Cost یکسان وجود داشته باشد بر مبنای نام آنها به ترتیب حروف الفبا انتخاب خواهد کرد.

ممکن است شما بخواهید با استفاده از یک اسکریپت نام Send Connector را هر دقیقه یکبار تغییر دهید که پیشنهاد نمی شود! بهتر است از روش هوشمندانه زیر استفاده کنید:


مرحله بعدی تنظیم Send Connector ها می باشد:
 
New-SendConnector Connector1 -AddressSpaces "connector1.local" -SourceIPAddress 192.168.1.241
New-SendConnector Connector2 -AddressSpaces "connector2.local" -SourceIPAddress 192.168.1.242
New-SendConnector Connector3 -AddressSpaces "connector3.local" -SourceIPAddress 192.168.1.243
در SDK Exchange 2010 به بالا روشی برای ارسال ایمیل ها به ازای هر گیرنده وجود دارد و صرفا شما کافیست به ازای هر گیرنده آنها را به Connector مربوطه متصل نمائید.
با استفاده از تابع RoutingOverride ما تمامی ایمیل های در صف انتظار را می توانیم به سمت Connector مورد نظر خود هدایت کنیم.

اطلاعات تکمیلی در خصوص تابع RoutingOverride در لینک زیر موجود می باشد:
http://msdn.microsoft.com/en-us/library/microsoft.exchange.data.transport.routingoverride(EXCHG.140).aspx



نحوه نصب routeBalancer

برای نصب این Agent می بایست اسکریپت installRouteBalancer.ps1 را اجرا کنید و سپس مراحل زیر را انجام دهید.

1- سرویس MSExchangeTransport را غیر فعال کنید.
2- فولدر "C:\Program Files\Microsoft\Exchange Server\V14\TransportRoles\agents\routeBalancer" را ایجاد کنید.
3- فایلهای routeBalancer.dll  و RouteBalancerConfig.xml را در پوشه ای که ایجاد کرده اید کپی کنید.
4- Agent را نصب و فعال کنید.
5- سرویس MSExchangeTransport را فعال کنید.

نحوه مدیریت سیستم:
این Agent تعداد Send Connector ها را می خواند و همچنین آدرس های IP را از RouteBalancerConfig.xml نیز می خواند. این فایل می بایست در کنار فایلهای dll دیگر باشد.
در صورتی که تمایل به عدم ارسال از یک آدرس IP دارید، مثلا برای غیر فعال کردن Connector2 می بایست:

1- ابتدا مقدار Address Space را درون Send Connector ها از "connector3.local" به "connector2.local" تغییر دهید.
2- سپس "connector2.local" را به اسمی دیگر مثلا "disabled.local" تغییر نام دهید.
3- نام Send Connectory را مثلا به "Disabled" تغییر نام دهید. (فقط جهت شفاف سازی و اطلاع خودتان، تغییر در نام آنها تاثیری بر Agent ندارد)
4- مقدار numConnectors در فایل RouteBalancerConfig.xml را از 3 به 2 تغییر دهید.
5- سرویس MSExchangeTransport  را ریستارت کنید.

دانلود Agent و اسکریپت installRouteBalancer.ps1

آموزش کامل نصب میل سرور Microsoft Exchange Server 2016
دانلود Exchange Server 2013 ,2010
آموزش خروجی گرفتن از MailBox کاربران Exchange Server
توزیع بار (Load Balancing) در سرور Exchange 2016
فعال سازی و تنظیم IIS Remote Management توسط PowerShell - مدیریت IIS از راه دور
آموزش به اشتراک گذاری پورت USB در ماشین مجازی (Hyper-V – VmWare Esxi)
اتصال به SQL Server با استفاده از SQL Managment Studio
آموزش مدیریت Windows Server 2012 - Core Mode - بخش دوم