Manage the rhevh without rhevm
I am a software developer of a system management software and plan to support the rhevh as the hypervisor of virtual machine, but I am a little worry about the performance of rhevm for a large cluster that with more than 1000 hypervisors and 10,000 of virtual machines. Then I am investigating that whether it's possible to control the rhevh through the libvirt or vdsm interface of rhevh without the rhevm.
I tried use the virsh to connect to the rhevh, but failed with following error message:
error: packet 1181314145 bytes received from server too large, want 262144
error: failed to connect to the hypervisor
And I'll try to use the xmlrpc interface of vdsm to control the hypervisor.
Could some experienced guys help me out that whether it's possible to use the libvirt or vdsm to manage the rhevh?
Responses
1. Currently RHEV-M officially supports clusters up to 200 hosts in size. The cap can be lifted using rhevm-config, but you should keep in mind that 200 is the number of hosts that were tested. Depending on your infrastructure, more will or will not work, it's all a matter of management traffic and how fast it gets processed. The typical solution is to have RHEV-M manage several 200 host clusters, or to run a separate RHEV-M for every set of clusters, to distribute the load
2. Why would you want to control the hypervisors directly? In RHEV you should understand that RHEV-M is what keeps track of VMs and their configs, the hosts are only executing orders delivered from RHEV-M.
I think what you would need for a very large setup is a cluster of RHEV-Ms (there's a technical ref article for this) or to simply split up the management between several instances of RHEV-M, which you can manage with a cloud-like system
https://access.redhat.com/knowledge/techbriefs/setting-rhev-m-highly-available-cluster-rhev-30
In case you have a large setup, you have a way to create custom searches in the GUI, save them, an only use them as views into the setup with only a small set of results that are relevant to you.
You cannot install RHEV-M without the GUI, and it actually is a small portion, compared the the business logic parts and JBoss.
As for managing RHEV-H remotely, there are interfaces, but it was never designed to work that way, RHEV-M implements a lot of safety catches that without it will not be in place, and this can result in various issues in the setup. You can manage every aspect of the setup using the API on RHEV-M, and you have the very flexible GUI, I don't think there should be any reason to actually touch the hosts directly, except for troubleshooting and installation. If you have another use case, please share
RHEV-H is free, just like RHEL is, but you need to purchase service and upgrade subscriptions. Better discuss the entire issue of pricing with your sales representative, it's quite easy really.
As for JBoss and the rest, it comes prebuilt for RHEV-M, when you install RHEV-M, no need for a separate installation source
This is not up to the performance of the RHEV-M. Certainly, when you start a lot of VMs at once, you're bound for the monday morning effect, be it on RHEV or elsewhere. If the hosts are really powerful, no CPU/memory overcommit involved, you might be able to easily pull off starting all those VMs at once. Otherwise, you should start VMs in bunches (ctrl-click several and hit "Run" or write a script to do that), and depending on the hypervisor capabilities, you can see how many you can start at a single iteration, before you hit a bottleneck. I'd start with as many VMs as you have hosts in every go, delay of 1 minute, and then kick the next batch off, and increase the batch sizes from there.
I don't think we've ever measure that metric, but RHEV-M does a very simple thing when starting a VM - it checks for the host available to run the VM, according to the cluster policy, nd sends the host a command to start it. The rest is done by the host. So it's a quick algorithm plus a command sent over the network, that's all.
As for scripting this, it's very simple, just post a start action to the right VM in a script.
https://RHEV-M:8443/api/vms/$vmid/start
to do this with a lot of VMs, iterate over a list of VMIDs and send a start to each