LISTSERV in a High-Availability Environment DRAFT Revised 2010-01-11



Similar documents
Active-Active and High Availability

Overview... 1 Requirements Installing Roles and Features Creating SQL Server Database... 9 Setting Security Logins...

Active-Active ImageNow Server

Contingency Planning and Disaster Recovery

short introduction to linux high availability description of problem and solution possibilities linux tools

Smart Tips. Enabling WAN Load Balancing. Key Features. Network Diagram. Overview. Featured Products. WAN Failover. Enabling WAN Load Balancing Page 1

INUVIKA TECHNICAL GUIDE

Surround SCM Backup and Disaster Recovery Solutions

Scalable Linux Clusters with LVS

High Availability for Internet Information Server Using Double-Take 4.x

Panorama High Availability

How to Configure Double-Take on Microsoft Exchange Server

Double-Take AVAILABILITY

1 Basic Configuration of Cisco 2600 Router. Basic Configuration Cisco 2600 Router

High Availability for Exchange Server 5.5 Using Double-Take

Astaro Deployment Guide High Availability Options Clustering and Hot Standby

Load-Balanced Merak Mail Server

Exam : EE : F5 BIG-IP V9 Local traffic Management. Title. Ver :

Load Balancing & High Availability

Perforce Backup Strategy & Disaster Recovery at National Instruments

This course is intended for IT professionals who are responsible for the Exchange Server messaging environment in an enterprise.

High Availability for VMware GSX Server

EVault for Data Protection Manager. Course 361 Protecting Linux and UNIX with EVault

Red Hat Cluster Suite

Chapter 1 - Web Server Management and Cluster Topology

MapGuide Open Source Repository Management Back up, restore, and recover your resource repository.

IBM Security QRadar SIEM Version High Availability Guide IBM

Configure AlwaysOn Failover Cluster Instances (SQL Server) using InfoSphere Data Replication Change Data Capture (CDC) on Windows Server 2012

Cloud Based Application Architectures using Smart Computing

InterWorx Clustering Guide. by InterWorx LLC

FileBench's Multi-Client feature

Configuring IP Load Sharing in AOS Quick Configuration Guide

Resolving problems with SMTP Security Server and CVP operating in Check Point NG

Recover a CounterPoint Database

EVault Software. Course 361 Protecting Linux and UNIX with EVault

GoGrid Implement.com Configuring a SQL Server 2012 AlwaysOn Cluster

High Availability for Microsoft SQL Server 7.0 Using Double-Take

Protecting SQL Server Databases Software Pursuits, Inc.

Availability Guide for Deploying SQL Server on VMware vsphere. August 2009

Cluster to Cluster Failover Using Double-Take

Cluster to Cluster Failover Using Double-Take

4G Business Continuity Solution. 4G WiFi M2M Router NTC-140W

TimeIPS Server. IPS256T Virtual Machine. Installation Guide

FILECLOUD HIGH AVAILABILITY

High Availability Essentials

Implementing Failover Capabilities in Red Hat Network Satellite

Netezza PureData System Administration Course

Lotus Domino Backup Strategy

A SURVEY OF POPULAR CLUSTERING TECHNOLOGIES

Hyper-V backup implementation guide

Tiburon Master Support Agreement Exhibit 6 Back Up Schedule & Procedures. General Notes on Backups

Determine if the expectations/goals/strategies of the firewall have been identified and are sound.

Aqua Connect Load Balancer User Manual (Mac)

Red Hat System Administration 1(RH124) is Designed for IT Professionals who are new to Linux.

System Recovery in Next to No Time by Jürgen Heyer

RHCSA 7RHCE Red Haf Linux Certification Practice

High-Availability User s Guide v2.00

Everything You Need to Know About Network Failover

SQL Server Mirroring. Introduction. Setting up the databases for Mirroring

High Availability for Microsoft SQL Server Using Double-Take 4.x

Chapter 2 TOPOLOGY SELECTION. SYS-ED/ Computer Education Techniques, Inc.

Acronis Backup & Recovery 10 Server for Windows. Installation Guide

PageR Enterprise Monitored Objects - AS/400-5

Using the Microsoft IIS SMTP Service for LISTSERV Deliveries

Oracle Call Center Applications Setup

Kaseya 2. User Guide. Version 7.0. English

High Availability. Vyatta System

Device Log Export ENGLISH

Oracle VM Server Recovery Guide. Version 8.2

Quick Start Guide. Sendio System Protection Appliance. Sendio 5.0

ITA Mail Archive Setup Guide

Remote Copy Technology of ETERNUS6000 and ETERNUS3000 Disk Arrays

Troubleshooting BlackBerry Enterprise Service 10 version Instructor Manual

Setting and Checking LISTSERV www Interface Permissions Windows Server 2012 with IIS 8.x Last Updated: 20 Mar 2014

Jive and High-Availability

Configuring the BIG-IP and Check Point VPN-1 /FireWall-1

WEB SERVER MONITORING SORIN POPA

High Availability Storage

HA / DR Jargon Buster High Availability / Disaster Recovery

Ubuntu Sever Administration

Microsoft Exchange 2003 Disaster Recovery Operations Guide

Configuring Failover

High Availability. FortiOS Handbook v3 for FortiOS 4.0 MR3

EventSentry Overview. Part I About This Guide 1. Part II Overview 2. Part III Installation & Deployment 4. Part IV Monitoring Architecture 13

Advanced SUSE Linux Enterprise Server Administration (Course 3038) Chapter 5 Manage Backup and Recovery

RAID Utility User s Guide Instructions for setting up RAID volumes on a computer with a MacPro RAID Card or Xserve RAID Card.

Synology High Availability (SHA)

How to Backup XenServer VM with VirtualIQ

istorage Server: High-Availability iscsi SAN for Windows Server 2008 & Hyper-V Clustering

FioranoMQ 9. High Availability Guide

Best practices for operational excellence (SharePoint Server 2010)

DB2 9 for LUW Advanced Database Recovery CL492; 4 days, Instructor-led

APACHE WEB SERVER. Andri Mirzal, PhD N

Spam Marshall SpamWall Step-by-Step Installation Guide for Exchange 5.5

DocuShare 4, 5, and 6 in a Clustered Environment

Network File System (NFS) Pradipta De

Transcription:

LISTSERV in a High-Availability Environment DRAFT Revised 2010-01-11 Introduction For many L-Soft customers, LISTSERV is a critical network application. Such customers often have policies dictating uptime and availability requirements. This document addresses how to use LISTSERV in high-availability environments and how to minimize application downtime in case of a hardware or software failure. It is not intended as a comprehensive document on achieving high network availability, but is focused on the LISTSERV application itself. It is assumed that you will incorporate these suggestions into a broader plan of network failover, backup, and recovery. Using LISTSERV in a High-Availability Environment LISTSERV has several features that lend themselves to rapid failure recovery and high availability. Discussed below are LISTSERV's SMTP forwarding features and how to use filesystem mirroring for failover. Outbound SMTP Forwarding LISTSERV's SMTP forwarding features allow for a high degree of load balancing and failover for LISTSERV's outbound e-mail delivery. These features are controlled by way of the SMTP_FORWARD and SMTP_FORWARD_n site configuration keywords. At their simplest, the SMTP forward settings might look as follows (the examples use UNIX format; see the documentation for syntax for other platforms): SMTP_FORWARD_1="mail1.example.net" This example tells LISTSERV to use MAIL1.EXAMPLE.NET for its outbound e-mail delivery. If spawning a sub-process for SMTP delivery fails for some reason, LISTSERV will mail to MAIL1.EXAMPLE.NET using the main LISTSERV process. Let's look at some ways we can scale this up for greater redundancy:

SMTP_FORWARD_1="5*mail1.example.net" In this example, all outbound e-mail still goes through MAIL1.EXAMPLE.NET, but instead of a single process handling all mail, we have five processes delivering mail in parallel. This helps to empty LISTSERV's spool faster, but doesn't help if MAIL1.EXAMPLE.NET is unavailable. For that, we need failover: SMTP_FORWARD_1="5*mail1.example.net;mail2.example.net" In this example, we still deliver all mail through MAIL1.EXAMPLE.NET as long as it's available. But if MAIL1.EXAMPLE.NET becomes unavailable, LISTSERV will automatically switch to delivering through MAIL2.EXAMPLE.NET. If MAIL1.EXAMPLE.NET comes back online, LISTSERV will automatically switch back to it. This gives us good failover, but what if we want to load balance between the two servers instead? Then we do this: SMTP_FORWARD_1="5*mail1.example.net" SMTP_FORWARD_2="5*mail2.example.net" In this example, we get five connections to MAIL1 and five connections to MAIL2, and LISTSERV splits the load between them. Note that this doesn't necessarily mean that both servers will get the same number of messages. If MAIL1 is able to receive mail more quickly than MAIL2, it will end up with a greater portion of the total mail traffic. Also, at low volume -- when all recipients fit in a single queue file -- the entire queue file will go to one server or the other. If one server becomes available, outbound mail will continue to go out through the other. We can combine the load balancing and failover settings: SMTP_FORWARD_1="5*mail1.example.net;mail3.example.net" SMTP_FORWARD_2="5*mail2.example.net;mail4.example.net" In the example above, the load is balanced between MAIL1 and MAIL2, and if either fails, its traffic will go out through MAIL3 or MAIL4, respectively. Any number of SMTP_FORWARD_n lines may be defined to share load balancing and failover among any number of outbound mail servers. It is also possible to schedule SMTP_FORWARD rotation. For example, if our corporate mail goes out through CORP.EXAMPLE.NET and we only want to use it to help with LISTSERV mail between 8:00pm and 6:00am, we can do:

SMTP_FORWARD_1="5*mail1.example.net;mail3.example.net" SMTP_FORWARD_2="5*mail2.example.net;mail4.example.net" SMTP_FORWARD_3="5*corp.example.net(20:00-06:00)" In this example, LISTSERV ignores CORP.EXAMPLE.NET except between the hours of 8:00pm and 6:00am, during which it will employ five additional SMTP workers to deliver mail through that server. Failover For LISTSERV The examples above all address how to build redundancy and failover into LISTSERV's outbound SMTP delivery. But what if the LISTSERV server itself should become unavailable and we need to fail over to a backup server? To address that, we need two pieces: a copy of the LISTSERV filesystem, and a way to route mail (and possibly web requests) to a backup server. Mirroring the LISTSERV Filesystem LISTSERV cannot do its own filesystem mirroring, so we need to rely on an external application to do that. There are many ways we could accomplish mirroring. A relatively simple method would be to use a Network File System (NFS) mount or Network Attached Storage (NAS) system to store the necessary LISTSERV files. If the primary LISTSERV server becomes unavailable, then we simply mount the NFS or NAS partition(s) on a backup server. If NFS or NAS are not available or not recommended for performance reasons, then we could do remote synchronization instead. This could be something as simple as running a scheduled 'rsync' command on a UNIX server or something more complex like the many commercial products for mirroring a Windows filesystem. On Windows, the LISTSERV filesystem usually looks as follows: \LISTSERV\LISTS \LISTSERV\LOG \LISTSERV\MAIN \LISTSERV\OUT \LISTSERV\SPOOL \LISTSERV\TMP \LISTSERV\WWW There is generally no need to mirror the OUT, SPOOL, or TMP directories, as they contain

transient queue and temp files. It is generally enough to mirror the MAIN, LISTS, LOG, and WWW directories to a failover server. (The WWW directory is the recommended location for LISTSERV web archive files. If you store these files in some other location, such as under the IIS INETPUB directory, then you would need to mirror that location instead.) On UNIX, you should mirror the entire ~listserv directory and subdirectories, minus the spool and tmp directories. If using LISTSERV with NFS, it is recommended that you put spool on a local disk for performance reasons. The spool contains transient queue files that are usually not worth the performance overhead of mirroring. The amount of data to be mirrored can be reduced if list memberships are stored in a DBMS instead of LISTSERV's internal list format. In that case, both the primary and backup system would need to be configured for DBMS access. Instead of updating the *.list files with subscription changes, the DBMS would be updated in real time, reducing the amount of file synchronization needed between the primary and backup systems. It is also possible to store list notebook archives on a networked filesystem (like a NFS or NAS mount) instead of the local disk. LISTSERV's application files are generally quite small; list notebook archives are usually much larger, depending on the amount of archived content. For either platform, mirroring the actual HTML and index files in the web archive directory is not important; LISTSERV will rebuild those files on restart if the directory structure itself exists. You may mirror the log directory or not at your discretion, balancing the value of the log files with the overhead of mirroring them. Unlike (for example) most database management systems, LISTSERV does not usually have open file issues, so it is safe to copy a running installation to the backup server. It is important to keep drive letters and directory paths the same between the main server and the backup server. The site configuration and list configurations both use directory paths for various settings (e.g., the notebook archive path), so those paths must not change on the backup server. Additionally, the web server and any SMTP services should be configured identically on the primary and backup servers. If there is a local firewall on the backup server, it needs to be configured identically to the primary server, as well. You will need to configure the backup server to start LISTSERV on demand. For Windows, this means running X:\LISTSERV\MAIN\SMTP DEFINE and 'X:\LISTSERV\MAIN\LSV DEFINE' to create the Windows services, and then editing the service definitions for manual (instead of automatic) startup. For UNIX, this means

copying your existing LISTSERV init script to the backup server, and disabling startup during the default runlevel. You do not want the backup server to automatically start LISTSERV whenever it is rebooted; it should only start when the primary server fails. Failing over the LISTSERV service Once a copy of the LISTSERV filesystem is available on the backup server and the startup scripts are in place, the failover procedure itself needs to be created. The details of how to that are OS specific, but in general, you'll need to: 1. Monitor the primary server. Typically this means running a process either on the backup machine or on some third server that keeps track of the primary server by way of periodic pings through ICMP or TCP. Alternately, the primary server can send out a periodic 'heartbeat' to the backup server. After some number of failed pings or missed heartbeats, the primary server will be considered offline. 2. Transfer the IP address. If the IP address of the primary server is no longer reachable, it can be transferred to the backup server. The means for doing so will vary by operating system. 3. Start services on the backup server. Once the IP address is in place, start the web server, LISTSERV service, and SMTP listener (Windows) or mail server (UNIX) on the backup machine. Mail and web requests should now be routed to the backup server. Once the backup server takes over, you need to be sure that the primary server will not try to reclaim the IP address when it is restarted, or you'll have an IP conflict. This can be most easily accomplished by simply pulling the network cable from the primary server before powering it back on. For sites using NAT, this can be more easily avoided by leaving the internal IP addresses alone, and skipping step 2 above in favor of changing the NAT rule instead to route the external IP address to the internal IP address of the backup server instead of the primary. Then the primary server can be brought back online with no IP conflict on the internal network.