Our simulated, example cluster will have three machines, named
``node1``, ``node2``, ``node3``. Note that in real life machines will
usually FQDNs but here we use short names for brevity. We will use a
-secondary network for replication data, ``192.168.2.0/24``, with nodes
+secondary network for replication data, ``192.0.2.0/24``, with nodes
having the last octet the same as their index. The cluster name will be
``example-cluster``. All nodes have the same simulated hardware
configuration, two disks of 750GB, 32GB of memory and 4 CPUs.
Follow the :doc:`install` document and prepare the nodes. Then it's time
to initialise the cluster::
- node1# gnt-cluster init -s 192.168.2.1 --enabled-hypervisors=xen-pvm cluster
+ node1# gnt-cluster init -s 192.0.2.1 --enabled-hypervisors=xen-pvm example-cluster
node1#
The creation was fine. Let's check that one node we have is functioning
Since this proceeded correctly, let's add the other two nodes::
- node1# gnt-node add -s 192.168.2.2 node2
+ node1# gnt-node add -s 192.0.2.2 node2
-- WARNING --
Performing this operation is going to replace the ssh daemon keypair
on the target machine (node2) with the ones of the current one
and grant full intra-cluster ssh root access to/from it
- The authenticity of host 'node2 (192.168.1.2)' can't be established.
+ The authenticity of host 'node2 (192.0.2.2)' can't be established.
RSA key fingerprint is 9f:…
Are you sure you want to continue connecting (yes/no)? yes
root@node2's password:
Mon Oct 26 02:11:54 2009 - INFO: Node will be a master candidate
- node1# gnt-node add -s 192.168.2.3 node3
+ node1# gnt-node add -s 192.0.2.3 node3
-- WARNING --
Performing this operation is going to replace the ssh daemon keypair
on the target machine (node2) with the ones of the current one
and grant full intra-cluster ssh root access to/from it
- The authenticity of host 'node3 (192.168.1.3)' can't be established.
+ The authenticity of host 'node3 (192.0.2.3)' can't be established.
RSA key fingerprint is 9f:…
Are you sure you want to continue connecting (yes/no)? yes
root@node2's password:
debootstrap
node1#
-Running a burnin
-----------------
+Running a burn-in
+-----------------
Now that the cluster is created, it is time to check that the hardware
works correctly, that the hypervisor can actually create instances,
…
node1#
-You can see in the above what operations the burnin does. Ideally, the
-burnin log would proceed successfully through all the steps and end
+You can see in the above what operations the burn-in does. Ideally, the
+burn-in log would proceed successfully through all the steps and end
cleanly, without throwing errors.
Instance operations
node1# gnt-node info node3
Node name: node3
- primary ip: 172.24.227.1
- secondary ip: 192.168.2.3
+ primary ip: 198.51.100.1
+ secondary ip: 192.0.2.3
master candidate: True
drained: False
offline: False
reused. Re-adding it is simple::
node1# gnt-node add --readd node3
- The authenticity of host 'node3 (172.24.227.1)' can't be established.
+ The authenticity of host 'node3 (198.51.100.1)' can't be established.
RSA key fingerprint is 9f:2e:5a:2e:e0:bd:00:09:e4:5c:32:f2:27:57:7a:f4.
Are you sure you want to continue connecting (yes/no)? yes
Mon Oct 26 05:27:39 2009 - INFO: Readding a node, the offline/drained flags were reset
Mon Oct 26 05:27:39 2009 - INFO: Node will be a master candidate
-And is now working again::
+And it is now working again::
node1# gnt-node list
Node DTotal DFree MTotal MNode MFree Pinst Sinst
node2 1.3T 1.3T 32.0G 1.0G 30.4G 1 3
node3 1.3T 1.3T 32.0G 1.0G 30.4G 0 0
-.. note:: If you have the ganeti-htools package installed, you can
- shuffle the instances around to have a better use of the nodes.
+.. note:: If Ganeti has been built with the htools
+ component enabled, you can shuffle the instances around to have a
+ better use of the nodes.
Disk failures
+++++++++++++
As you can see, *instance4* has a copy running on node3, because we
forced the failover when node3 failed. This case is dangerous as the
-instance will have the same IP and MAC address, wreaking havok on the
+instance will have the same IP and MAC address, wreaking havoc on the
network environment and anyone who tries to use it.
Ganeti doesn't directly handle this case. It is recommended to logon to
Mon Oct 26 18:59:37 2009 * Verifying orphan volumes
Mon Oct 26 18:59:37 2009 * Verifying remaining instances
Mon Oct 26 18:59:37 2009 * Verifying N+1 Memory redundancy
- Mon Oct 26 18:59:37 2009 - ERROR: node node2: not enough memory on to accommodate failovers should peer node node1 fail
+ Mon Oct 26 18:59:37 2009 - ERROR: node node2: not enough memory to accommodate instance failovers should node node1 fail
Mon Oct 26 18:59:37 2009 * Other Notes
Mon Oct 26 18:59:37 2009 * Hooks Results
node1#
for any non-trivial cluster)
- try to reduce memory of some instances to accommodate the available
node memory
-- if you have the ganeti-htools package installed, you can run the
- ``hbal`` tool which will try to compute an automated cluster solution
- that complies with the N+1 rule
+- if Ganeti has been built with the htools package enabled, you can run
+ the ``hbal`` tool which will try to compute an automated cluster
+ solution that complies with the N+1 rule
Network issues
++++++++++++++
from the above that instance2 has /dev/drbd0, instance3 /dev/drbd1, and
instance4 /dev/drbd2.
+LUXI version mismatch
++++++++++++++++++++++
+
+LUXI is the protocol used for communication between clients and the
+master daemon. Starting in Ganeti 2.3, the peers exchange their version
+in each message. When they don't match, an error is raised::
+
+ $ gnt-node modify -O yes node3
+ Unhandled Ganeti error: LUXI version mismatch, server 2020000, request 2030000
+
+Usually this means that server and client are from different Ganeti
+versions or import their libraries from different, consistent paths
+(e.g. an older version installed in another place). You can print the
+import path for Ganeti's modules using the following command (note that
+depending on your setup you might have to use an explicit version in the
+Python command, e.g. ``python2.6``)::
+
+ python -c 'import ganeti; print ganeti.__file__'
+
.. vim: set textwidth=72 :
.. Local Variables:
.. mode: rst