Forum: Installation

Post: VoltDB on VMs and other questions

VoltDB on VMs and other questions
bdutta
Aug 12, 2015
Hi,

After reading some forum posts and the 'Run VoltDB on VMware' article I see that VoltDB can be run on VMware Player/Workstation.
I note that the VoltDB VMware VM image (http://voltdb.com/run-voltdb-vmware) is setup to use 2GB RAM and 2 CPUs. Can it somehow be modified to have much lower RAM requirements (say 512MB), though 2 vCPUs is fine.

Could the above VM image be used to demonstrate (a proof-of-concept) partitioning and durability ? My understanding is that I need 2 such VMs (with 2 vCPUs each, to configure 2 partition, with k=1), is it that right ?

Also, is there a easy-to-understand way to demonstrate to people who are not extremely technical, aspects like
- durability, say by bringing one server down, and then check/show what ? logs ? status of node via CLI ?
- data partitioning, s.a. by running 2 different queries, that are served by 2 different partitions - but can this be demonstrated, say from logs ?

From client standpoint, how would it be possible to show transparent to outage & recovery of a VoltDB node, s.t. client application is unimpacted ? Could a 3rd VM image be used to run the client that uses the VoltDB server cluster running on the other 2 VMs ?

Are there any pre-recorded demos that demonstrate something similar to scenario described above ?

Thanks,
BDutta

PS> Question edited based reading of various Q&A on this forum and VoltDB documents, but to be honest, haven't spent a great deal of time.
pzhao
Aug 13, 2015
bdutta,

A simplest way to get a cluster up and running and to demo our product is to launch our cloudformation script, which starts a 3 server cluster. This can be run by registering for our software download and clicking on the 'download it' link from an email sent from VoltDB. Once you reach the VoltDB download page, there's a section called 'try VoltDB in the Cloud' as well as instructions on how to start the cluster.

I note that the VoltDB VMware VM image (http://voltdb.com/run-voltdb-vmware) is setup to use 2GB RAM and 2 CPUs. Can it somehow be modified to have much lower RAM requirements (say 512MB), though 2 vCPUs is fine.

Please refer to our operating system and software requirements page. If your demo can run sufficiently with 512MB of memory, that's great! If not, configure more memory as necessary.

Could the above VM image be used to demonstrate (a proof-of-concept) partitioning and durability ? My understanding is that I need 2 such VMs (with 2 vCPUs each, to configure 2 partition, with k=1), is it that right ?

This can be done in a VM or the CloudFormation mentioned earlier. With a VMs, you'll need to run multiple VMs or run multiple instances of VoltDB on a single VM. For demo purposes, I'd suggestion turning off network partitioning detection.

- durability, say by bringing one server down, and then check/show what ? logs ? status of node via CLI ?

I believe cluster availability is the idea you want to demo. This can be best demonstrated by having a client connect to all nodes in the cluster. Alternatively, you can connect to VMC on one of the nodes and kill the other server.

- data partitioning, s.a. by running 2 different queries, that are served by 2 different partitions - but can this be demonstrated, say from logs ?

While this is possible, perhaps an example of a partitioned table vs non partitioned table benchmark maybe a better approach?

From client standpoint, how would it be possible to show transparent to outage & recovery of a VoltDB node, s.t. client application is unimpacted ? Could a 3rd VM image be used to run the client that uses the VoltDB server cluster running on the other 2 VMs ?

The client can be run on the same machines as VoltDB is running on to simplify your setup. Cluster availability can be demoed by having the client connect to all the nodes in the cluster.

Are there any pre-recorded demos that demonstrate something similar to scenario described above ?

Please check out our VoltDB university videos to see if they suit your needs.

Peter Zhao
bdutta
Aug 14, 2015
Thanks, Peter - for the detailed answer. Please see some counter questions interspread inline.


A simplest way to get a cluster up and running and to demo our product is to launch our cloudformation script, which starts a 3 server cluster. This can be run by registering for our software download and clicking on the 'download it' link from an email sent from VoltDB. Once you reach the VoltDB download page, there's a section called 'try VoltDB in the Cloud' as well as instructions on how to start the cluster.


Demo/PoC we are trying needs to be on-premise. Reading the description on the trial SW page, I got the impression, that it is limited to be run as a single instance. I could be wrong - perhaps it can be used to setup a cluster of 3 nodes/instances using proper configuration ?


Please refer to our operating system and software requirements page. If your demo can run sufficiently with 512MB of memory, that's great! If not, configure more memory as necessary.


Requirements for the demo is to host just 2 different tables (replicated, not partitioned for the purpose of demo), with 1000 rows and 2 cols (a VARCHAR(20) and an INT col) each.

Read the HW-capacity section in the Planning Guide, but not sure that I understood it completely and did the right sizing -- especially keeping in mind that this is a demo, where performance demonstration is NOT the objective, but durability / HA is. Here's what I arrive at:

Process memory : 384 + (10x2) + (128x2) = 660MB
Content memory : 10MB (say)
Total min RAM: (660+10) + 30% = 871MB

Is the above computation correct ?


This can be done in a VM or the CloudFormation mentioned earlier. With a VMs, you'll need to run multiple VMs or run multiple instances of VoltDB on a single VM. For demo purposes, I'd suggestion turning off network partitioning detection.

I believe cluster availability is the idea you want to demo. This can be best demonstrated by having a client connect to all nodes in the cluster. Alternatively, you can connect to VMC on one of the nodes and kill the other server.

While this is possible, perhaps an example of a partitioned table vs non partitioned table benchmark maybe a better approach?

The client can be run on the same machines as VoltDB is running on to simplify your setup. Cluster availability can be demoed by having the client connect to all the nodes in the cluster.


- The multiple instances per server a for-demo-only configuration, or is it a valid production deployment configuration as well ?
- Can multiple instances per server be managed using VMC, in the same way as multiple nodes (separate servers) ?
- If I want to use only replicated tables, not partitioned (again - performance not being a concern for this demo), can I assign a single CPU core per instance ?
- Is VMC part of the standard trial VoltDB Enterprise software bundle or sold/licensed separately ? It there a command line equivalent for VMC ?
- Does VMC offer a mechanism to start/stop particular node of the cluster ? Or should stop be via Unix process kill to simulate node failure ?
- If I open connections to multiple servers, and one VoltDB server instance/node is brought down, would the client end sense it instantly ? Such as, due to some hearbeat mechanism, or only when a fired query (stored procedure) request lands on the server that was brought down ?