Install

This guide runs through everything you need to know to get SVN MultSite Plus deployed. First we'll cover all the things that you need to have in place before you install. We'll then cover a standard installation and setup. Finally we'll look at some possible problems you might experience with some troubleshooting tips.

1. Before you deploy

Before we install Subversion MultiSite, we need to ensure that we've got a suitable platform, with sufficient hardware, compatible version of required software, configured appropriately.

1.1 Skills requirement

This section details the knowledge and technical requirements for deployment and operation of the WANdisco software, you should ensure that each of these sections is addressed before you begin the deployment.

Technical Skill Requirements

 System administration
  • Unix operating system installation
  • Disk Management
  • Memory monitoring and management
  • Command Line administration and manually editing configuration files

 Apache administration (if applicable)
  • Familiarity with Apache web server architecture
  • Management of httpd.conf / Apache2 configuration file management settings
  • WebDAV protocol
  • Start/stop/restart administration
  • User authentication options
  • Log setup and viewing

 Networking
  • IP Address assignation
  • TCP/IP ports and Firewall setup

 Subversion
  • Familiarity with Subversion administration (svnadmin) to create repository Command line user commands (svn)
  • Repository creation and/or file-system copying and synchronization
  • Familiarity with WANdisco's replication architecture
  • Understanding of the installation procedure relevant to the OS in use
  • Concept of Node types and Replication groups

If you're not confident about handling any of these tasks, you can request a supported installation from WANdisco.

A single administrator can manage all the systems running MultiSite, although it's a good idea to have someone at each site who is familiar with the MultiSite Basics.

1.2 Deployment overview

As with any software implementation you should deploy SVN MultiSite Plus following a well defined plan. Doing so will help keep things under control, understood, and any potential problems will be spotted and fixed before you go into production.
We recommend that any deployment plan includes the following steps:

1.3 System requirements

This section covers everything you need to know when preparing your Subversion servers for replication. You should view this information as a set of guidelines, not as a fixed set of requirements that are followed slavishly. There are a lot of factors at play and there's really no substitute to running your own performance tests during an evaluation period.

1.3.1 Hardware Recommendations

Hardware Sizing Guidelines
Size #Users Repository Size (GB) CPU speed (GHz) #CPU #Cores RAM (GB) HDD (GB)
Small 100 25 2 1 2-4 8-16 100
Medium 500 100 2 2 4 16-32 250
Large 1000 500 2.66 4 4 32-64 750
Very Large 5000 1000 2.66 4 4-6 128 1500

Storage tips

Processor tips

1.4 Setup requirements

MultiSite Servers must have:

This is a summary of the requirements, you'll need to run through the more detailed Installation Checklist.

Subversion installations must have:

tip" Requirement
You must run Subversion and Subversion MultiSite on the same server.

** Alert! **Alert
A repository can belong to only one replication group at a time.


2. Installation Checklist

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

The uberSVN portal runs through a web browser. The following browsers have been tested and found to work:

 System setup

 Operating Systems

We've tested the following operating systems:
  • Red Hat Linux Enterprise Server (32 or 64 bit): versions 5.x and 6.x
    tip" Running with 32-bit RHEL
    In order to run with 32-bit Red Hat, you will need to edit multisite-plus/bin/common.sh and change the maximum Java heap listed in the MEM_HIGH parameter to be 2.5 Gigabytes or less otherwise the replicator will not start.
    MEM_HIGH="-Xms128m -Xmx2621m"
    MEM_LOW="-Xms128m -Xmx1024m"
    
  • CentOS: versions 5.x and 6.x

  • Debian: versions 6.x and 7.x

  • SUSE Linux Enterprise: version 11.

  • tip" Go 64-bit
    While it's possible to run Subversion MultiSite on 32-bit architecture, this would impose serious limits on scalability. For this reason we strongly discourage deploying on anything less than a 64-bit Operating System unless your requirements are limited to a handful of sites and less than a hundred repositories.

 Subversion server

Required Version:
SVN MultiSite Plus needs to use WANdisco's own Subversion -1.7.7-1 distribution, which includes FSFSWD libraries that are necessary to work over the Fast and Secure File System. These files are available through your regular WANdisco software distribution channel.

Write access for system user
The replicator user must have write permission for all repositories - as the replicator writes directly to the Subversion repository.


Manage repository file ownership if using SVN+SSH:// or file://
Accessing Subversion repositories via Apache2+WEBDAV is simplified by the fact that all user access is handled via the same daemon user. SVN+SSH or file:// access is a little more tricky, there are potential permission problems when multiple users access the same repository.

Tips:
  • Simplify user management by putting SSH users into a single group, you can then ensure that the group has read-write permissions for the repositories.
  • Make repositories wholly owned by the group.
  • Ensure that the prevailing umask is set to provide suitable permissions (002 instead of the default 022).
  • Use wrapper scripts for commands such as svn, svnadmin , svnserve etc. Note that with svn+ssh , an svnserve instance running as the user is spawned, so the wrapper will get called there too).

Repository Creation:
The FSFSWD libraries included in the WANdisco version of Subversion need to be enabled for each repository you intend to replicate.
To enable FSFSWD, run the following for each repository you create
svnadmin create Repo --fs-type fsfswd
Then edit Repo$x/db/fsfs.conf (view an example fsfs.conf file)

uncomment the line:
#rep_port = 7777

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

** Alert! **Same location
All replica must be in the same location (same absolute path) and in exactly the same state before replication can start.


** Alert! **Same UUID
If you start with new repositories, don't create them individually at each site. This is because even though they may share the same repository data, each will have its own universally unique identifier (UUID) - unless the repositories have the same UUID they're not replicas. For more help, read the section about Setting up Repositories for Replication


 Subversion client

Any that are compatible with local Subversion servers.


 Hooks
  • Hook scripts need to be replicated on all repository replicas

 System memory

Minimum recommended: 8 GB RAM; 16 GB swapping container


 Disk space

Subversion: Match to projects and repositories.
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.

 File descriptor/User process limits

Ensure hard and soft limits are set to 64000 or higher. Check with the ulimit or limit command.

** Alert! **Running lots of repositories
When the replicator is not run as a root user the 'max user processes' needs to be set to a high value otherwise your system won't be able to create the threads required to deploy all your repositories.

User process limits

Maximum processes and open files are low by default on some systems. We recommend that both processes and files are unlimited:

ulimit -u unlimited && ulimit -f unlimited

-f The maximum size of files created by the shell(default option)
-u The maximum number of processes available to a single user.

RHEL6 and later:
A file /etc/security/limits.d/90-nproc.conf explicitly overrides the settings in security.conf, i.e.:
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 1024   <- Increase this limit or ulimit -u will be reset to 1024 


 Journaling file system

Replicator logs should be on a journaling file system, for example, ext3 on Linux or VXFS from Veritas.

    ** Alert! **Alert
    NFS must not be used with Subversion MuliteSite - Why you shouldn't use NFS.

    ext4 can be used as your journaling file system, although it must be configured appropriately. See Using Ext4 filesystem for journaling .

    tip"Avoiding Data Loss
    We have an article in our Knowledgebase that looks at a number of implementation strategies that will militate against potential data loss as a result of power outages - Data Loss and Linux


 Java

Install JDK 7
JDK is provided as part of the SVN MultiSite Plus installation package, if it isn't already installed on your server the installer will ensure that it is.

** Alert! **Use Oracle Java
Our development and testing is done using Oracle JDK 7 and JDK 6. While it may be possible to use other Java packages, we will not be able to support you unless you run with Oracle's package.



 Python

Install version 2.3 or later.


 Browser Compatibility

Set up and configuration requires access through a browser, what follows is a basic (not exhaustive) guide to which browsers are known to work:
  • Internet Explorer 8 & 9 or later
  • Firefox 4.0 or later
  • Google Chrome 10.0 or later
  • Safari 5.0.4 or later
  • Opera 10.60 or later

** Alert! **SVN MultiSite Plus is not compatible with either Internet Explorer 6 or 7
While we understand that some users are still tied to earlier versions of Internet Explorer, it's not possible for us to provide backward compatibility for time immemorial.


 Network settings

 Reserved ports

During installation a block of ports is reserved for use by MultiSite, these ports can't be manually edited after installation - make sure you get them right from the start.


Required Ports

dcone.port= An integer / between 1 - 65535 (Default: 6444)
DConE port handles agreement traffic between sites

content.server.port= An integer / between 1 - 65535 (Default: 4321)
The content server port is used for the replicator's payload data: repository changes etc.

delegate.port= An integer / between 1 - 65535 (Default: 7777)
The delegate port is used by Subversion to delegate write operations to the WANdisco Replicator (via the above content.server.port)

jetty.http.port= An integer / between 1 - 65535 (Default: 8082)
The jetty port is used for the MultiSite management interface.

jetty.https.port An integer / between 1 - 65535 (Default: 8445)
The jetty port is used for the MultiSite management interface when SSL encryption is enabled.

** Alert! **Make each port different
In contrast with earlier versions of SVN MulitSite which used the same port for both the UI and replication traffic, SVN MuliSite Plus doesn't multiplex different traffic on a single port. You will need to assign a different port to each type of traffic.


 Firewall or AV software

If your network has a firewall, ensure that traffic is not blocked on the reserved ports noted above. Configure any AV software on your system so that it doesn't block or filter traffic on the reserved ports.


 VPN
Set up IPsec tunnel, and ensure WAN connectivity.

 VPN persistent connections

Ensure that your VPN doesn't reset persistent connections for Subversion MultiSite.


 Bandwidth

Put your WAN through realistic load testing before going into production. You can then identify and fix potential problems before they impact productivity.


 DNS setup

Use IP addresses instead of DNS hostnames, this ensures that DNS problems won't hinder performance. If you are required to use hostnames, test your DNS servers performance and availability prior to going into production.

 MultiSite setup

 Replication Configuration

Read our Replication Setup Guide for information on how to optimise your replication - Replication Setup.


 Voters follow the sun

Subversion users get the best performance if Subversion MultiSite gets agreement from the local nodee. For this reason you should schedule for the the voter node to correspond with the location in which developers are active (i.e. in office hours).


 Disk space for recovery journal

Provision large amounts of disk space for multisite-plus/replicator/database, enough space to cover at least the number of commits within a two to four hours during your times of peak Subversion usage.

 License Model

SVN MultiSite Plus is supplied through a licensing model based on the numbers of both nodes and SVN end-users. WANdisco generates a license.key file will be matched to your agreed usage requirements.

Evaluation License

To simplify the process of pre-deployment testing SVN MultiSite is supplied with an evaluation license. This type of license imposes no restrictions on use but it time-limited to an agreed period.

Production License

Customers entering production need production license file for each node, these license files are tied to the node server's IP address so care needs to be taken during deployment. In the event that a node needs to be moved to a new server with a different IP customers should contract WANdisco's support team and request that a new license be generated ideally before you transfer the node. Production license can be set to expire or they can be perpetual.

Special Node Types

SVN MuliSite Plus offers additional node types provide limit sets of functionality for special cases where a node only needs to perform in a limit role:

Passive Nodes (Learner only) - A passive node operates like a slave in a master-slave model of distribution. Change to its repository replicas only occur through inbound proposals, it never generates any proposals itself.


Voter-only nodes (Acceptor only)- A voter-only nodes operates in a fashion where they don't need to know the content of proposals, they cast votes based only on the basis of replication history: "have I already voted yes to a Global Order Number equal or larger than this one".


These limited-function nodes are license differently from active nodes. Speak to WANdisco's sales team for more details. In short the IP addresses will be a fixed list but the node count and special node count may move between sets of nodes, as long as the number of each type of node is within the limit specified in the license.key.

3. Installation

The installation guide runs through setting up Subversion MultiSite for the first time. If you are upgrading from an earlier version of Subversion MultiSite you should also follow this procedure - SVN MultiSite Plus is a completely new class of product so it's not possible to follow a shortcut upgrade procedure.

3.1 Installation overview

Before we begin, here is a recap of the installation process:

3.2 Before you start

Some things you should bear in mind before starting the installation:

3.3 Starting the installation

4. Repeat the installation process at all sites

Now repeat section 3 for each node that you wish to share your Subversion repositories.
You may benefit from creating an image of your initial server, with the repositories in place and using this as a starting point on your other sites - this will help you ensure that your replicas are in exactly the same state.

** Alert! **Same Location
All replicas must be in the same location (same absolute path) and in exactly the same state before replication can start.

** Alert! **Same UUID
If you start with new repositories, don't create them individually at each node. This is because even though they may share the same repository data, each will have it's own universally unique identifier (UUID) - unless they have the same UUID they're not replicas.

5. Node Induction

After installing SVN MultiSite Plus at all sites, you'll need to make the sites aware of each other through the node induction process. There's a particular way that you need to run through this process so get another coffee and don't skip this section.

Overview

It's important that sites are connected together in specific sequence. Run through the following steps to ensure that your sites are all able to talk to each other:

6. Create a Replication Group

SVN MultiSite Plus lets you share specific repositories between selected sites. This is done by creating Replication Groups that contain a list of sites and the specific repositories they will share.

** I only live to be born again **

This illustration shows a collection of four sites that are running two replication groups. Replication Group one replicates Repo1 across all four sites, whilst Replication Group 2 replicates repo2 across a subset of sites.

Follow this procedure to create a Replication Group. You can create as many replication groups as you like. However, each repository can only be part of one active replication group at a time.


7. Add Repositories

Once you have added at least one Replication Group you will be able to add repositories to your node. Here's how: