##// END OF EJS Templates
dependencies: added alternative pymysql drivers for mysql
dependencies: added alternative pymysql drivers for mysql

File last commit:

r1:854a839a default
r2779:dbd9f272 default
Show More
multi-instance-setup.rst
91 lines | 3.3 KiB | text/x-rst | RstLexer
/ docs / tutorials / multi-instance-setup.rst
project: added all source files and assets
r1 .. _multi-instance-setup:
Scaling |RCE| Using Multiple Instances
======================================
Running multiple instances of |RCE| from a single database can be used to
scale the application for the following deployment setups:
* Using dedicated Continuous Integrations instances.
* Locating instances closer to geographically dispersed development teams.
* Running production and testing instances, or failover instances on a
different server.
* Running proxy read-only instances for pull operations.
If you wish to run multiple instances of |RCE| using a single database for
settings, use the following instructions to set this up. Before you get onto
multiple instances though, you should install |RCE|, and set
up your first instance as you see fit. You can see the full instructions here
:ref:`Installing RhodeCode Enterprise <control:rcc>`
Once you have configured your first instance, you can run additional instances
from the same database using the following steps:
1. Install a new instance of |RCE|, choosing SQLite as the database. It is
important to choose SQLite, because this will not overwrite any other
database settings you may have.
Once the new instance is installed you need to update the licence token and
database connection string in the
:file:`/home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file.
.. code-block:: bash
$ rccontrol install Enterprise
Agree to the licence agreement? [y/N]: y
Username [admin]: username
Password (min 6 chars):
Repeat for confirmation:
Email: user@example.com
Respositories location [/home/brian/repos]:
IP to start the Enterprise server on [127.0.0.1]:
Port for the Enterprise server to use [10000]:
Database type - [s]qlite, [m]ysql, [p]ostresql: s
2. The licence token used on each new instance needs to be the token from your
initial instance. This allows multiple instances to run the same licence key.
To get the licence token, go to the |RCE| interface of your primary
instance and select :menuselection:`admin --> setting --> license`. Then
update the licence token setting in each new instance's
:file:`rhodecode.ini` file.
.. code-block:: ini
## generated license token, goto license page in RhodeCode settings to get
## new token
license_token = add-token-here
3. Update the database connection string in the
:file:`rhodecode.ini` file to point to your database. For
more information, see :ref:`config-database`.
.. code-block:: ini
#########################################################
### DB CONFIGS - EACH DB WILL HAVE IT'S OWN CONFIG ###
#########################################################
# Default SQLite config
sqlalchemy.db1.url = sqlite:////home/user/.rccontrol/enterprise-1/rhodecode.db
# Use this example for a PostgreSQL
sqlalchemy.db1.url = postgresql://username:password@localhost/rhodecode
4. Restart your updated instance. Once restarted the new instance will read
the licence key in the database and will function identically as the
original instance.
.. code-block:: bash
$ rccontrol restart enterprise-2
If you wish to add additional performance to your setup, see the
:ref:`rhodecode-tuning-ref` section.
Scaling Deployment Diagram
--------------------------
.. image:: ../images/scaling-diagrm.png
:align: center