Openstack reliability test fails - openstack

I had installed Openstack multi node using RDO Packstack method, and during the installation everything goes perfect, my setup was one controller node and three compute nodes each of them on separate physical PC, I launched one instance and Openstack chose compute 1 as a host for this instance and when I disconnected compute 1 from network the openstack controller did not discover that compute 1 is down, until 1 minute passed the compute1 shows as down in horizon dashboard but the instance still down, and I cannot ping or access to instance my questions is:
why it is take long time ( about 1 minute) for controller to discover that one of compute is down or not reachable
and why the instance is still down as I know (when a computing node is faulty the system automatically move computing task from the faulty computing node to other computing nodes) so in our case the system should move instance from faulty compute 1 to compute 2 or compute 3

In answer to question 1, it depends on how often the OpenStack services are set to poll for Liveness.
In answer to question 2, by default, OpenStack does not have any instance HA built in. In RedHat openstack instance HA can be enabled by following this guide https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/8/html-single/high_availability_for_compute_instances/index . This may work for RDO but im not 100% sure.

Related

Setting Openstack compute node with a fake hypervisor

I'm trying to set up openstack compute nodes that mimics a real node, however never actually sets up the VMs on a physical host.
In the openstack tests, there are usages of fake drivers (defined in nova/virt/fake.py) through a complex system of testing classes.
I wish to get such a node up and running not within a test (meaning, I don't want to use these classes to spawn the compute node), but on an actual VM/container, however, I cannot figure out how to get a compute process to run with this fake hypervisor (or more specifically, one that will be defined by me).
How do I inject this fake driver instead of the real driver in a compute node?
(also, I'm installing OS using devstack (latest))
For more clarification, my goal is to do stress testing of OS, running multiple fake compute nodes, not in all-in-one configuration. The usage of devstack to setup the controller node is for simplifying the process, but the system should be:
A controller node, running the core services (Nova, Glance, Keystone etc.).
Multiple compute nodes, using fake hypervisors on different machines.
When installing a new compute node, there is a configuration file nova-compute.conf that is being created automatically.
It seems that in /etc/nova/nova-compute.conf there is an option:
compute_driver = libvirt.LibvirtDriver
That uses libvirt as the default hypervisor for a compute node. In addition to hyperv, vmwareapi and xenapi, according to the nova configuration documentation, one can choose using the fake driver by changing this option to:
compute_driver = fake.FakeDriver
In order to set the fake driver to our implementation, we may replace the fake driver written in fake.py with something else.

openstack: relation between controller & compute nodes

I just started playing with openstack, and many things still don't understand. As I see it, to start a VM instance, we normally execute some commands on the controller e.g.
glance image-create
nova boot
But how does the controller know:
1) on which compute node to start the VM
2) how many compute nodes it has
Where does it take this information?
The controller will boot determine the location to launch the instance based on the information provided by nova-scheduler:
http://docs.openstack.org/juno/config-reference/content/section_compute-scheduler.html
As for how many compute nodes are recognized, this is determined when you register a compute node with nova compute on the controller. Here is a reference for how compute is installed and configured for RHEL/CentOS/Fedora:
http://docs.openstack.org/juno/install-guide/install/yum/content/ch_nova.html
I'd suggest to learn the OpenStack software architecture for such questions, for example, look at this page http://docs.openstack.org/openstack-ops/content/example_architecture.html.
Simply speacking, OpenStack saves all the configurations in database which is by default mysql, so Controller knows all the information. A Nova component named nova-scheduler running as a controller service will decide where to place VM among all available hosts.
A good staring point is to deploy multiple nodes env. You will know how OpenStack works in the deployment procedure.

OpenStack single node vs multi node

I'm totally new to openstack and after seeing tutorials running it on both single node and multi node(at least 3 consisting 1 controller 1 compute and 1 network node) i was wondering whats the diffrence and is there any advantages with multi nodes over single nodes ones?
Open stack system consists of lot services. If you are running all these in single node , then
there will be resource scarcity issue unless you have a machine with very high CPU,RAM etc. Another advantage of multi node configuration is failover. In 3 node config if one node is down then you can continue with 2 nodes (provided you have service replication). Better go for at least 3 node config which is recommended by openstack.
With Multinode configuration, you can achieve scale-out storage solution by adding more storage needs to your needs. Also, several compute nodes can be used to increase computation needs.

How to get informations about a zope/plone instance during execution?

We have a production environment (cluster) where there are two physical servers and 3 (three) plone/zope instances running inside each one.
We scheduled a job (with apscheduler) that needs to run only in a unique instance, but is executing by all 6 (six) instances.
To solve this, I think I need to verify if the job is running in the server1 and if it is a instance that listens on a specific port.
So, how to get programmaticly informations about a zope/plone instance?

devstack multi node installation

I have 3 nodes which i am using for multi node setup. I am thinking of following the below structure
Controller: keystone, horizon, g-reg, g-api, n-api, n-crt, n-sch, n-cond, n-cauth, n-obj, n-novnc, n-xvnc, c-api, c-sch (this node will have mysql and rabbitmq as well)
Network: q-svc, q-agt, q-dhcp, q-l3, q-meta, quantum
Compute: n-cpu, c-vol
I have a few questions. 1. In Compute node, do i need to keep n-api? Also what else is needed apart from n-api and c-vol? Is q-agt needed in compute? 2. Will i need c-api along with c-vol? Does compute node need rabbit mq installed?
Q1)
You don't want the nova-api on the compute nodes generally. It's better on the controller.
Nova api makes use of pasted hard system credentials and you don't want that paste file exposed on any node that a user may compromise with a hypervisor escape.
nova-compute and nova-volume is all you probably need. they do communicate with the scheduler over rabbitmq so make sure that's working =P
Q2)
You don't NEED cinder to run an openstack cloud, though I see no reason not to include it.
I don't know what impact disabling cinder has on the devstack stack.sh script, I've never done it.
As per RabbitMQ see above answer.

Resources