Customizing Installs

Predefined Installs

By default, lxinst installs components to exploit the machine(s) used for the install.

It is possible to perform small installs using flag -s like in

unix$ lxinst -s /usr/local/leanxcale

And, it is possible to perform medium size installs using flag -m, as in

unix$ lxinst -m /usr/local/leanxcale

A small install limits the number of kvds to 4, and per-component memory to 1GiB.

A medium install limits the number of kvds to 8, but does not limit per-component memory and tries to use the default allocation policy.

Custom Install Configurations

Installs are configured using a file that describes the hosts and components installed. The file may include properties for the whole installation, or for individual hosts and components.

To perform custom installations, use a configuration file. You can fine-tune your installation in order to adapt the default installation to your needs, resources, and requirements.

The configuration file describes hosts and components installed.

To install using a configuration file, use the lxinst flag -f to use it, as in:

unix$ lxinst -f myinstall.conf

Configuration File

The configuration file has an initial section describing global properties, then a series of hosts each one including a series of properties and a series of components with properties.

The file consists of plain text lines. The character # can be used to add comments (the rest of the line is ignored). Each line declares a property, perhaps with a value, or starts a host or component declaration.

Lines declaring hosts start with host, those declaring components start with a component type name. All other lines declare properties.

A host configuration starts using the host keyword and the name for the host (which usually is the host name used to reach the host on the network). It is recommended to use the host name instead of using localhost.

A property is declared with a single line with the property name, then blanks, and then the property value. If the property has no value, it is considered as a boolean and it is set to true.

Properties declared before the first host declaration are global, and may be overridden later by properties defined within a host or component.

All declarations after a host declaration are defined for that host, until another host declaration is found.

All properties defined a component declaration, before another one is declared, are defined for that component.

Those required components and properties not specified by the user are added by the install program with default values.

Variables HOME and USER may be used when defining properties. The variable LXDIR may be used as well and refers to the install (or disk) directory for the host or component.

A component may be repeated adding the option x N to specify how many instances are wanted. When not used, each component declared stands for a single component, but many of the same type can be added for components like kvds.

For docker installs, specify docker before the first host.

For example, when installing at the host named atlantis, this can be a configuration file:

# global properties
lxdir   $HOME/leanxcale
# one host
host atlantis
    # one component
    lxqe
        # properties for this component
        addr atlantis!3444
        mem 2G
    # another component kvds with 4 instances
    kvds x 4
        mem 1G

In this file, the property lxdir (leanXcale install directory) is defined as a global property, and applies to all hosts defined.

Then, a single host (atlantis) is defined. When no host is configured, localhost is used as the default.

For the configured host, two of the required components are configured:

  • For the lxqe component, the network address for the service is given (host name and port), and the memory size is set to 2GiB (Gibibyte, i.e. 1024 MiB).

  • For the kvds component, four instances are configured (x 4), each one with 1GiB of memory.

Note that components required (e.g. lxmeta) but not specified are added by the install program itself.

Docker configuration files

For a docker installation, specify docker and try not to specify specific paths or hostnames for the installed system. For example:

docker
host lx1
    kvds x2

Custom Memory Allocation

The installer has a default memory split allocation among components. To specify the memory size for the lxqe and kvds components we can include them in the configuration file and include the mem attribute for them, as done here:

host atlantis
    lxqe
        mem 4G
    kvds x4
        mem 1G

It is suggested not to use more memory in total than the physical memory available on the system (minus the one used by the operating system and leaving a small amount unused for safety).

We suggest to give half the memory to the lxqe component and the other half to all the kvds components (evenly distributed).

Note that by default the install tries to use available memory, unless a small or medium install was selected.

Custom Disk Allocation

To specify the maximum disk size for the disk usage, specify it for the components using a significant space on disk (most notably kvds for table storage, and lxqe for the transactional log). For example:

host atlantis
    lxqe
        disk 100G
    kvds x4
        disk 100G

Custom Query Engine Ports

The network address (including port) used by the query engine to listen for client connections is 14420. To use another port, specify the network address for the lxqe component:

host atlantis
    lxqe
        addr atlantis!3000

But it may be easier to move the base port address used to a range other than 14000. This can be done defining the global (or host) property baseport, as done here:

host atlantis
    baseport 10000

Refer to the [LeanXcale Components and Ports] section for more details regarding network port usage.

Custom Optional Components: OpenDATA and Monitoring

To install optional components, specify them in the configuration file. It is customary to add them on the first host installed. For example:

host atlantis
    stats
    odata

adds both stats and odata to the installation. As they are optional components, they are never installed by default.

The OpenDATA port is usually 14004 unless configured otherwise.

The default user and password for the stats web page is lxadmin.

Other Configuration Options

Here we provide more details on configuration files.

This property defines the directory used by the install, and relies on the HOME environment variable on each host involved:

lxdir   $HOME/xamplelx

To use a host just for stats, without any DB component, use only as the value for the stats property:

host atlantis
    # run stats here using other hosts for DB components
    stats only

To include a web interface in your install, add web as a property for the host. The server port is 5000. For example:

host atlantis
    # this enables a web server
    web

In some cases it is desirable to install one host with just the lx command, to operate the rest of the hosts installed (perhaps just during the install process). For example, when installing from a laptop and wanting to have the lx command installed at the laptop to operate a set of hosts being installed.

This can be done adding the nodb attribute to a host. For example:

# localhost is just to run lx cmds w/o db components
host localhost
    lxdir $HOME/xamplelx
    nodb

# installed host
host atlantis
...

Specific ssh and scp commands may be given to reach the installed hosts. Should the installed hosts use different ssh and scp command to reach each other, properties sshi and scpi can be used to given them.

This is an example:

host atlantis
    # from the current location:
    ssh     "ssh leandata@lsdclus04.ls.fi.upm.es -p 22124"
    scp     "scp -P 22124 {src} {user}@lsdclus04.ls.fi.upm.es:{dst}"
    # ssh/scp to be used within the installed hosts
    sshi    "ssh {user}@{host}"
    scpi    "scp {src} {user}@{host}:{dst}"

Replication

Hosts may be replicated, but either all hosts must have replicas or none of them. To define a replica for a host, add another host and define mirror for it using the replicated host name as the property value. For example:

host blade120
host blade121
host atlantis
    mirror blade120
host blade125
    mirror blade121

configures a system with two replicated hosts. That is, four hosts where two ones are a mirror of the other two ones.

In replicated configurations, the set of initial hosts is designated as the first replica (or replica-1) and the mirror hosts are known as the second replica.

Component names in this case include a final .r1 or .r2 to reflect the replica they belong to. For example, kvds100.r1 is likely to be a component in this configuration.

AWS Options

When using a configuration file, just define the property aws before anything. You can specify the region, instance type, disk size, and AWS tag. The disk size is in GiB. The tag is a string and should not include blanks.

For example, using this file:

#cfgfile aws.conf
aws
awstype m5.large
awsregion us-east-1
awsdisk 100
host lx1

you can run:

unix$ lxinst -K key -f aws.conf

This can be done also using the command line:

unix$ lxinst  -K xkey aws awsregion us-east-1 awstype m5.large awsdisk 100

The partition mounted at /usr/local/leanxcale for the DB storage is 30GiB by default. You can change this using the aswdisk property. It is formatted using a compressed ZFS.

In the installed system, the user running the DB is lx, and LeanXcale is added to the UNIX system as a standard (disabled) systemd service. The instance is left running. You can stop it on your own if that is not desired.

To install multiple instances, install using multiple host names:

unix$ lxinst -K key aws lx1 lx2
install #cfgfile: argv aws lx1 lx2...
...
aws instance i-03c781120293253fd IP 54.159.42.233
setup instance #1...
...
aws instance i-0d2b2403b2d1e25e1 IP 3.89.224.85
setup instance #2...
...
install done
created lxinst.uninstall

    #To dial the instances:
        ssh -o StrictHostKeyChecking=no -i lxinst.pem lx@18.212.188.66
        ssh -o StrictHostKeyChecking=no -i lxinst.pem lx@100.24.60.220

By default, private IP addresses for hosts are in 10.0.120.0/24. To use a different network, keep 10.0 and pick your own 3rd byte as in

unix$ lxinst -K xkey aws awsnet 10.0.130