Changes between Initial Version and Version 1 of OpenStackUsage


Ignore:
Timestamp:
10/05/22 17:05:13 (2 years ago)
Author:
ypap
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OpenStackUsage

    v1 v1  
     1= OpenStack Usage =
     2
     3== Δημιουργία λογαριασμού ==
     4
     5Στέλνουμε e-mail στο cslab-admins <at> cslab.ece.ntua.gr
     6
     7== Δημιουργία VM ==
     8
     9Για να δημιουργήσουμε VM μπορούμε να το κάνουμε με τους ακόλουθους τρόπους:
     10
     11*   Μέσω του UI, όπου πάμε στο [https://termi7.cslab.ece.ntua.gr/horizon termi7] και βάζουμε τα credentials μας
     12*   Μέσω του [https://pypi.python.org/pypi/python-novaclient nova client] (μπορούμε να εγκαταστήσουμε μέσω PIP, apt, yum, etc.)
     13*   Μέσω των eucatools (δες και παλιά version).
     14
     15== API access ==
     16
     17Για να έχουμε access στο API του Openstack (nova/eucatools), πρέπει να κατεβάσουμε τα κατάλληλα files από το UI του Openstack.
     18
     19Πάμε στο tab Access/Security (αφού κάνουμε login) και πάμε στην τελευταία καρτέλα (API Access). Εκεί επιλέγουμε το Download Openstack RC File, και σώζουμε το αρχείο στο filesystem. Μετά κάνοντας source, έχουμε πρόσβαση στον openstack μέσω nova. Πχ:
     20
     21`giannis@ggian:~> source ~/.openstack/ggian-openrc.sh`\\
     22`giannis@ggian:~> nova list # list των VMs που τρέχουν`
     23
     24Με ακριβώς αντίστοιχη λογική, επιλέγοντας το link Download EC2 Credentials, κατεβάζουμε το zip για να έχουμε access μέσω των eucatools. Κάνουμε extract, source το e2rc.sh και that's it.
     25
     26Για νεότερα euca2ools προτείνεται η χρήση config file (αντίστοιχου με τα aws CLI tools). Παρέχεται template attached (global.ini). Χρειάζεται να συμπληρώσετε το Access και Secret key σας στα αντίστοιχα πεδία του χρήστη. Επίσης μπορείτε να προσθέσετε πάνω από 1 region στο ίδιο αρχείο και διαφορετικούς χρήστες. Δείτε και την σελίδα οδηγιών [https://www.eucalyptus.com/docs/eucalyptus/4.1.0/index.html#shared/euca2ools_config_file_layout.html εδώ].
     27
     28**Known bug**: για άγνωστο λόγο, το ec2rc.sh έχει σαν EC2\_URL το entry None. Το σβήνουμε και βάζουμε στη θέση του το entry
     29
     30`export EC2\_URL=http://termi7:8773/services/Cloud`
     31
     32**Known bug 2**: για επίσης άγνωστο λόγο, αν απλά κάνουμε source το \*-openrc.sh αρχείο που κατεβάσαμε από το dashboard, το nova δεν βρίκσει τον host. Για αυτό, βάζουμε καρφωτά την IP του termi7 στο /etc/hosts αρχείο του υπολογιστή μας, μέχρι να βρούμε μια πιο μόνιμη λύση :).
     33
     34`giannis@ggian:~> echo -e "\\n147.102.4.167\\ttermi7" >> /etc/hosts`
     35
     36== Συνδεση με VM ==
     37
     38Για να συνδεθούμε στα VM μας, υποστηρίζονται 3 τρόποι:
     39
     40*   Σύνδεση μέσω IPv6, αν βρισκόμαστε σε IPv6 enabled δίκτυο. Εναλλακτικά μπορούμε να χρησιμοποιήσουμε τα scripts που βρίσκονται στο τέλος της σελίδας.
     41
     42*   Σύνδεση μέσω ssh proxy. Δίνουμε:
     43   
     44    `giannis@ggian:~> ssh username@147.102.4.187`
     45   
     46και στη συνέχεια έχουμε access σε όλο το subnet των VMs. Σε περίπτωση που δεν έχουμε access, στέλνουμε ένα mail στο csl ab-admins και επισυνάπτουμε ένα public key.
     47
     48*   Σύνδεση μέσω VPN. Φτιάχνουμε ένα νέο certificate request ως εξής:
     49   
     50      `giannis@ggian:~> openssl req -nodes -new -keyout cslab-openstack-username.key -out cslab-openstack-username.csr -subj '/C=GR/ST=Attiki/O=CSLab/CN=FirstName LastName/emailAddress=email@somedomain.com'`
     51   
     52και στέλνουμε το csr αρχείο στο cslab-admins (όπου username, CN καi email βάζουμε τα δικά μας στοιχεία). ΠΡΟΣΟΧΗ: δεν στέλνουμε το παραγόμενο key. Στη συνέχεια, μας επιστρέφεται ένα tar που περιέχει τα αρχεία ca.crt, client.ovpn, cslab-openstack-username.crt. Τα κάνουμε extract σε ένα directory και στο ίδιο directory τοποθετούμε το private key. Κάνουμε edit το .ovpn αρχείο, βρίσκουμε τις γραμμές στις οποίες δηλώνεται το ca, το cert και το key, και τοποθετούμε τα κατάλληλα entries με το δικό μας path. πχ:
     53{{{   
     54ca /usr/share/easy-rsa/keys/ca.crt
     55cert /usr/share/easy-rsa/keys/cslab-ggian.crt
     56key /usr/share/easy-rsa/keys/cslab-ggian.key
     57}}}
     58Τέλος, εκτελούμε (σαν root)
     59   
     60`giannis@ggian:~> sudo openvpn client.ovpn`
     61   
     62και δοκιμάζουμε να κάνουμε ping στις private IP των VM μας. (ο client πρέπει να έχει εγκατεστημένα τα πακέτα openvpn network-manager-openvpn network-manager-openvpn-{gnome,kde}, αν θέλει να ανοίγει το VPN connection μέσω του [wiki:OpenVPN Network Manager]
     63
     64Προτείνεται η χρησιμοποίηση του VPN σαν default τρόπος σύνδεσης.
     65
     66**Παρατήρηση:** για την επιτυχή σύνδεση με το VM που έχει την public IP, επιβάλλεται να τεθούν τα κατάλληλα exceptions στο Default Security Group του Openstack (by default, o Openstack κλείνει το access σε όλα τα ports, συνεπώς δεν θα υπάρχει connectivity μέχρι να σεταριστεί το Default Security Group). Περισσότερες πληροφορίες βρίσκουμε [http://docs.openstack.org/openstack-ops/content/security_groups.html εδώ].
     67
     68**Σημείωση:** ΠΡΙΝ την δημιουργία ενός VM, χρειάζεται να θέσουμε ένα έγκυρο SSH key με το οποίο θα μπορούμε να συνδεόμαστε σε αυτά. Αυτό μπορεί να γίνει μέσω dashboard μέσω την επιλογής Project -> Compute -> Access & Security -> Key Pairs.
     69
     70== Volumes ==
     71
     72Για τη δημιουργία ενός volume δίνουμε:
     73{{{
     74giannis@ggian:~> source ~/.openstack/ggian-openrc.sh
     75giannis@ggian:~> nova volume-create --display-name "myvolume" 10 # kataskebazetai 10G volume me onoma myvolume
     76giannis@ggian:~> nova volume-list # gia na kratisoume to volume-id
     77giannis@ggian:~> nova list # gia na kratiosume to server-id
     78giannis@ggian:~> nova attach <server id> <volume id> # edw ginetai to attacha
     79}}}
     80Αν όλα έχουν πάει καλά, δίνοντας `ls /dev/vd?` πρέπει να βλέπουμε και το device `/dev/vdb`. Για να αξιοποιήσουμε το volume, κάνουμε partition (με `fdisk`, `cfdisk`, etc.), και δημιουργούμε filesystem στο primary partition (`/dev/vdb1`) με την εντολής `mkfs.\*\*` , όπου `\*\*` το filesystem που θέλουμε να δημιουργήσουμε (αν δεν έχουμε κάποια συγκεκριμένη απαίτηση, ας προτιμήσουμε ext4). Τέλος, κάνουμε mount το `/dev/vdb1`.
     81
     82Για να κάνουμε detach το volume, πρέπει πρώτα να το κάνουμε unmount μέσα από το vm, αλλιώς κινδυνεύομυμε να χάσουμε data.
     83
     84Για resizing, δεν ξεχνάμε ότι πρέπει να κανουμε resize και το filesystem!!! Σε περίπτωση που θέλουμε να κάνουμε shrink το volume πρέπει πρώτα να κάνουμε shrink το Fs και μετά το actual shrink του volume. Το ανάποδο ισχύει για το expand.
     85
     86== Monitoring ==
     87
     88Για τα πειράματα, έχει εγκατασταθεί Ganglia στους hosts που κάνουν host τον Openstack και κάνουν report και μετρικά από τον hypervisor για κάθε VM κάθε χρήστη. Το UI βρίσκεται στο [https://termi7.cslab.ece.ntua.gr/ganglia/](https://termi7.cslab.ece.ntua.gr/ganglia/) (**Μάλλον deprecated**). Για τα monitoring metrics των VM, επιλέγουμε την καρτέλα "Views" και επιλέγουμε το username μας από τη λίστα αριστερά. Αν δεν βρίσκεται το username μας ακόμα εκεί (ενώ έχουμε openstack account), περιμένουμε να φανεί (εντός 6 ωρών θα εμφανιστεί).
     89
     90== Performance (Deprecated) ==
     91
     92Σε περίπτωση που το Disk IO αναμένετε να είναι υψηλό, συνίσταται (ένθερμα) να φτιάχνετε VMs που ζουν στο δικό τους volume, αντί να κάνετε boot από τα "παραδοσιακά images" (ask ggian for more details..).
     93
     94Update: τα volumes τείνουν να εμφανίζουν stability issues across reboots, για αυτό καλό είναι να τα αποφεύγουμε.
     95
     96== Καλές πρακτικές ==
     97
     98Εδώ γράφουμε καλές πρακτικές για την αποδοτικότερη διαχείριση των resources μας.
     99
     100*   Αν θέλουμε να φτιάξουμε ένα cluster, συνίσταται η χρησιμοποίηση των snapshots. Συγκεκριμένα, έστω ότι θέλουμε να φτιάξουμε ένα Hadoop cluster. Φτιάχνουμε τον master και 1 slave, κρατάμε snapshot του slave και μετά bootαρουμε νέα VMs με βάση το snapshot αυτό.
     101*   Αν έχουμε κατασκευάσει ένα cluster και δεν το χρησιμοποιούμε για κάποιο χρονικό διάστημα, τότε καλό θα είναι να κάνουμε poweroff τα VMs για να απελευθερώσουμε πόρους για άλλους χρήστες.
     102
     103----
     104== Old version (Deprecated -- Παραμένει για reference) ==
     105
     106
     107=== Δημιουργία λογαριασμού ===
     108
     109Στέλνουμε e-mail στο admins@…
     110
     111=== Συνοπτικές οδηγίες χρήσης User Interface ===
     112
     113*   Πηγαίνουμε στο [http://termi2.cslab.ece.ntua.gr/ termi2]
     114*   Δίνουμε το username και τον κωδικό μας
     115*   Φτιάχνουμε ένα κλειδί (όχι απαραίτητο, αλλά επιθυμητό) πηγαίνοντας
     116
     117στο Access&Security και κάνοντας κλικ στο Create Keypair. Αποθηκεύουμε το .pem που θα μας επιστραφεί.
     118
     119Για να ξεκινήσουμε VMs:
     120
     121*   Πηγαίνουμε στο Images & Snapshots
     122*   Επιλέγουμε το Image που χρειαζόμαστε (στην περίπτωσή μας το Hama-<latest version>
     123
     124έχει τα πάντα) και πατάμε στο Launch δεξιά του.
     125
     126*   Συμπληρώνουμε τα στοιχεία με προσοχή στο dialog που εμφανίζεται.
     127
     128Σημαντικά είναι τα Flavor (πόσα CPUs και μνήμη θα έχει το καινούριο instance) το keypair (βάζουμε αυτό που φτιάξαμε προηγουμένως) και το instance count (πόσα θέλουμε δλδ).
     129
     130*   Κάνουμε κλικ στο Launch Instance και περιμένουμε να γίνουν running.
     131
     132Για πρόσβαση στα VMs χρειαζόμαστε πρόσβαση στο termi2 (με τις IPv4 διευθύνσεις τους). Οπότε κάνουμε ssh πρώτα στο termi2 και μετά ssh στο VM μας.
     133
     134Αν είμαστε στο εργαστήριο, μπορούμε να χρησιμοποιήσουμε και την IPv6 διεύθυνση του VM από το μηχάνημά μας απευθείας. Για να τη βρούμε, μπαίνουμε πρώτα από termi2 στο VM και τρέχουμε:
     135{{{
     136\# ifconfig | grep inet6 | grep Scope:Global | grep ff:fe | awk '{print
     137$3}' | cut -d/ -f1
     138}}}
     139=== Συνοπτικές οδηγίες χρήσης EC2 API (euca2ools) ===
     140
     141Από τη στιγμή που θα πάρουμε το zip με τα credentials μας, τρέχουμε:
     142{{{
     143:~# sudo aptitude install euca2ools # για να βάλουμε τα euca-\* εργαλεία με τα οποία επικοινωνούμε με το OpenStack
     144:~# unzip creds.zip
     145:~# source creds/novarc
     146:~# euca-describe-availability-zones verbose # μας δείχνει αν τρέχει το cluster σωστά
     147:~# euca-describe-images # μας δείχνει τους διαθέσιμους δίσκους VMs που μπορούμε να τρέξουμε
     148:~# euca-add-keypair <keyname> # δημιουργεί ένα ζεύγος ιδιωτικού-δημόσιου κλειδιού για πρόσβαση στα VMs μας (αποθηκεύουμε το output, θα το χρησιμοποιήσουμε για πρόσβαση)
     149:~# euca-run-instance -k <keyname> -n 1 -t m1.tiny <ami> # δημιουργεί ένα vm τύπου m1.tiny από το ami που θα επιλέξουμε από το output της εντολής euca-describe-images
     150:~# euca-describe-instances # μας δείχνει τα VMs μας και σε τι state βρίσκονται
     151:~# euca-terminate-instances <instance id> # κλείνει το VM με  <instance id>
     152}}}
     153=== Συνοπτικές οδηγίες χρήσης RADOS cluster από EC2 API (euca2ools) ===
     154
     155Το RADOS cluster στήθηκε για συγκεκριμένο τεστ, αλλά μάλλον θα παραμείνει για γενική χρήση. Ακολουθούν γενικές οδηγίες για τη χρήση του από euca2ools (συστήνεται):
     156{{{
     157$ euca-create-volume -z nova -s 10 #(δημιουργία ενός νέου volume 10 GB)
     158$ euca-describe-volumes #(διαθέσιμα volumes - Προσοχή: δεν υπάρχουν
     159πληροφορίες χρήστη)
     160$ euca-attach-volume -i <i-00000ΧΧΧ> -d </dev/vdb> <vol-00000001>
     161#(κάνουμε attach το δίσκο στο VM με id i-XXX. To -d χρειάζεται αλλά
     162"αγνοείται" από το VM, οπότε οι δίσκοι γίνονται mount με τη σειρά
     163vdb/vdc etc. ανeξάρτητα από το όρισμα.)
     164}}}
     165Από το VM:
     166
     167`\# fdisk/mkfs/mount/... /dev/vdb`
     168
     169Όταν έχουμε τελειώσει με τη χρήση, κάνουμε:
     170{{{
     171\# umount /dev/vdb
     172...
     173$ euca-detach-volume <vol-00000001>
     174}}}
     175και μπορούμε μετά να ξαναβάλουμε το δίσκο σε όποιο VM θέλουμε, μαζί με τα δεδομένα φυσικά. Για να τον σβήσουμε τρέχουμε:
     176
     177`$ euca-delete-volume <vol-00000001>`
     178
     179=== Διαθέσιμα μεγέθη VMs (flavors) ===
     180{{{
     181m1.tiny: Memory: 512MB, VCPUS: 1, Storage: 0GB, FlavorID: 1, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0MB
     182m1.small: Memory: 2048MB, VCPUS: 1, Storage: 0GB, FlavorID: 2, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0M
     183m1.medium: Memory: 4096MB, VCPUS: 2, Storage: 0GB, FlavorID: 3, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0MB
     184m1.large: Memory: 8192MB, VCPUS: 4, Storage: 0GB, FlavorID: 4, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0MB
     185m1.xlarge: Memory: 16384MB, VCPUS: 8, Storage: 0GB, FlavorID: 5, Swap: 0GB, RXTX Quota: 0GB, RXTX Cap: 0MB
     186}}}
     187=== Σύνδεση από το σπίτι με την ipv6 ===
     188
     1892 τρόποι, ο δύσκολος είναι να κάνουμε ένα ssh tunnel ανάμεσα στο PC μας και το VM μέσω ενός μηχανήματος στο εργαστήριο στο οποίο έχουμε πρόσβαση από το σπίτι \*ΚΑΙ\* έχει ipv6 διεύθυνση. Τότε, κάνουμε ένα tunnel ανά πόρτα στην οποία θέλουμε να συνδεθούμε ως εξής:
     190
     191`\#  ssh -L <local port>:\[<ipv6\_host>\]:<ipv6\_host\_port> <user>@<proxy machine>`
     192
     193Αφήνουμε ανοιχτό το tunnel και όταν θα συνδεόμαστε στην πόρτα localhost:<local port> θα βλέπουμε την απομακρυσμένη πόρτα στο μηχάνημα.
     194
     195Ο δεύτερος τρόπος, πιο εύκολος, είναι να χρησιμοποιήσουμε ένα από τα attached scripts στη σελίδα.
     196
     197=== Scripts ===
     198
     199Attached script για χρήση 6to4 από το σπίτι (για Fedora 18 και Ubuntu 12.10).
     200
     201=== Attachments (inactive links) ===
     202
     203*   [setup\_6to4\_fedora.sh](/trac/attachment/wiki/OpenStackUsage/setup_6to4_fedora.sh "View attachment") (1.0 kB) - added by _eangelou_ [9 years](/trac/timeline?from=2013-03-19T00%3A43%3A14Z%2B0200&precision=second "2013-03-19T00:43:14Z+0200 in Timeline") ago.
     204*   [setup\_6to4\_ubuntu.sh](/trac/attachment/wiki/OpenStackUsage/setup_6to4_ubuntu.sh "View attachment") (1.1 kB) - added by _eangelou_ [9 years](/trac/timeline?from=2013-03-19T02%3A18%3A06Z%2B0200&precision=second "2013-03-19T02:18:06Z+0200 in Timeline") ago.
     205*   [tun6to4\_1.0-1\_all.deb](/trac/attachment/wiki/OpenStackUsage/tun6to4_1.0-1_all.deb "View attachment") (6.5 kB) - added by _eangelou_ [9 years](/trac/timeline?from=2013-12-12T20%3A04%3A33Z%2B0200&precision=second "2013-12-12T20:04:33Z+0200 in Timeline") ago. Easy packaging for script and upstart conf file
     206*   [global.ini](/trac/attachment/wiki/OpenStackUsage/global.ini "View attachment") (216 bytes) - added by _eangelou_ [7 years](/trac/timeline?from=2015-05-04T12%3A04%3A56Z%2B0300&precision=second "2015-05-04T12:04:56Z+0300 in Timeline") ago.