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.
Before installing SVN MultiSite Plus we need to ensure that we have sufficient hardware and all required software configured appropriately.
This section details the knowledge and technical requirements for deployment and operation of SVN MultiSite Plus. You should ensure that each of these requirements is satisfied before you begin the deployment.
Technical Skill Requirements | |
System administration |
|
Apache administration (if applicable) |
|
Networking |
|
SVN and MultiSite Plus |
|
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 Plus, although it's a good idea to have someone at each site who is familiar with the MultiSite Plus Basics.
As with any software implementation you should deploy SVN MultiSite Plus following a well defined plan. We recommend that any deployment plan includes the following steps:
This section covers everything you need to know if you are preparing existing servers for replication. You should view this information as a set of guidelines, not as a fixed set of requirements. There are a lot of factors at play and there's really no substitute to running your own performance tests during an evaluation period.
Hardware Sizing Guidelines | |||||||
---|---|---|---|---|---|---|---|
Size | #Users | Repository Size (Gigabytes) | CPU speed (Gigahertz) | #CPU | #Cores | RAM (Gigabytes) | HDD (Gigabytes) |
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 |
GB or GiB
We should clarify how we refer to measures of memory and data. SVN MultiSite Plus has now adopted the binary prefixes as provided by the International Electrotechnical Commission. We therefore use Mebibyte (1,048,576 bytes) instead of Megabytes (1,000,000 bytes) within our products. However, we'll still refer to Megabytes and Gigabytes where these are more commonly understood - such as in the above table.
If you're not familiar with the difference between the binary prefixs and the SI prefixes then we recommend that you give the following Wikipedia article a read - http://en.wikipedia.org/wiki/Mebibyte
How much storage does SVN MultiSite Plus need?
We provide a guideline for calculating for WANdisco's replication products: Hardware Sizing Guide
This is a summary of the requirements, you'll need to run through the more detailed Installation Checklist.
We recommend that you install SVN during the installation of SVN MultiSite Plus. You can choose between version 1.7 or 1.8, both have the necessary WANdisco-modified FSFS libraries already included. Regardless of the version of SVN that you use, it must include:
Pre-commit Hooks
Wandisco's modified version of the FSFS libraries will intercept commits after any pre-commit hooks have run. This means that the pre-commit hook run on the initiating node (on the server, Apache, SVNserve, etc.) rather than in the replicator. Should a pre-commit hook fail then the server will return an error to the client before the FSFSWD intercept call. As a result, the replicator is never involved with failed pre-commit hooks (with the possible exception of protorev
/abort notifications.
So if a commit (on the originating node) is delegated for replication any related pre-commit hook will already have succeeded.
Post-commit Hooks
The replicator completes the commit on the originating node by invoking a JNI function - a low level function that doesn't run any hooks. When the replicator returns the commit status to the originating repository FSFSWD a successful commit will cause the post-commit to run on the server.
The net effect is that pre- and post- hooks run in the server on the originating repository and they do not run at all for the replicated repositories. Although a replicator could explicitly invoke the hooks for the replicated repositories if required.
Requirement
If you run an existing installation of SVN instead of installing it during the setup of SVN MultiSite Plus, you need to make sure that
it contains WANdisco's modified FSFS libraries.
You must run SVN and SVN MultiSite Plus on the same server.
Alert
A repository can belong to only one replication group at a time.
Though you may have referred to the Installation Checklist prior to an evaluation of SVN MultiSite Plus we strongly recommend that you revisit the checklist and confirm that your system still meets all requirements.
System setup | |
Operating Systems |
We've tested the following operating systems:
Go 64-bit
While it's possible to run SVN MultiSite Plus 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. |
SVN Server |
Recommended Version: Installing the version of SVN that is bundled with SVN MultiSite Plus is the best option as this takes care of the requirement for running with WANdisco's customized FSFSWD libraries, it is also offers the benefit of being a version of SVN that have been extensively tested with MultiSite. Option Component Packages SVN MultiSite Plus installation checks for the presense of a number of option SVN components. These components, if found, are upgraded from a collection of packages that are bundled with SVN MultiSite Plus. However, if they are not already installed they will not be touched by the installer, if you need any of them you will need to install them manually. All SVN packages (including the optional packages) are located here: /opt/wandisco/svn-multisite-plus/resources/svn -rwxr-xr-x 1 root root 78400 Jun 17 16:20 mod_dav_svn-1.8.8-1.x86_64.rpm -rwxr-xr-x 1 root root 44276 Jun 17 16:20 serf-1.3.4-1.x86_64.rpm -rwxr-xr-x 1 root root 2267700 Jun 17 16:20 subversion-1.8.8-1.x86_64.rpm -rwxr-xr-x 1 root root 11352880 Jun 17 16:20 subversion-debuginfo-1.8.8-1.x86_64.rpm -rwxr-xr-x 1 root root 3715880 Jun 17 16:20 subversion-devel-1.8.8-1.x86_64.rpm -rwxr-xr-x 1 root root 24124 Jun 17 16:20 subversion-fsfswd-1.8.8-1.x86_64.rpm -rwxr-xr-x 1 root root 259648 Jun 17 16:20 subversion-javahl-1.8.8-1.x86_64.rpm -rwxr-xr-x 1 root root 968424 Jun 17 16:20 subversion-perl-1.8.8-1.x86_64.rpm -rwxr-xr-x 1 root root 690808 Jun 17 16:20 subversion-python-1.8.8-1.x86_64.rpm -rwxr-xr-x 1 root root 71288 Jun 17 16:20 subversion-tools-1.8.8-1.x86_64.rpm Repository Creation: If you are running with repositories that use the old Berkeley DB, make sure that all the repositories you intend to replicate are created or recreated as follows: svnadmin create Repo --fs-type fsfswd Then edit Repository_name/db/fsfs.conf (view an example fsfs.conf file) uncomment the line: #rep_port = 7777Write access for system user The replicator user must have write permission for all repositories - as the replicator writes directly to the SVN repository. Manage repository file ownership if using SVN+SSH:// or file:// Accessing SVN 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. Run with the same system account Tips:
Certified SVN Binaries
are now available from WANdisco. Providing the latest builds, without the risks associated with Open Source distribution. Same location Same UUID svnadmin pack support Linux Standard Base LSB provides developers with a degree of confidence about their applications being able to run on a range of distributions. The package is widely included by default, but not always. Run the following command to verify the version of LSB yours server is running: [root@redhat6 wandisco]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64: graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: RedHatEnterpriseServer Description: Red Hat Enterprise Linux Server release 6.4 (Santiago) Release: 6.4 Codename: Santiago
SVN MultiSite Plus's init.d scripts are dependent the the LSB package. Running the installer script, if the package isn't present it should be downloaded before the installation continues. |
SVN client |
Any that are compatible with local SVN servers. |
Hooks |
|
System memory |
Minimum recommended: 8 Gigabytes RAM; 16 Gigabytes swapping container Memory requirements of DConE2 replication |
Disk space |
SVN: Match to projects and repositories. MultiSite Plus Transaction Journal: Equivalent of seven days of changes. Estimating your disk requirements can be very difficult and there's no perfect system for making an accurate estimation. Some organizations monitor their repository growth over a period of time and use an extraopolation as a guide. This method works best if your organization is unlikely to see the addition of large new projects that instantly introduce large amounts of extra repository data. you need to quantify some elements of your deployment:
Talk to those who know |
Maximum User Processes and Open Files limits |
Maximum User Processes and Open Files limits are low by default on some systems. It is possible to check their value with the ulimit or limit command:ulimit -u && ulimit -n
-u The maximum number of processes available to a single user. For optimal performance, we recommend both hard and soft limits values to be set to 64000 or more:
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 Avoiding Data Loss. |
Java |
Install JRE or JDK 7 Use Oracle Java
|
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:
SVN MultiSite Plus is not compatible with either Internet Explorer 6 or 7 |
Kerberos SSO |
We support the implementation of Kerberos for single sign-on. By default Kerberos requires that stronger encryption algorithms be available than are currently provided by default in Java 6/Java 7. This is so that Oracle can avoid the complications that arise from countries that place import restrictions on encryption technology. The stronger encryption algorithms are available as an optional download where the user takes responsibility for compliance with the local laws. For Java 6: JCE Unlimited Strength Jurisdiction Policy For Java 7: JCE Unlimited Strength Jurisdiction Policy Once downloaded, extract the contents to (and overwrite the existing contents of) the Java security library directory on all nodes. e.g. $JAVA_HOME/lib/security/ |
Network settings | |
Reserved ports |
There are a number of ports that will be reserved by MultiSite Plus. It's possible to change these ports after completing the installation - 6. Update a node's properties. The default values suggested during the installation are the following: 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 SVN 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 Plus management interface. jetty.https.port An integer between 1 - 65535 (Default: 8082) The jetty port is used for the MultiSite Plus management interface when SSL encryption is enabled. Make each port different |
Firewall or AV software |
If you have a virus scanner running on the system housing your repositories and replicator you should:
|
Full connectivity |
MultiSite Plus requires full network connectivity between all nodes. Ensure that each node's server is able to communicate with all other servers that will host nodes in your MultiSite Plus installation. |
VPN |
Set up IPsec tunnel , and ensure WAN connectivity.
|
VPN persistent connections |
Ensure that your VPN doesn't reset persistent connections for SVN MultiSite Plus. |
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. It's possible to change these details after completing the installation - 6. Update a node's properties. |
Monitoring |
SVN MultiSite Plus provides a limited system for monitoring system disk space available. This monitor is intended only to provide a deployment with a last line of defence against running out of storage space. We recommend that you deploy a system-wide monitor that ensures that you quickly identify potential problems that could impact services. Monitor Recommendation |
Load Balancing |
The use of a correctly configured load balancer can greatly benefit performance in situations where there could be large numbers of concurrent SVN users. However, SVN MultiSite Plus requires that any load balancing solution has the following features:
|
MultiSite Plus setup | |
Replication Configuration |
Read our Replication Setup Guide for information on how to optimise your replication - Replication Setup. |
Voters follow the sun |
To ensure best performance, make sure that SVN MultiSite Plus can deliver the content of a commit to another local node. SVN MultiSite Plus normally requires that content reach at least one other node for data integrity purposes. As the content normally represents the bulk of the data in a commit, having a second local node available will improve performance. Furthermore, you may wish to use our scheduling system to modify the voter roles so a proposal may be accepted by local voter nodes during regular working hours. If you need more help with setting up the most efficient deployment please get in touch with our support team. |
Disk space for recovery journal |
Provision enough disk space for /opt/wandisco/multisite-plus/replicator/database to cover the expected number of commits for four hours of peak usage.
|
License Model |
SVN MultiSite Plus is supplied through a licensing model based on the number of nodes and users. WANdisco generates a license file matched to your agreed usage model. Evaluation LicenseTo simplify the process of pre-deployment testing SVN MultiSite Plus is supplied with an evaluation license. This type of license imposes no restrictions on use but is time-limited to an agreed period.Production LicenseCustomers entering production need a production license file for each node. These license files are tied to the node's IP address. In the event that a node needs to be moved to a new server with a different IP address customers should contact WANdisco's support team and request that a new license be generated. Production licenses can be set to expire or they can be perpetual.Special Node TypesSVN MultiSite Plus offers additional node types to provide limited sets of functionality: Passive Nodes (Learner only) - A passive node operates like a slave in a master-slave model of distribution. Changes to its repository replicas only occur through inbound proposals, it never generates any proposals itself. Voter-only nodes (Acceptor only) - A voter-only node does not contain repositories. It casts votes based only on the basis of replication history without knowing the actual contents of the proposal data. These limited-function nodes are licensed differently from active nodes. 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. Speak to WANdisco's sales team for more details. |
SVN MultiSite Plus uses a new version of WANdisco's DConE replication engine and has a different architecture compared with earlier versions of MultiSite. As a result there are some special considerations when migrating from SVN MultiSite 4.x
Repository replicas must be byte-for-byte mirrors of each other. This stringent requirement did not apply to SVN MultiSite 4.x - the previous tests for whether replicas are identical are not sufficient for FSFSWD replication (see 4.2 vs Plus, below). As a result you will need to recreate your replica repositories using a nominated master repository.
The exact process of copying repositories may need to be carefully thought out in order to be practical and achievable. Many production repositories will take a long time to checksum. If you are in any doubt about handling the process, talk to your WANdisco account manager.
4.2 vs Plus
SVN MultiSite 4.2 replication is done using a proxy that sits between SVN and clients that replays commit operations from the users on the repository via Apache and so constructs a new transaction at every node. In contrast, SVN MultiSite Plus applies the same FSFS db/transactions at each node. This transaction is constructed based on the contents of the rev files - so with FSFSWD the repositories need to be identical at the revision (and revprop) file level.
SVN MultiSite Plus opens up more options because MultiSite is no longer running as proxy and options that were previously not compatible with MultiSite now are compatible.
The installation guide runs through setting up SVN MultiSite Plus for the first time. If you are upgrading from an earlier version of SVN MultiSite Plus 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.
Before we begin, here is a recap of the installation process:
Alert
Important: use Oracle JAVA JDK 7
All our development and testing is done using JDK 7. You will need to use JDK 7 to ensure compatibility with SVN MultiSite Plus. It may be possible to run SVN MultiSite Plus with other versions of Java, although we won't presently be able to support it.
Some things you should bear in mind before starting the installation:
This procedure requires the entry of various settings into the terminal session during the installation. You can run the installation in a non-interactive mode which doesn't require user input (until then post-installation browser-based set up). To use the Non-interactive mode, see Non-interactive Installation
svn-multisite-plus.sh
installer file to your Installation site.chmod a+x svn-multisite-plus.sh
Running with Apache?
Run both SVN MultiSite Plus and Apache with the same user.
Back up any existing Apache configuration files
Once the installation is complete perform a verification that no changes have been made during the installation that will impact your operation.
[root@redhat6 wandisco]# chmod a+x multisite-plus.sh [root@redhat6 wandisco]# ./svn-multisite-plus.sh Verifying archive integrity... All good. Uncompressing WANdisco SVN MultiSite Plus.................... :: :: :: # # ## #### ###### # ##### ##### ##### :::: :::: ::: # # # # ## ## # # # # # # # # # ::::::::::: ::: # # # # # # # # # # # # # # ::::::::::::: ::: # # # # # # # # # # # ##### # # # ::::::::::: ::: # # # # # # # # # # # # # # # :::: :::: ::: ## ## # ## # # # # # # # # # # # :: :: :: # # ## # # # ###### # ##### ##### ##### Welcome to the WANdisco SVN MultiSite Plus installation Checking prerequisites: Checking for perl: OK Checking for svn: SVN MultiSite Plus requires a compatible version of SVN to be installed. Install SVN? [Y] > Y Installing SVN 1.8.3-1
Install mod_dav_svn? (Y/n) Y Stopping httpd: [ OK ] Starting httpd: [ OK ] OKSelect "Y".
INFO: Using the following Memory settings: INFO: UI: -Xms128m -Xmx1024m INFO: Replicator: -Xms1024m -Xmx4096m Do you want to use these settings for the installation? (Y/n) YEnter "Y" if these heap settings will suit the needs of your deployment, then enter your preferred values. If you have any doubts, discuss the heap requirements with WANdisco's support team before going into production.
Which port should the MultiSite UI listen on? [8080]:We use port 8080 in our documentation. If that port is okay, press Enter. Check with your network administrator about which ports are available. You can change the port during the next part of the installation.
We strongly advise against running SVN MultiSite Plus as the root user. Which user should SVN MultiSite Plus run as? wandisco Do you want to continue? (Y/n)Y Which group should SVN MultiSite Plus run as? wandiscoIn this example we have system user and group set up for 'wandisco'. Also, take note of the above warning about not running SVN MultiSite Plus with a different user account.
MultiSite user: wandisco MultiSite group: wandisco MultiSite UI Port: 8080 MultiSite UI Minimum memory: 128 MultiSite UI Maximum memory: 1024 MultiSite Replicator Minimum memory: 1024 MultiSite Replicator Maximum memory: 4096 Do you want to continue with the installation? (Y/n) yEnter "Y" unless you want to make changes to any of these choices.
Starting ui:[ OK ] .......... Please access the Web UI with a browser at the following address - http://ip-10-0-100-152:8080/multisite-local Installation Completee.g.
Welcome to SVN MultiSite Plus.
You're about to run through the installation, which should only take a couple of minutes.
If you run into difficulties on the way, check our documentation or talk to our support team through the Customer Support Website.
Before you click Next, make sure you Read the Installation Checklist
Can I just enter the same details?
No, while you could enter exactly the same details for each node, encrypted password would not match. You've got to copy the users.properties file, there's no shortcut. In the event that this has been done, you can match up the neccessary details using the procedure for Matching a node's admin settings.
Important
If you are providing a users.properties file, take extra care to select the correct file. You won't be warned if the file is invalid and selecting the wrong file will prevent you from connecting the node to the replication network.
Temporary limitation
Node names can not contain spaces or ".".
A word about trust stores and key stores
You might be familiar with the Public-key system that allows two parties to use encryption to keep their communication with each other private (incomprehensible to an intercepting third-party). The keystore is used to store the public and private keys that are used in this system. However, in isolation, the system remains susceptible to the hijacking of the public key file, where an end user may receive a fake public key and be unaware that it will enable communication with an impostor. Enter Certificate Authorities (CAs). These trusted third parties issue digital certificates that verify that a given public key matches with the expected owner. These digital certificates are kept in the trust store. An SSL implementation that uses both keystore and trust store files offers a more secure SSL solution.
If you need help getting your SSL keys set up, check out our guide in the Appendix - Setting up SSL
Temporary duplication of license agreement
Currently the license agreement is presented twice - once during installation and then here, when the first end user logs in. In a future release we'll phase out is end-user agreement screen to remove the apparent duplication.
It's now possible to install SVN MultiSite Plus non-interactively. To do so the following environment variables must be set:
A scripted start to the installation requires the running of the following command:
MSP_USER=wandisco MSP_GROUP=www-data MSP_UI_PORT=9999 export MSP_USER MSP_GROUP MSP_UI_PORT ./svn-multisite-plus.shThe installation will then run without user interaction. Once installation is completed, the browser-based UI will start. You'll then need to complete the node set up from step 10.
Now repeat section 3 for each node that you wish to share your SVN repositories - note that we will take the configuration files from the first node and use them during the installation of all additional nodes to ensure that all nodes are started with the same administrator account - a requirement for a successful induction.
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.
Same Location
All replicas must be in the same location (same absolute path) and in exactly the same state before replication can start.
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.
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.
It's important that sites are connected together in a specific sequence. Run through the following steps to ensure that your sites are all able to talk to each other:
If the induction process fails for whatever reason you may be left with the inductee in a pending state.
We ensure that all nodes start with a common admin account by importing the admin settings from the first installed node during the installation of all subsequent nodes. In the event that a node is accidently installed without this match you can use the following procedure to resync them. You'll need to follow this if you wish to induct the mismatched node into a replication network that includes the other nodes.
/opt/wandisco/svn-multisite-plus/replicator/import/security-export.xml
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.
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.
Replication Group Validation
The admin UI won't let you create a replication group that doesn't meet the requirement set by DConE, for example, the proposed replication group must not have an even number of "acceptor" nodes (without also having a tie-breaker. When the selected member nodes don't make a valid replication group, the "Create Replication Group" button will be disabled (greyed out).
Create Replication Group
Local node automatically made the first member
It's not possible to create a replication group remotely - the node on which you are creating the group must itself be an member.
For this reason, when creating a replication group, the first node is added automatically.
Enter a name and add some nodes.
Change node type
Once you have added all sites and configured their type, click CREATE REPLICATION GROUP to see a groups details.Groups boxes, click QUICK VIEW view your options.
Once you have added at least one Replication Group you will be able to add repositories to your node. Here's how:
Repositories > ADD
Repositories > Enter details then click ADD REPO
Repositories listed