Following our earlier introduction to RHCS we now present a real world example: the installation of RHCS with Debian to provide certain virtual machines as services.
Our RHCS overview already explained the basics of RHCS. This time we will take two hosts with shared storage and provide KVM guests as services.
Installation of the nodes
In this setup the nodes are the machines which are running KVM. Each running KVM guest is a service managed by RHCS. While installing the KVM hosts you should make sure you comply with the following suggestions:- /tmp/ and /var/ should be running on different partitions, this improves performance.
- Activate Debian backports, especially for the Kernel.
- Make sure all IP addresses can be resolved in both directions - /etc/hosts helps here in worst case.
- The host name must not resolve to 127.0.0.1! You would only get problems with the Cluster Management System CMAN.
- /etc/hosts/ and /etc/resolv.conf should be the same on all nodes.
- Create password free ssh keys for all nodes and distribute them.
- For ultimate performance it is best to install the latest Debian Linux kernel. In our example we used linux-image-2.6.32-bpo.2-amd64, which crashes the guest kernels >= 2.6.30. However, a patch is available, see bug #573071.
- The network devices should be named in a way that makes sense, for example: rhcs-backbone and external instead of eth0 and eth1.
Configuring the shared storage
As with almost any HA solution, a key element of RHCS is the shared storage which is accessed by all the nodes. In this example we take a "private" machine and install an iSCSI target on it:apt-get install iscsitarget iscsitarget-source echo 'ISCSITARGET_ENABLE=true' > /etc/default/iscsitarget m-a a-i iscsitarget
Keep in mind that the iSCSI target must build properly, see bug #566740. The configuration of the shared storage is done via /etc/ietd.conf:
IncomingUser discovery_in YourSecurePwd1
OutgoingUser discovery_out YourSecurePwd2
Target YOURMACHINE:clvm1
IncomingUser node_in YourSecurePwd1
OutgoingUser node_out YourSecurePwd2
Lun 0 Path=/dev/sdx1,Type=blockio
On the nodes the same target must be accessed, so make sure /etc/iscsi/iscsid.conf is correct:
discovery.sendtargets.auth.authmethod = CHAP discovery.sendtargets.auth.username = discovery_in discovery.sendtargets.auth.password = YourSecurePwd1 discovery.sendtargets.auth.username_in = discovery_out discovery.sendtargets.auth.password_in = YourSecurePwd2 node.startup = automatic node.session.auth.authmethod = CHAP node.session.auth.username = node_in node.session.auth.password = YourSecurePwd1 node.session.auth.username_in = node_out node.session.auth.password_in = YourSecurePwd2
The service is started with /etc/init.d/open-iscsi start. Existing targets can be searched, deleted or added by the following commands:
# discovering the targets iscsiadm -m discovery -t st -p YOURMACHINE -P 1 # deleting target on wrong interface iscsiadm -m node -p 192.168.0.100:3260,1 -o delete # opening the portal iscsiadm -m node --targetname "iqn.2010-03.YOURMACHINE:clvm1" --portal "YOURMACHINE:3260" --
VM setup
The virtual machines are provided by KVM. Thus the apropriate KVM software must be installed first:apt-get install linux-image-2.6.32-bpo.2-amd64 kvm libvirt-bin virtinst -t lenny-backports
When configuring the bridge, make sure that the bridge name is the same on all nodes. Also the libvirt configuration must be the same on all hosts, so it makes sense to use puppet or similar techniques.
Afterwards, bring up the guests with:
virt-install -n <NAME> -r 256 --vcpus=1 --disk path=/dev/vg_cluster#/<LV> \ -c /root/debian-<VERSION>-amd64-netinst.iso --vnc --noautoconsole --os-type linux \ --os-variant debianLenny --accelerate --network=bridge:bridge0 --hvm -k de
To monitor the process use virt-viewer -c qemu+ssh://
RHCS setup
The next step is the setup of RHCS itself. Again, first things first, the software: apt-get install redhat-cluster-suite. This pulls quite a number of services which are not needed in our example:invoke-rc.d nfs-kernel-server stop invoke-rc.d nfs-common stop invoke-rc.d portmap stop update-rc.d -f nfs-kernel-server remove update-rc.d -f nfs-common remove update-rc.d -f portmap remove
Btw., system-config-cluster is not available for Lenny, but our Philipp Hübner has created a backport:
wget --no-check-certificate https://www.credativ.com/~phu/lenny-backports/system-config-cluster/system-config-cluster_1.0.53-1_all.deb dpkg -i system-config-cluster_1.0.53-1_all.deb apt-get -f install apt-get install xauth
In order to have locking on the LVM cluster, you now need to modify /etc/lvm/lvm.conf: check for the global part.
locking_type = 3
With the newer kernels the module lock_dlm also vanished, so CMAN init script must be modified: comment out the line modprobe lock_dlm 2>&1 || return 1. Additionally, RHCS 2 only supports XEN, so for libvirt you need to load the resource handler vm.sh.
wget --no-check-certificate https:///www.credativ.com/~phu/vm.sh -O /usr/share/cluster/vm.sh chmod +x /usr/share/cluster/vm.sh
RHCS itself is called via
/etc/init.d/cman start /etc/init.d/clvm start /etc/init.d/rgmanager start



Leave a comment