X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=input%2Fhowto%2Finstall-ganeti.creole;h=bd7d85ca478b77d708b8d63368fb4c82ad0eb4be;hb=4050b37a44d53e672e347f8525d634d6280884b2;hp=a28f5b4c844b8eaa3e0a2228b76bd45ed0640978;hpb=1b67953c3e1dc8a4e9a351f0a52e647159212d03;p=mirror%2Fdsa-wiki.git diff --git a/input/howto/install-ganeti.creole b/input/howto/install-ganeti.creole index a28f5b4..bd7d85c 100644 --- a/input/howto/install-ganeti.creole +++ b/input/howto/install-ganeti.creole @@ -36,8 +36,9 @@ The following DNS records exist: On each node, install the required packages: {{{ - apt-get install fai-client ssed extlinux - apt-get install -t squeeze-backports drbd8-utils ganeti2 ganeti-instance-debootstrap ganeti-htools + # maybe: apt-get install drbd8-utils + # maybe: apt-get install ganeti-instance-debootstrap + apt-get install ganeti2 ganeti-htools qemu-kvm }}} === configure kernel modules === @@ -48,6 +49,8 @@ On each node, ensure that the required kernel modules are loaded at boot: ainsl /etc/modules 'drbd minor_count=255 usermode_helper=/bin/true' ainsl /etc/modules 'hmac' ainsl /etc/modules 'tun' + ainsl /etc/modules 'ext3' + ainsl /etc/modules 'ext4' }}} === configure networking === @@ -63,9 +66,9 @@ should be configured rather than eth1. To prevent the link address changing due to startup/shutdown of virtual machines, explicitly set the value. -{{{ - # /etc/networking/interfaces for foo.debian.org +This is the interfaces file for foo.debian.org: +{{{ auto br0 iface br0 inet static bridge_ports eth0 @@ -82,9 +85,9 @@ machines, explicitly set the value. netmask 255.255.255.0 }}} -{{{ - # /etc/networking/interfaces for bar.debian.org +This is the interfaces file for bar.debian.org: +{{{ auto br0 iface br0 inet static bridge_ports eth0 @@ -123,17 +126,6 @@ On each node, create a volume group: vgcreate vg_ganeti /dev/cciss/c0d0p3 }}} -=== create kvmU symbolic links === - -On each node, create vmlinuz and initrd symlinks as expected by the kvm -hypervisor (not strictly required if all guests will boot from their own -kernels): - -{{{ - ln -s -T /boot/vmlinuz-2.6.32-5-amd64 /boot/vmlinuz-2.6-kvmU - ln -s -T /boot/initrd.img-2.6.32-5-amd64 /boot/initrd.img-2.6-kvmU -}}} - === exchange ssh keys === on each node: @@ -145,7 +137,7 @@ on each node: === configure iptables (via ferm) === -ipsum loren bacon puppet: the nodes must connect to each other over the private network for drbd purposes; puppet can handle this (poorly; needs improvement) +the nodes must connect to each other over the public and private networks for a number of reasons; see the ganeti2 module in puppet === instantiate the cluster === @@ -161,7 +153,7 @@ On the master node (foo) only: --mac-prefix 00:16:37 \ --no-ssh-init \ --no-etc-hosts \ - --hypervisor-parameters kvm:initrd_path=/boot/initrd.img-2.6-kvmU,kernel_path=/boot/vmlinuz-2.6-kvmU \ + --hypervisor-parameters kvm:initrd_path=,kernel_path= \ foobar.debian.org }}} @@ -177,9 +169,9 @@ Note the following: For each slave node (only bar for this example): -on the slave, append the master's /etc/ssh/ssh_host_rsa_key to +on the slave, append the master's /etc/ssh/ssh_host_rsa_key.pub to /etc/ssh/userkeys/root. This is only required temporarily - once -everything works puppet will put it/keep it there. +everything works, puppet will put it/keep it there. on the master node (foo): @@ -207,11 +199,7 @@ If everything has been configured correctly, no errors should be reported. === create the 'dsa' variant === -ipsum loren bacon deboostrap+dsa - -* create /etc/ganeti/instance-debootstrap/variants/dsa.conf -* add 'dsa' to /etc/ganeti/instance-debootstrap/variants.list -* obtain ??-dsa-* from tristano:/etc/ganeti/instance-debootstrap/hooks +Ensure that the debootstrap+dsa variant has been installed by puppet (see ganeti2 module in dsa-puppet). ---- @@ -242,7 +230,8 @@ Note the following: * the primary and secondary nodes have been explicitly set * the operating system type is 'debootstrap+dsa' -* the network interfarce 0 (eth1 on the system) is set to the instance's interface on the public network +* the network interfarce 0 (eth0 on the system) is set to the instance's interface on the public network +* If qux.d.o does not yet exist in DNS/LDAP, you may need --no-ip-check --no-name-check. Be careful that the hostname and IP address are not taken already! ---- @@ -252,11 +241,11 @@ If the instances require access to the private network, then there are two modif === re-configure networking === -Ensure that br1 is configured (rather than eth1). +On the nodes, ensure that br1 is configured (rather than eth1). -{{{ - # /etc/networking/interfaces for foo.debian.org +This is the interfaces file for foo.debian.org: +{{{ auto br0 iface br0 inet static bridge_ports eth0 @@ -277,9 +266,32 @@ Ensure that br1 is configured (rather than eth1). up ip link set addr $(cat /sys/class/net/$IFACE/address) dev $IFACE }}} +This is the interfaces file for bar.debian.org: + +{{{ + auto br0 + iface br0 inet static + bridge_ports eth0 + bridge_maxwait 0 + bridge_fd 0 + address A.B.C.3 + netmask 255.255.255.0 + gateway A.B.C.254 + up ip link set addr $(cat /sys/class/net/$IFACE/address) dev $IFACE + + auto br1 + iface br1 inet static + bridge_ports eth1 + bridge_maxwait 0 + bridge_fd 0 + address E.F.G.3 + netmask 255.255.255.0 + up ip link set addr $(cat /sys/class/net/$IFACE/address) dev $IFACE +}}} + === create or update the instance === -When creating the instance, indicate both netwokrs: +When creating the instance, indicate both networks: {{{ gnt-instance add \ @@ -288,20 +300,19 @@ When creating the instance, indicate both netwokrs: --os-size 4GiB \ --os-type debootstrap+dsa \ --hypervisor-parameters kvm:initrd_path=,kernel_path= \ - --net 0:ip=A.B.C.4,1:ip=E.F.G.4 \ + --net 0:ip=A.B.C.4 \ + --net 1:link=br1,ip=E.F.G.4 \ qux.debian.org }}} -Please note that the dsa bootscript will only configure eth1 (nic0). If -specifying a second internface, the guest operating system must be updated -manually. +* If qux.d.o does not yet exist in DNS/LDAP, you may need --no-ip-check --no-name-check. Be careful that the hostname and IP address are not taken already! When updating an existing instance, add the interface: {{{ gnt-instance shutdown qux.debian.org gnt-instance modify \ - --net add:ip=E.F.G.4 \ + --net add:link=br1,ip=E.F.G.4 \ qux.debian.org gnt-instance startup qux.debian.org }}} @@ -310,3 +321,58 @@ Please note that the hook scripts are run only at instance instantiation. When adding interfaces to an instance, the guest opearting system must be updated manually. + +* If you are importing an instance from libvirt with LVM setup, you can adopt LVs: + +{{{ + gnt-instance add -t plain --os-type debootstrap+dsa-wheezy \ + --disk 0:adopt=lully-boot \ + --disk 1:adopt=lully-root \ + --disk 2:adopt=lully-swap \ + --disk 3:adopt=lully-log \ + --hypervisor-parameters kvm:initrd_path=,kernel_path= \ + --net 0:ip=82.195.75.99 -n clementi.debian.org lully.debian.org +}}} + +And you want to convert it to use DRBD afterwards and start it on the other cluster node, so we can ensure that DRBD is correctly working. +{{{ + gnt-instance shutdown lully.debian.org + gnt-instance modify -t drbd -n czerny.debian.org lully.debian.org + gnt-instance failover lully.debian.org + gnt-instance startup lully.debian.org +}}} + +* Some instances NEED ide instead of virtio + +{{{ + gnt-instance modify --hypervisor-parameters disk_type=ide fils.debian.org +}}} + +* To import instances with SAN volumes + +{{{ + gnt-instance add -t blockdev --os-type debootstrap+dsa \ + --disk 0:adopt=/dev/disk/by-id/scsi-reger-boot \ + --disk 1:adopt=/dev/disk/by-id/scsi-reger-root \ + --hypervisor-parameters kvm:initrd_path=,kernel_path= \ + --net 0:ip=206.12.19.124 -n rossini.debian.org reger.debian.org +}}} + +* How to add new LUNs to Bytemark Cluster + +{{{ + + Add a new LUN in the MSA and export it to all blades + + then: + gnt-cluster command "echo 1 > /sys/bus/pci/devices/0000:0e:00.0/cciss0/rescan" + + then: + reload multipath-tools on gnt-master (normaly bm-bl1): + service multipath-tools reload + add the WWNs to dsa-puppet/modules/multipath/files/bm-multipath.conf and define the alias and commit that file to git. + + then: + gnt-cluster command "puppet agent -t" + + This will update the multipath config on all cluster nodes. WITHOUT doing this, you can't migrate VMs between nodes. +}}}