Manage the rhevh without rhevm

Latest response

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

Thanks very much for your reply.

Your suggestion is reasonable that to create a rhev-m cluster and each rhev-m handle 200 hosts.

And several questions to you:

Could you point me the link of the article for rhev-m cluster?

And you known for a large cluster, the web GUI is not a good interface to control the huge number of hosts and vms, using the REST api to control the hosts/vms is a better choice. Is that possible to install the rhevm without the web GUI packages? (There are 280 packages need to be installed for rhev-m on rh6.2)

I still curious to know, technically, is that possible to control rhev-h directly from 3rd-party software? I known that rhev-h has some restriction for the outside interface like the user 'admin' is limited.

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

 

 

Dan, your reply is very helpful.

 

I known the rhev-h is NOT free. Then is the rhev-m free for download or chargable? And could I get the official JBOSS repository from redhat for rhev-m installation?

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

Dan, thanks for you information.

I decided to use the rhev-m to manage the hosts and vms through the REST-API of rhev-m.

But I still concern about the performance of rhev-m. If I have 100 hosts and has 10 vms for each host, and I am trying to start all 1000 vms, what's the efficient approach? Start them one by one? Is there a way to start bunch of vms? From your experience, how long it will take to finish the start of 1000 vms?

 

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. 

 

Sorry that I did not make me clear. My question was that suppose the hosts (rhevh) is capable for the vms, then how long the rhevm will take to finish the start of 1000 vms (from rhevm point of view).

 

By the way, do you know is it possible that start bunch of vms from REST API?

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