Skip to content
This repository has been archived by the owner on Aug 19, 2018. It is now read-only.

Installation

cb-dtf edited this page Jul 12, 2016 · 8 revisions

Before the configuration and general installation procedure, please consider this overview to help plan your installation.

Halcyon configuration infrastructure

The service layer is primarily built from this github code source, altough there are some storage dependencies that will be briefly covered here.

Standalone mode version Grid mode is basically a question if you need to use this for personal or development use (standalone), or in a larger more dedicated setup (gridmode).

Storage

Types

  • Asset: Storage of immutable assets (better explanation is very much welcome)
  • Inventory: All the users stuff
  • Datastorage: General server data, there exist a lot of different modules that use SQL as the default storage mechanism.

These default storage types is covered by a default mechanism, its not impossible to change the data layer in Halcyon, its just not done yet.

  • Whip (Asset): Specialized peace of software for this purpose https://github.com/InWorldz/whip-server
  • Cassandra (Inventory): Performant key/value noSQL storage
  • MySQL: SQL storage (currently only MySQL is supported) works as the goto place for all non-performance related storage.

Service

In case of using grids, there exist 3 services mainly in use

  • Halcyon: The main program, this can (if set) rely on a UserServer and a GridServer called "Grid mode"
  • GridServer: Basically divide the world in areas, allowing multiple servers to host multiple regios with access to one another.
  • UserServer: Abstraction of all user authentication to a single user service.
  • MessagegingServer: (Please provide a fitting description here)

Installation of components

Consider installing all storage related services inside a Virtual machine, this will allow us some abstraction in service, and therefore allows us to only install "on-demand" services on the local development environment. (VirtualBox with a Debian is working well)

Installation guide of storage machine

1: Install Virtualbox

Install: VirtualBox 5.0.22 for Windows hosts https://www.virtualbox.org/wiki/Downloads

2: Install Debian 8.5 (Jessie) in Virtualbox

Netinstall AMD64 found in https://www.debian.org/releases/jessie/debian-installer/

  • Memory: 4 Gb
  • Network: Host Adapter

Use the default disk settings (full disk) Install with no modules but “SSH tools” and “Utilities”

3: Install cassandra 3.7 on debian

Cassandra default installation OS is Debian, use the following command to add the repo (in console or via ssh)

These commands are executed as root

Open sources list, add Cassandra 3.7, then save in

/etc/apt/sources.list

#Cassandra 3.7
deb http://www.apache.org/dist/cassandra/debian 37x main
deb-src http://www.apache.org/dist/cassandra/debian 37x main

#Java 8
deb http://http.debian.net/debian jessie-backports main

Add keys

    gpg --keyserver pgp.mit.edu --recv-keys F758CE318D77295D
    gpg --export --armor F758CE318D77295D | apt-key add -

    gpg --keyserver pgp.mit.edu --recv-keys 2B5C1B00
    gpg --export --armor 2B5C1B00 | apt-key add -

    gpg --keyserver pgp.mit.edu --recv-keys 0353B12C
    gpg --export --armor 0353B12C | apt-key add -

Update packages and install Java & Cassandra

    aptitude update
    aptitude install openjdk-8-jdk
    aptitude install Cassandra

See more here https://wiki.apache.org/cassandra/DebianPackaging

4: Install MySQL Database on Debian

    aptitude install mysql-server

5 Setup networking connectivity

When all components have been installed, we want to ensure connectivity between the two virtual machines reliably.

On the Debian server, run the following command

    nano /etc/network/interfaces

Ensure that the configuration looks similar to this (based on desired IP)

#The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 10.0.2.10
        netmask 255.255.255.0
        network 10.0.2.0
        broadcast 10.0.2.255
        gateway 10.0.2.1

Restart the network interface

/etc/init.d/networking restart

Inside the Virtual Machine, make sure the network card is connected to the host virtual adapter, so we can ping between the host and the virtual machine.

6 MySQL Configuration

Edit the MySQL configuration /etc/mysql/my.cnf to use the following.

bind-address            = 10.0.2.10

Restart the database

/etc/init.d/mysql restart

Create mysql user and setup proper permissions to access data

mysql -p
CREATE DATABASE inworldz;
CREATE USER 'inworldz'@'%' IDENTIFIED BY ‘OperationPassword’;
GRANT ALL PRIVILEGES ON inworldz TO 'inworldz'@'%';

Initialize the database on windows Given the default installation dir of halcyon was used on windows, adjust your root pass and run the following inside cmd.

C:\Dev\halcyon\bin\hc-database.exe --init --type core -h 10.0.2.10 -u inworldz -p OperationPassword

7 Cassandra database status

Test if the database is running: /etc/init.d/cassandra status

try local connect

cqlsh

Cassandra does not provide any monitoring by itself, use netstat -c to keep an eye on the incoming connections

Whip setup

Run the following commands ( you may want to adjust the download link accordingly https://github.com/InWorldz/whip-server/releases)

aptitude install libboost-all-dev -y
mkdir /etc/whip
mkdir /etc/whip/assets
wget https://github.com/InWorldz/whip-server/releases/download/v5.0/whip-v5.0.tar /etc/whip
tar -xvf /etc/whip/whip-v5.0.tar
useradd -M whip
chown whip:whip /etc/whip -R

Now add a init.d script that will help us start and stop whip automatically. create the file /etc/init.d/whip (using nano or vi) with the following

#! /bin/sh

cd /etc/whip

case "$1" in
  start)
    echo "Starting whip"
    su whip -c "/etc/whip/whip > /dev/null 2>&1 &"
    ;;
  stop)
    echo "Stopping whip"
    skill -u whip
    ;;
  *)
    echo "Usage: /etc/init.d/whip {start|stop}"
    exit 1
    ;;
esac

exit 0

Afterwards adjust permission and register the service accordingly

chmod 755 /etc/init.d/whip
update-rc.d whip defaults

Move over the whip configuration (and adjust it to your needs)

mv /etc/whip/whip.sample.cfg /etc/whip/whip.cfg
nano /etc/whip/whip.cfg