WANdisco

 Subversion MultiSite v3.7 - Pre-deployment Guide

Home | Pre-deployment | Installation | Upgrade | User Guide | Technical Guide | Glossary
*

Pre-deployment
1 Introduction
1.1 Deployment Overview
1.2 System requirements
1.3 Setting up repositories
1.4 Using two or more repositories
1.4.1 Subversion location directive
1.4.2 About Subversion ParentPath
1.5 Using the Authz Module
1.6 MultiSite and Subversion password files
1.7 Quorum recommendations
1.8 Firewalls and virus scanners
1.9 Deployment checklist
1.10 Creating a new Subversion repository?
1.11 Configuring Apache
1.11.1 Changing Subversion port (Unix)
1.11.2 Sharing Apache, and Using HTTPS
1.11.3 Using HTTP with Apache
1.11.4 Apache and SVNKit
1.11.4.1 SVNKit and Connection Pooling
1.11.4.2 Optimize Your Configuration
1.11.5 Apache 2.2/SVN-DAV (Windows)
2 Installing Java and Perl
2.1 Installing Java
2.2 Installing Perl

Installation
1. Installation overview
2. Starting the installation
2.1 Starting the installation
2.2 Place your license key
3. Run the setup file
4. Complete setup through a browser
5. Login to the admin console
6. Setting up additional nodes
7. Create a replication group
8. Copy the installation files manually
9. Post installation configuration
9.1 Using pre-commit hooks

Upgrade
1. Upgrade using the upgrader script
2. Upgrade using backed-up data
3. Backup your settings
4. Delete directories
5. Extract and run the setup file
6. Browser based setup
7. Import your saved settings

User Guide
1. Procedures
1.1 Disabling Access to Subversions
1.1.1 (selected nodes)
1.1.2 (all nodes)
1.2 Establishing a baseline for replication
1.2.1 Copying the Subversion Database
1.2.2 Synchronizing with an older copy
1.2.3 Copying Over the Network
1.2.4 Sending repositories on disk
1.3 Finding the Last Committed Transaction
1.4 Adding a repository to a replication group
1.5 Removing a Repository from the Replication Group
1.6 Moving a Repository to another replication group
1.7 Adding a Node to the Replication Group
1.8 Removing a Node from the Replication Group
1.9 Creating a New Replication Group
1.9.1 Considerations
1.9.2 Considerations for Majority Quorum
1.9.3 Procedure
1.10 Deleting a Replication Group
1.11 Emergency Reconfiguration of Quorum
1.12 Changing a prefs.xml File
1.12.1 Changing One Node's prefs.xml File
1.12.2 Changing All Nodes' prefs.xml Files
1.13 Performing a Synchronized Stop
1.14 Verifying That the replicator is working
1.15 Installing an updated .jar File
1.16 Changing the Distinguished Node
1.17 Using Subversion triggers for sending e-mails
1.18 Toggling the Quorum Check
1.19 Changing the admin console username
1.20 Changing the admin console password
1.21 Resetting or recovering the admin console password
1.21.1 Restore the admin console password
1.21.2 Reset the admin console password as "wandisco"
1.22 Setting Up Hooks"
1.22.1 Pre-Replication Hook"
1.22.1.1 Configuration
1.22.1.2 Other Configuration
1.22.1.3 Repository-Specific Hooks
1.23 Selective Replication
1.24 Updating Apache or Subversion
1.25 Checking Repository Consistency

2. Replicator Management
2.1 Setting Replicator to Start Up on System Boot
2.2 Setting up the Replicator as a Windows Service
2.3 Changing the Quorum Type
2.4 About Watchdog Mode
2.5 Temporary Files

3. Troubleshooting
3.1 How Do I Get WANdisco Support?
3.1.1 How Do I Run the Talkback Script?
3.2 General Subversion MultiSite
3.2.1 Connection Request Timeout Messages
3.2.2 VPN, NAT, Firewall Timeouts
3.2.3 A node is in read-only mode
3.3 Error messages
3.3.1 Missing License Key file
3.2.1 Connection Request Timeout Messages
3.3.2 I'm getting a severe exception
3.3.3 Compressed Stream Invalid
3.3.4 Java consistency check on relicator restart
3.4 Oops!
3.4.1 I Directly Committed to Subversion, How Do I Rsync?
3.4.2 I Pressed Ctrl-C During a Subversion Command

4. Frequently Asked Questions
4.1 Why Are So Many Java Processes Running?
4.2 Can I Store Logs or Content on NFS?
4.3 Why is Installer Configuring IP Addresses as 0.0.0.0?
4.4 Should I Worry About Time Changes or Time Zones?
4.5 Does WANdisco Support Dynamic DNS?
4.6 Can I Use SSH Tunnel to Navigate a Firewall?
4.7 WANdisco Authentication
4.8 Encryption Around WANdisco Protocol
4.9 How Do I Restrict Direct Access to My Repository?
44.10 About MultiSite log files
4.11 How do I deal with failover agent failure?

5 Guide to the Admin Console
5.1. Security
5.1.1 Create Roles
5.1.2 List Roles
5.2. User Administration
5.2.1 Create User
5.2.2 List Users
5.2.3 Import Users
5.2.4 Change Admin Password
5.3. Group Administration
5.3.1 Create Group
5.3.2 List Groups
5.3.3 Assign Users
5.3.4 Remove Users
5.3.5 Import Groups
5.4. ACL Administration
5.4.1 Create ACLS
5.4.2 List ACLS
5.4.3 ACL Options
5.5. System
  5.5.1 Log Viewer
  5.5.2 System Settings
  5.5.3 Transaction Status
  5.5.4 Log Level
  5.5.5 Free Memory
  5.5.6 Dashboard
  5.5.7 Export Settings
  5.5.8 Import Settings
5.6. Proxy
5.6.1 Proxy Status
5.6.2 Log Viewer
5.6.3 SVN Settings
5.6.4 Email Settings
5.6.5 Change Distinguished Node
5.6.6 Stop Proxy
5.6.7 Shut Down Node
5.6.8 Nodes
5.6.9 Replication Groups
5.6.10 Replication Group History
5.7 Reports
5.7.1 Configure URI
5.7.2 User Group Report
5.7.3 Audit Reports

Technical Guide
1. Introduction
2. MultiSite Overview
3 WANdisco Concepts
3.1 How Replication Works
3.2 Replication Example
3.3 WANdisco is Listening
3.4 Synchronized Stop of all nodes
4. Handling Node and Network Failure
4.1 Node Failure
4.2 Network Failure



1.9 Deployment checklist

Though you may have referred to the Deployment Checklist prior to an evaluation of Subversion MultiSite we strongly recommend that you revisit the checklist and confirm that you're system still meets all requirements.

System Setup
 
Supported Operating Systems
All nodes must use the same operating system

We've tested the following operating systems:

Fedora (32 or 64 bit): 6, 7, 8, 9, 10, 11, 12
Red Hat Linux Enterprise Server (32 or 64 bit): 4, 5.2, 5.3, 5.4, 5.5
Sun Solaris (32 or 64 bit): 9, 10
Linux: Linux kernel 2.6 or higher
CentOS-4 (5.2, 5.3, 5.4, 5.5)
Windows Server, (32 or 64 bit) 2003, 2008

In principle, any operating system that can support a Java environment, Apache and Subversion.
Subversion Server Version
1.4 and above, through 1.6.11. Run the Apache Portable Runtime that matches your Subversion version.

Certified Subversion Binaries are now available from WANdisco. Providing the latest builds, without the risks associated with Open Source distribution.

Subversion Client Version
Compatible with local Subversion servers.
Triggers
Pre-commit triggers are not recommended.
Use pre-replication hooks instead.
Any pre-replication hooks must be deterministic, i.e. have the same exact behavior and outcome at every node.
Post-commit triggers can be tested at only one node.

All other trigger types will function normally, though you may prefer to use some types of post commit hooks at only one site, for example where an email is generated on a commit.

System Memory
Ensure RAM and swapping containers are at least four times larger than the largest Subversion file.
Recommended: 2 GB RAM; 4 GB swapping container
Disk Space
Subversion: Match to projects and issues.
Required disk space is contained within the svn-replicator install directory
MultiSite Transaction Journal: Equivalent of seven days of changes.

To estimate your disk requirements, you need to quantify some elements of your deployment:

  • overall size of all of your SVN repositories.
  • frequency of commits in your environment.
  • types of files being modified - text,binaries (SVN clients only send deltas for text).
  • number and size of files being changed.
  • rate that new files are being added to the repository.

    Checkouts You need sufficient disk space to handle large, in-transit checkouts which may get buffered to a tmp directory beneath the replicator installation until that checkout has been completed. The required space can be calculated using the following guideline:

    Recommended storage = Number of clients checking out files(N) x average checkout sizes (Kilobytes)
  • File Descriptor limit
    Ensure hard and soft limits are set to 64000 or higher. Check with the ulimit or limit command.
    Journaling File System
    Replicator logs should be on a journaling file system, for example, ext3 on Linux or VXFS from Veritas.

    NTFS is a journaling file system. ext4 is also a journaling file system, however WANdisco does not support its use because of its deferred writes.

    Maximum User Process Limit
    At least three times the number of Subversion users.
    Java
    Install JDK 1.6 or higher.

    ** Alert! **Alert
    Important: We strongly discourage upgrading to Java 7 as problems have been reported with HotSpot optimization, which is enabled by default. If you have enabled Hotspot optimization in Java 6, you should disable it.



    Perl
    Install version 5.6.1 or later.
    Under Windows, use version 5.8
    (On 64-bit Windows, use the 32-bit version of Perl)
    For Access Control: Perl::DBI module for Audit Reports other than Users and Groups.
    Network Settings
     
    Reserved Ports
    MultiSite needs a dedicated port for DConENet (replication protocol) as well as HTTP protocol (for the Admin Console). We recommend having a port available in case you have to copy (rsync) the repository from one node to another. If your network has a firewall, notify the firewall of the port numbers.
    Firewall or virus scanner
    Notify the firewall and any virus scanners of the Subversion MultiSite port numbers.
    VPN
    Set up IPsec tunnel, and ensure WAN connectivity.
    Persistent Connection Keep Alive
    Ensure VPN doesn't reset persistent connections for MultiSite.
    Bandwidth
    Understand the available bandwidth for testing, and set user expectations.
    DNS Setup
    Use IP addresses instead of DNS hostnames, due to performance and DNS server unavailability issues. If using DNS hostname is the only option, then ensure DNS availability.
    Apache 2 Setup
    (for http:// access)
    Apache version
    All nodes have the same version, 2.2.3 or above.
    Apache modules version
    All nodes have the same version of mod_dav and mod_svn_dav
    Turn KeepAlive On
    Keep-alive must be set to ON.
    See Using HTTP with Apache, Apache and SVNKit, and http://httpd.apache.org/docs/2.2/mod/core.html
    mod_deflate.c for SVN_DAV
    mod_deflate is not compatible with Subversion MultiSite.
    Location URI
    Ensure that all nodes' apache conf files have the same location URI for Subversion repository access
    Require valid user for write methods
    Ensure that all WebDAV methods require authentication for SVN-DAV protocol
    Use port 80 for WANdisco
    Standard Port 80 avoids confusion, change default Apache port if using 80.
    Apache server port
    Use non-standard Apache server port to avoid conflict with replicator port. See Dedicated Apache - 1.11.1 Changing Subversion port (Unix) and Sharing Apache, and Using HTTPS.
    File Permissions in svnroot
    See this article (http://www.reallylongword.org/articles/svn/)
    WANdisco Setup
     
    Quorum
    Default is singleton. Trade off availability with performance.
    Rotating Quorum Schedule
    Ensure the distinguished node is in the active time zone.
    Agreement Threads
    Tune based on number of concurrent Subversion writers
    Reader/Writer Network IO Thread Pool
    Tune based on Subversion client connection rate, file transfer rate
    ConnectionKeepAlive timeout
    Tune inactivity timeout for persistent DConENet/DFTP connections based on VPN/WAN router set up
    Message Queue Max Thread Pool Size
    Tune based on Subversion write concurrency
    Maximum connections per IO thread
    Tune if active Subversion user population is large (greater than 100)
    Disk space for recovery journal
    Provision large disk for svn-replicator/systemdb, at least number of commits within a two to four hour window
    Access Control
     
    Audit Reports
    For reports other than Users and Groups, you'll need to use a database such as MySQL, and php.
    mod_authz_svn
    Optional but recommended. See Access Control - Using the Authz Module. Module may be bundled with your version of Apache.
    LAN Clustering
     
    Load Balancer
    We supply the Zeus load balancer which is completely software based, with no specific hardware dependancies.

    Platform Availability for 6.0r4
    • Linux x86, x86_64 - Kernel 2.6 (2.6.8+, 2.6.22+ for IPv6)
    • Solaris 10 (SPARC)
    • Solaris 10 (x86 and x86_64)
    • OpenSolaris 2009.6 (x86_64)
    Virtual Appliances: VMware vSphere 4.0, VI3 (3.5), XenServer 5.5, OracleVM 2.1

    Hardware Requirements
    Single core CPU with 2 Gigabytes memory (4 Gigabytes recommended).