Although the purpose of availability zones is ensuring better availability of applications, you can also use them to solve your problem.
As admin, create two host aggregates and expose them to users as availability zones:
openstack aggregate create --zone zone1 aggr1
openstack aggregate create --zone zone2 aggr2
Add each host to a zone:
openstack aggregate add host aggr1 computenode1
openstack aggregate add host aggr2 computenode2
As any user, launch instances in the availability zones:
openstack server create --availability-zone zone1 ...other parameters... instance 1
openstack server create --availability-zone zone2 ...other parameters... instance 2
You can also expose aggregates to users by giving them metadata items, then map flavors to the aggregates using those metadata items. Instances created with those flavors run in the corresponding aggregates. This is more complex than the availability zone method, and it probably requires adding the aggregate scheduler filter to nova.conf.
Alternatively, you can disable nova-compute on a host, so that instances are automatically launched on the other host. After that, re-enable it and disable the other compute node.