In an earlier posting I have tried to explain "Why you need at least 3 VDI hosts". It's also clearly documented that when you are using the standard VDI configuration you need to run at least your first two Secondary VDI hosts on bare-metal. This restriction is implied by MySQL Cluster see MySQl Cluster FAQ 23.10.13. Running MySQL Cluster in a fully virtualized environment is not supported. As VDI is - well - all about virtualization certain people almost naturally try to install and run VDI itself in a virtualized environment until they realize that it is unsupported. While running MySQL Cluster and hence VDI in a fully virtualized environment remains an unsupported configuration this doesn't mean it strictly doomed to fail. Check out this interesting posting on the topic in the MySQL forum: "Cluster is capable of running within a VM but it is not recommended for production purposes because Cluster is sensitive to latency. I'd worry that additional latency would be imposed by the VM layer. You may need to adjust some timeouts to account for the additional latency...".

By adjusting certain MySQL Cluster parameter you may actually be able to get it to work successfully. Take a look at "Defining MySQL Cluster Data Nodes". MySQL Cluster parameters you may need to adapt to stabilize the MySQL Cluster in a virtual environment are for instance:

  • ArbitrationTimeout
  • HeartbeatIntervalDbDb
  • HeartbeatIntervalDbApi
  • TimeBetweenEpochsTimeout
  • TimeBetweenInactiveTransactionAbortCheck
  • TimeBetweenWatchDogCheck
  • TransactionDeadlockDetectionTimeout
It's worth a try for the brave hearts at least. ;)