Turbo Lamp Bundle
This is a bundle to deploy the Turbo LAMP stack. LAMP is an acronym for a bundle of software including Linux, Apache, MySQL, and PHP.
In this case the Turbo LAMP stack is a bundle that contains software optimized for Linux running on Power8 Little Endian (ppc64le). This bundle also happens to work on Linux on Intel x86_64 hardware (amd64).
The Turbo LAMP stack contains the latest version of Ubuntu Linux, Zend-Server as the Apache HTTP server and the PHP component, Mariadb replaces the MySQL, and using Mellanox networking technology to optimize the network bandwith between the virtual machines.
Ubuntu Server 14.04 LTS
Ubuntu Server 14.04 is the latest Long Term Stable (LTS) release supported by Canonical for five years. Ubuntu is a OpenSource Linux distro based on Debian with support for Power8 Little Endian. It is the leading platform for scale-out computing.
Whether you want to deploy an OpenStack cloud, a Hadoop cluster, or a Turbo Lamp Stack, Ubuntu Server delivers the best value scale-out performance.
With complete tool chain and package support for Power8 Little Endian Ubuntu Server 14.04 LTS provided the software foundation for the Turbo Lamp Stack. Ubuntu Server 14.04 LTS ran as a Power KVM guest housing MariaDB, Zend Server, and the latest Mellanox drivers all tuned for Power8 Little Endian.
Metal as a Service (MAAS) is an OpenSource tool that brings the language of the cloud to physical servers. It makes it easy to setup the hardware on which to deploy any service that needs to scale-out dynamically. MAAS allows system administrations to treat their private bare metal hardware, such as Power8 Little Endian servers, as an elastic cloud. MAAS enlists physical or virtual machines through which Juju can deploy workloads onto be it on the bare metal or through a virtualization mechanism such as Linux Containers (LXC) or Kernel-based Virtual Machine (KVM).
In the Turbo LampStack Solution MAAS was provisioned onto a “command-and-control” PowerKVM. Five other separate Power KVMs were provisioned, and enlisted in MAAS as resources to deploy services onto by their MAC addresses.
Each Power KVM was specifically configured to have resources needed for the corresponding workload. Specifically, the Power KVMs that MariaDB and Zend would be deployed to had a Mellanox NIC attached to it, and the appropriate memory and CPU resources were also provisioned to meet the needs of the workloads.
When MariaDB, Zend-Server, and Mellonox services were ready to be deployed Juju would make requests to MAAS server via the MAAS API. MAAS would then power on the PowerKVM install a fresh Ubuntu 14.04 LTS image onto the target Power KVM ready the environment for Juju to deploy services
Juju is an OpenSource service orchestration tool to configure, manage, maintain, deploy and scale solutions to any public, private, or hybrid cloud from a powerful GUI or the command-line. Juju describes how software should be deployed in software called “Charms.” Charms distill the development and operational knowledge needed to deploy a service. This includes configuration, deployment, connections [to other services], and scaling. Charms also embed the best practices and performance tuning for a given service operating in an specific environment. The paradigm shift is now the environment can be tuned for optimal performance of the service. Furthermore, the deployment of the service can be repeated in different environments or the same environment and shared with colleagues. The Charm can also expose configuration parameters the user may want to set such as to install Magento or Wordpress in the Zend-Server charm. Thus a Juju user can focus on the solution and not worry about the operational aspects of the workload deployment as these are encapsulated in the Charm or bundle.
In the Turbo Lamp stack solution the experts at MariaDB, Zend, and Mellanox distilled their development, operational, best practices, and performance knowledge into the Charm to deliver an optimal deploy on Power8 Little Endian. The goal being to create an “executable white paper” so users don’t have to replicate the expertise at MariaDB, Zend, or Mellanox and can repeat the Turbo Lamp Stack solution in their local environment.
The MariaDB charm installs an optimized binary for Power8 Little Endian. Among other features the Charm provides a method for Zend to connect to and create databases which is most applicable to the Turbo Lamp stack solution.
The Zend Charm installs Zend Server which acts as a PHP framework to deploy and monitor PHP applications. The Charm also provides config options allowing the user to choose Mangento and/or Wordpress to be served out. These config options are set to a default of true so on deploy of the Zend Server charm Magento and Wordpress are served out by Zend Server. The Zend Charm also implements methods to connect to HAProxy to produce a Zend Server Cluster for scaling and methods to connect to MariaDB for a data warehouse.
The Mellanox Charm is a special type of charm called a subordinate. A subordinate charm is colocated on the same machine as another service and shares the same file system. The Power KVMs that MariaDB and Zend are deployed on needed newer Mellanox drivers, and optimizations specific to Power. Thus, having Mellanox as a subordinate charm fit this need perfectly to install drivers and performance tuning.
To graphically represent the deployment topology the Juju GUI was also deployed. It too is a Charm and provides a web based view of the deployed environment. In the default view one can see the services deployed and their connections.
In the Machine View tab users can see the machines or instances currently being used. This is helpful to understand how a particular services is being scaled.
This Bundle is optimized for deployment on Power8 Little Endian with Mellanox ConnectX-3 NIC (IBM Power 8 PCIe3 LP 2-Port 40GbE NIC RoCE QSFP+ Adapter FC EC#A/EC3B) distributing traffic between Zend Server and MariaDB. A Mellanox card should be attached to both the Zend Server instance/machine and MariaDB instance/machine. This particular solution was designed with MAAS in mind but can also be deployed on any supported cloud or where Ubuntu SSH access is available.
After setting up your hardware environment deploy the juju-gui:
juju deploy trusty/juju-gui juju expose juju-gui juju status
Look for the public-address for juju-gui. Enter the address in your browser.
In the subsequent deploy Juju GUI search for "Tubo Lamp" in the Juju GUI. Choose to deploy the bundle to the Canvas.
Further Reading links
Ubuntu Server 14.04 LTS
General Information: http://www.ubuntu.com/server
Server Management: http://www.ubuntu.com/server/management
Ubuntu Server in the Cloud: http://www.ubuntu.com/cloud
Download Ubuntu Server: http://www.ubuntu.com/download/server
Installation Guide: http://www.ubuntu.com/download/server/install-ubuntu-server
MAAS General Information: http://www.ubuntu.com/cloud/tools/maas
MAAS Home Page: http://maas.ubuntu.com/
MAAS User and Development Documentation: http://maas.ubuntu.com/docs1.5/install.html
Juju General Information: http://www.ubuntu.com/cloud/tools/juju
Juju Home Page: https://juju.ubuntu.com/
Install Juju: https://juju.ubuntu.com/install/
Juju User and Charm Author Documentation: https://juju.ubuntu.com/docs/
Try the Juju GUI: https://jujucharms.com/
Juju Core Source Code: https://github.com/juju/juju
The charms in this bundle:
The zend-server charm has more information on the optimized PHP server.
The mellanox charm contains more details on the Mellanox adapters and how to use Mellanox software as a subordinate to other charms.
The mariadb charm is a full replacement for the MySQL database.
The haproxy charm spreads out the http load if there are multiple units of zend-server