You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 26 Next »

Ceph

Mulig feilfix for VMer som booter til initramfs/bsod

(muligens) pga en manglende konfigurasjon i ceph-mon capabilities i alle versjoner av puppet-modulen ntnuopenstack før versjon VQ.1.1, kan VMer som har blitt skrudd av med tvang, bli meget triste i disken sin og nekte å boote skikkelig. Dette kan fikses ved å gjøre en "flatten" av disken i ceph.

# Skru av VMen som ikke booter
# Ta en backup (uuid er VMens uuid fra nova)
cephmon1# rbd -p volumes export <uuid>_disk <filnavn>
# Kjør flatten (uuid er VMens uuid fra nova)
cephmon1# rbd flatten volumes/<uuid>_disk
# Skru den på igjen

 

Skru av reabalansering av OSDer

Dette er nyttig hvis man skal ha planlagt vedlikehold av en ceph-server. Det sørger for at ceph IKKE rebalanserer data når man skrur av en ceph-boks (det skaper veldig mye trafikk).

Gjøres på en ceph-mon host

ceph osd set noout

Etter utført vedlikehold, må man skru på igjen rebalanseringen

ceph osd unset noout

Bytte en disk

storageNN# puppet agent --disable
ceph-mon#  ceph osd crush reweight osd.<id> 0 // Sett vekting på OSDen til 0, for å migrere data av den, og for å hindre en ny rebalansering når man fjerner OSDen fra crushmap
// Vent til rebalanseringen er ferdig
ceph-mon#  ceph osd out osd.<id>
storageNN# systemctl stop ceph-osd@<id>
ceph-mon#  ceph osd purge osd.<id> --yes-i-really-mean-it

storageNN# umount /var/lib/ceph/osd/ceph-<id>
// Slett raidet fra hpacucli e.l. Bytt disken fysisk, og opprett nytt raid.
// Sørg for at OSet har oppdaget ny disk, og at hieradata for disken stemmer
storageNN# puppet agent --enable; puppet agent --test

Lokal montering av disk fra ceph

Det hender at noen brukere ødelegger for seg selv. Da kan det være hyggelig å hjelpe dem litt. I den forbindelse kan det være praktisk å f.eks kunne montere opp disken til en VM, for å hente ut data, fikse feilconfig o.l.

Dette er skrevet for ceph luminous, og må utføres på en host som har Linux Kernel >=4.15, og ha pakken rbd–nbd installert, og ha rett ceph keyrings osv. Pakken blir installert av puppet på alt som inkluderer klassen profile::ceph::client

Nevnte kjerne, kan installeres på Ubuntu 16.04 vha

# apt install linux-image-generic-hwe-16.04-edge

Eller, tank maskinen med HWE-kjernen i utgangspunktet.

- Finn UUID-en til VMen du skal montere opp disken til
# openstack server list
+--------------------------------------+-----------+---------+--------------------------------------------------------------------------+------------------------------------------+---------+
| ID                                   | Name      | Status  | Networks                                                                 | Image                                    | Flavor  |
+--------------------------------------+-----------+---------+--------------------------------------------------------------------------+------------------------------------------+---------+
| 65af6457-51ca-407d-8ab4-aea00ab297c3 | edbmaskin | SHUTOFF | larsep-v6-testnet=192.168.123.14, 2001:700:1d00:ec40:f816:3eff:fe76:b9a9 | Ubuntu Server 16.04 (Xenial Xerus) amd64 | m1.tiny |
+--------------------------------------+-----------+---------+--------------------------------------------------------------------------+------------------------------------------+---------+
// Noter ID-en, og sørg for at maskinen er skrudd av før du fortsetter.
// På en host med kernel >=4.15, rbd-nbd installert og korrekte ceph-keyrings på plass:

# rbd -p volumes ls | grep 65af6457-51ca-407d-8ab4-aea00ab297c3
65af6457-51ca-407d-8ab4-aea00ab297c3_disk // <- dette er objektet vi skal montere opp

# rbd-nbd map volumes/65af6457-51ca-407d-8ab4-aea00ab297c3_disk
/dev/nbd0

# fdisk -l /dev/nbd0
Disk /dev/nbd0: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf1917857

Device      Boot Start      End  Sectors Size Id Type
/dev/nbd0p1 *     2048 41943006 41940959  20G 83 Linux

# mount /dev/nbd0p1 /monter/disken/her
// Og vips, har du tilgang til filsystemet :-)

Avmontering

Når du er ferdig, må du selvfølgelig avmontere ceph-objektet

# umount /monter/disken/her
// For sikkerhets skyld, kan du sjekke hvilke ceph objekter som er mappet opp
# rbd-nbd list-mapped
pid     pool    image                                     snap device    
1037278 volumes 65af6457-51ca-407d-8ab4-aea00ab297c3_disk -    /dev/nbd0
# rbd-nbd unmap /dev/nbd

Done! Nå er det trygt å skru på igjen VMen (smile)

Haproxy

To take a server out of haproxy rotation the following command can be used:

Disable server in haproxy
root@servicelb3:~# echo "disable server bk_keystone_public/controller03" | nc -U /var/lib/haproxy/stats
 

Openstack

List instances on all compute nodes on stack.it.ntnu.no

tmp_file=/tmp/$$.stack.tmp
while true ; do
  rm /tmp/*.stack.tmp
  for a in $(seq -w 01 07);
    do echo compute$a  >> $tmp_file
    openstack server list --all --host compute$a >> $tmp_file
  done
  clear
  cat /tmp/bjarneskvms
  rm $tmp_file
  sleep 1
done

List all instances in a project

openstack server list --project ntnu-00001

List all instances in a project with specified name

openstack server list --project ntnu-00001 --name bjarneskvm-\*

Migrate all instances away from one node. Be sure that destination have capasity to receive. The break time is included for a safe time to hold ctrl+c

from_node=compute07
to_node=compute04
for a in $(openstack server list --host $from_node --all -f value -c ID); do 
  do echo $a to $to_node
  openstack server migrate --block-migration --live $to_node --wait $a
  echo break
  sleep 3
  echo break
done

 

Rabbitmq

Manually drain a queue

kanin1# rabbitmqadmin purge queue name=name_of_the_queue_to_be_purged

 Fjerne en node fra clusteret (f.eks hvis det har delt seg)

kaninN# rabbitmqctl stop_app
kaninN# rabbitmqctl reset

## På dette tidspunktet er det lurt å sjekke rabbitmqctl cluster_status på en annen node, for å verifisere at clusteret ikke lenger er flere partitions

# Legg den til igjen
kaninN# rabbitmqctl start_app
kaninN# rabbitmqctl cluster_status # sjekk at alle er med, og det ikke er noen partitions


Migrering av VMer på infra-noder som kjører KVM

Smørbrødliste med prereqs for å migrere VMer mellom infra-/api-noder som kjører KVM. Lista tar høyde for at du gjør migreringen med en personliggrupper som har nødvendige rettigheter for å arbeide med kvm/librt/qemu. Denne guiden forklarer migrering tunnellert over SSH av VMer uten delt lagring.

  1. root på noden du skal flytte fra må ha et SSH-nøklepar hvor public keyen er lagt i ~/.ssh/authorized_keys for din egen bruker på noden du flytter til.
    1. Dette kan vel muligens egentlig fikse med puppet, men det kan selvfølgelig også fikses manuelt per behov...
  2. Opprett LVM-volumet for VMen som skal flyttes, på noden den skal flyttes til. Gjør gjerne dette i Virtual Machine Manager. Det er enklest.
  3. VMen som skal flyttes må være konfigurert med en CPU-model som er kompatibel med noden den skal flyttes til. Dersom den ikke er det, skru VMen av, velg en passende modell, og skru den på igjen.

Migreringen gjøres slik, på noden du skal flytte fra. VMen må være på. 

$ virsh migrate --p2p --tunneled --persistent --copy-storage-all --verbose <vm-navn> qemu+ssh://<bruker>@<noden du skal flytte til>/system

VMen vil pauses under migreringen

Eksempel:

$ virsh migrate --p2p --tunneled --persistent --copy-storage-all --verbose flyttevm qemu+ssh://foo@kjempefinserver.mitt.domene.er.be.st/system

Kjente og/eller mulige ymse problemer og triks

  • Vi har observert at VMer som migreres til ny host kan finne på å ta samme macvtap-interface som allerede kjørende VM. Det skaper åpenbart meget lite nettvirk når disse maskinen står på samtidig.
    • Hvilket macvtap-interface VMene har, kan sjekkes med virsh domiflist <vm-navn>
    • Løsning: Skru av begge VMene. Skru dem på igjen, én og én

 

  • Hvis du endret CPU-model for VMen på flyttefot, kan det være hyggelig å endre den tilbake når den er ferdig flyttet. "Copy host-model" er en fin variant.

Utvide disk på VMer på infra-/api-noder som kjører KVM

De aller fleste VMene på disse KVM-hostene klarer seg fint med de 20 kjempebitene vi bruker som standard. Allikevel hender det at behovet for fler kjempebiter melder seg. Da bør man følge denne oppskriften:

Logg inn på KVM-hosten VMen kjører på, og kjør følgende kommando. Da blir VMens disk større

root@infraN# lvextend -L +<NN>G /dev/vmvg/<vm-navn>

Det virker som om VMene ikke helt klarer å få med seg at disken vokser. Derfor kan det være en god idé å skru den av og på igjen. (her dropper vi kommandoeksempel, for det tror vi de fleste vet hvordan man gjør)

 

VMene kjører også LVM. Derfor må vi utvide LVM-partisjonen:

root@kulvm# parted /dev/vda
(parted) print
<snip>
Number  Start   End     Size    Type      File system     Flags
 1      1049kB  1024MB  1023MB  primary   ext4            boot
 2      1026MB  42.9GB  41.9GB  extended
 5      1026MB  5120MB  4095MB  logical   linux-swap(v1)
 6      5121MB  42.9GB  37.8GB  logical                   lvm

##### Her er partisjon 6 en del av den utvidede partisjon 2, derfor må vi først utvide 2, deretter 6.

(parted) resizepart 2
Warning: Partition /dev/vda2 is being used. Are you sure you want to continue?
Yes/No? yes
End?  [42.9GB]? 100%
(parted) resizepart 6
End?  [42.9GB]? 100%
(parted) print
<snip>
Number  Start   End     Size    Type      File system     Flags
 1      1049kB  1024MB  1023MB  primary   ext4            boot
 2      1026MB  64.4GB  63.4GB  extended
 5      1026MB  5120MB  4095MB  logical   linux-swap(v1)
 6      5121MB  64.4GB  59.3GB  logical                   lvm
(parted) quit

##### Og, vips har partisjonen blitt større

Nå må vi fortelle LVM at partisjonen har vokst (vda6 er da tilsvarende partisjon 6 i forrige steg. Den kan finne på å ha et annet tall). Sjekk gjerne at den har ledig plass etter å ha kjørt resize.

root@kulvm# pvresize /dev/vda6  
  Physical volume "/dev/vda6" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

root@kulvm# pvs
  PV         VG        Fmt  Attr PSize  PFree 
  /dev/vda6  kulvm-vg  lvm2 a--  55.23g 20.00g

Da gjenstår det bare å utvide det logiske volumet på VMen som trenger mer plass. Flagget -r utvider filsystemet i samme slengen.

root@kulvm# lvextend -L +20G -r /dev/kulvm-vg/var

 

ipmitool

apt install ipmitool

Hvis den ikke oppfører seg:

Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file or directory

then you need to enable the following modules

modprobe ipmi_devintf
modprobe ipmi_si

  • No labels