Laboratorium OpenStack
Ustawienia grup
Każda z grup posiada rożne adresy IP, które będą używane w poniższych ćwiczeniach. Zanotuj je i pamiętaj aby w konfiguracji wprowadzać poprawne dane - w przeciwnym wypadku lab może nie działać poprawnie.
nazwa hosta: openstack1.lab.local
adres IP hosta: 10.0.197.11
Pula adresow plywajacych: 10.0.197.111,10.0.197.120
nazwa hosta: openstack2.lab.local
adres IP hosta: 10.0.197.12
Pula adresow plywajacych: 10.0.197.121,10.0.197.130
nazwa hosta: openstack3.lab.local
adres IP hosta: 10.0.197.13
Pula adresow plywajacych: 10.0.197.131,10.0.197.140
nazwa hosta: openstack4.lab.local
adres IP hosta: 10.0.197.14
Pula adresow plywajacych: 10.0.197.141,10.0.197.150
nazwa hosta: openstack5.lab.local
adres IP hosta: 10.0.197.15
Pula adresow plywajacych: 10.0.197.151,10.0.197.160
nazwa hosta: openstack6.lab.local
adres IP hosta: 10.0.197.16
Pula adresow plywajacych: 10.0.197.161,10.0.197.170
nazwa hosta: openstack7.lab.local
adres IP hosta: 10.0.197.17
Pula adresow plywajacych: 10.0.197.171,10.0.197.180
nazwa hosta: openstack8.lab.local
adres IP hosta: 10.0.197.18
Pula adresow plywajacych: 10.0.197.181,10.0.197.190
Instalacja
1. Wybór platformy systemowej
Po uruchomieniu, system załaduje z sieci dostępne profile i rozpocznie instalacje CentOSa. Zapytaj prowadzącego lab, który z profili należy wybrać
2. Dezaktywacja zbędnych usług
Dezaktywuj zbędne/niekompatybilne usługi (poniższe usługi przestaną działać po restarcie systemu):
systemctl disable firewalld
systemctl disable NetworkManager
3. Instalacja brakujących pakietów
Zaktualizuj system i zainstaluj brakujące pakiety:
yum install -y openvswitch*
yum -y update
4. Instalacja repozytoriów OpenStack
Zainstaluj repozytoria instalacyjne OpenStack i zrestartuj serwer:
yum install -y https://rdoproject.org/repos/rdo-release.rpm
yum -y update
yum install -y openstack-packstack
5a. Ustawienie nazwy hosta
Zmień nazwę hosta na openstackX.lab.local gdzie X jest numerem grupy
hostnamectl set-hostname openstack<<numer_grupy>>.lab.local
5b. Ustawienie nazwy hosta
Dodaj wpis do pliku /etc/hosts dotyczący FQDN hosta:
10.0.197.<<numer_grupy>> openstack<<numer_grupy>>.lab.local openstack<<numer_grupy>>
Dla przykładu, plik /etc/hosts dla grupy 23 powinien wyglądać następująco:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.197.23 openstack23.lab.local openstack23
6a. Konfiguracja wirtualnego switcha
Za pomocą polecenia:
ip a
zlokalizuj nazwę interfejsu sieciowego podłączonego do sieci (z adresem 10.0.197.0/24). W niniejszym przykładzie jest to interfejs en01
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether d0:bf:9c:46:31:c0 brd ff:ff:ff:ff:ff:ff
inet 10.0.197.203/24 brd 10.0.197.255 scope global noprefixroute dynamic eno1
valid_lft 574sec preferred_lft 574sec
inet6 fe80::d2bf:9cff:fe46:31c0/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether d0:bf:9c:46:31:c1 brd ff:ff:ff:ff:ff:ff
...a następnie za pomocą jednego z edytorów (vim,mcedit,nano) zmodyfikuj plik konfiguracyjny interfejsu /etc/sysconfig/network-scripts/ifcfg-<<nazwa_interfejsu_zlokalizowanego_powyżej>>
DEVICE=<<nazwa_interfejsu_zlokalizowanego_powyżej>>
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes
6b. Konfiguracja wirtualnego switcha
Ustaw statyczny adres IP (10.0.197.X gdzie X jest numerem grupy) oraz skonfiguruj interfejs br-ex. Do tego celu musisz stworzyć plik: /etc/sysconfig/network-scripts/ifcfg-br-ex
touch /etc/sysconfig/network-scripts/ifcfg-br-ex
..a następnie za pomocą jednego z edytorów (vim, mcedit, nano) wyedytuj jego zawartość
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=10.0.197.<<numer_grupy>>
NETMASK=255.255.255.0
GATEWAY=10.0.197.200
DNS1=8.8.8.8
ONBOOT=yes
6c. Konfiguracja wirtualnego switcha - testy
Zresetuj serwer, uruchom konsole, sprawdź ustawienia sieci i wykonaj polecenie PING na domyślną bramę (10.0.197.200 oraz adres serwera DNS)
Wykonaj polecenie: ip a aby sprawdzić konfiguracje sieci
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP group default qlen 1000
link/ether 00:0c:29:1c:6e:7a brd ff:ff:ff:ff:ff:ff
inet6 fe80::20c:29ff:fe1c:6e7a/64 scope link
valid_lft forever preferred_lft forever
3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether a2:a9:3f:b8:17:13 brd ff:ff:ff:ff:ff:ff
4: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 00:0c:29:1c:6e:7a brd ff:ff:ff:ff:ff:ff
inet 10.0.197.11/24 brd 10.0.197.255 scope global br-ex
valid_lft forever preferred_lft forever
inet6 fe80::c46c:99ff:fe84:9b42/64 scope link
valid_lft forever preferred_lft forever
Wykonaj polecenie ping 10.0.197.200 aby sprawdzić poprawna konfiguracje sieci
PING 10.0.197.200 (10.0.197.200) 56(84) bytes of data.
64 bytes from 10.0.197.200: icmp_seq=1 ttl=64 time=0.747 ms
64 bytes from 10.0.197.200: icmp_seq=2 ttl=64 time=0.715 ms
64 bytes from 10.0.197.200: icmp_seq=3 ttl=64 time=0.707 ms
--- 10.0.197.200 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.707/0.723/0.747/0.017 ms
Wykonaj polecenie dig www.eti.pg.gda.pl aby sprawdzić poprawne połączenie z usługą DNS
DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> www.eti.pg.gda.pl
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6207
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.eti.pg.gda.pl. IN A
;; ANSWER SECTION:
www.eti.pg.gda.pl. 8829 IN A 153.19.55.227
;; Query time: 16 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Apr 16 20:20:35 CEST 2019
;; MSG SIZE rcvd: 62
7. Tworzenie domyślnego pliku konfiguracyjnego
Wygeneruj plik konfiguracyjny (answer-file)
packstack --gen-answer-file=lab_config
8. Edycja domyślnego pliku konfiguracyjnego
Wyedytuj plik answer-file zmieniając następujące wartości
CONFIG_CEILOMETER_INSTALL=n
CONFIG_AODH_INSTALL=n
CONFIG_CINDER_VOLUMES_SIZE=500G
CONFIG_PROVISION_DEMO=n
9. Instalacja OpenStack
Rozpocznij instalacje podając answer_file jako plik konfiguracyjny:
[root@openstack1 ~]# packstack --answer-file=lab_config
Proces instalacji może zająć do 15 minut
Welcome to the Packstack setup utility
The installation log file is available at: /var/tmp/packstack/20190416-221959-AcJnyW/openstack-setup.log
Installing:
Clean Up [ DONE ]
Discovering ip protocol version [ DONE ]
Setting up ssh keys [ DONE ]
Preparing servers [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Preparing pre-install entries [ DONE ]
Setting up CACERT [ DONE ]
Preparing AMQP entries [ DONE ]
Preparing MariaDB entries [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
Preparing Keystone entries [ DONE ]
Preparing Glance entries [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Preparing Cinder entries [ DONE ]
Preparing Nova API entries [ DONE ]
Creating ssh keys for Nova migration [ DONE ]
Gathering ssh host keys for Nova migration [ DONE ]
Preparing Nova Compute entries [ DONE ]
Preparing Nova Scheduler entries [ DONE ]
Preparing Nova VNC Proxy entries [ DONE ]
Preparing OpenStack Network-related Nova entries [ DONE ]
Preparing Nova Common entries [ DONE ]
Preparing Neutron LBaaS Agent entries [ DONE ]
Preparing Neutron API entries [ DONE ]
Preparing Neutron L3 entries [ DONE ]
Preparing Neutron L2 Agent entries [ DONE ]
Preparing Neutron DHCP Agent entries [ DONE ]
Preparing Neutron Metering Agent entries [ DONE ]
Checking if NetworkManager is enabled and running [ DONE ]
Preparing OpenStack Client entries [ DONE ]
Preparing Horizon entries [ DONE ]
Preparing Swift builder entries [ DONE ]
Preparing Swift proxy entries [ DONE ]
Preparing Swift storage entries [ DONE ]
Preparing Puppet manifests [ DONE ]
Copying Puppet modules and manifests [ DONE ]
Applying 10.0.197.11_controller.pp
10.0.197.11_controller.pp: [ DONE ]
Applying 10.0.197.11_network.pp
10.0.197.11_network.pp: [ DONE ]
Applying 10.0.197.11_compute.pp
10.0.197.11_compute.pp: [ DONE ]
Applying Puppet manifests [ DONE ]
Finalizing [ DONE ]
**** Installation completed successfully ******
Additional information:
* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
* File /root/keystonerc_admin has been created on OpenStack client host 10.0.197.11. To use the command line tools you need to source the file.
* To access the OpenStack Dashboard browse to http://10.0.197.11/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
* The installation log file is available at: /var/tmp/packstack/20190416-221959-AcJnyW/openstack-setup.log
* The generated manifests are available at: /var/tmp/packstack/20190416-221959-AcJnyW/manifests
You have new mail in /var/spool/mail/root
Konfiguracja
1. Logowanie do pulpitu OpenStack
Zaloguj się to openstack za pomocą następującego linka (pamiętaj, aby w miejsce XXX wprowadzić numer swojej grupy):
http://openstackXXX.radkowski.local/dashboard
Login i hasło do dostępu znajdują się w pliku /root/keystonerc_admin
2. Konfiguracja Security Groups
Na potrzeby niniejszego maila należny stworzyć nowa grupę zabezpieczeń pozwalającą na połączenia w obydwu kierunkach dla protokołów TCP, UDP i ICMP.
W pierwszym kroku tworzymy grupę o nazwie lab_studium_sec_group
3. Modyfikacje reguł Security Groups
Za pomocą przycisku Manage Rules, uruchamiamy edycje grupy. Usuwamy dwie domyślne reguły oraz dodajemy 6 nowych przepuszczających ruch TCP, UDP i ICMP w obydwu kierunkach
4. Przegląd reguł Security Groups
Po wprowadzeniu wszystkich reguł, konfiguracja powinna wyglądać następująco
5a. Konfiguracja sieci - zdefiniowanie sieci zewnętrznej
Za pomocą zakładki Admin -> Networks -> Networks zdefiniuj nowa siec zewnętrzna w/g poniższych parametrów (przycisk Create Network):
- Name: siec_zewnetrzna
- Project: admin
- Provider Network Type: Flat
- Physical Network: extnet
- Enable Admin State: aktywne
- Shared: nieaktywne
- External Network: aktywne
- Create Subnet: aktywne
5b. Konfiguracja sieci - zdefiniowanie adresacji podsieci
- Subnet Name: podsiec_zewnetrzna
- Network Address: 10.0.197.0/24
- IP Version: IPv4
- Gateway IP: 10.0.197.200
- Disable Gateway: nieaktywne
5c. Konfiguracja sieci - zdefiniowanie uslug podsieci
- Allocation Pools: Adresy IP przypisane grupie
- DNS: puste
- Host Routers: puste
5d. Konfiguracja sieci - zdefiniowanie sieci wewnętrznej podsieci
Za pomocą zakładki Project -> Network -> Networks wybierz Create Network
- Network Name: siec_wewnetrzna
- Enable Admin State: aktywne
- Shared: nieaktywne
- Create Subnet: aktywne
5e. Konfiguracja sieci - zdefiniowanie adresacji podsieci
Za pomocą zakładki Project -> Network -> Networks wybierz Create Network
- Subnet Name: podsiec_wewnetrzna
- Network Address: 172.16.0.0/24
- IP Version: IPv4
- Gateway IP: puste
- Disable Gateway: nieaktywne
5f. Konfiguracja sieci - zdefiniowanie uslug podsieci
- Allocation Pools: 172.16.0.10,172.16.0.200
- DNS: puste
- Host Routers: puste
5g. Konfiguracja sieci - zdefiniowanie Routera
Za pomocą zakładki Project -> Network -> Routers wybierz Create Router
- Router Name: glowny_router
- Enable Admin State: aktywne
- External Network: siec_zewnetrzna
- Enable SNAT: aktywne
5h. Konfiguracja sieci - konfiguracja portow Routera
- Subnet: Siec_wewnetrzna
- IP Address: puste
OpenStack dysponuje narzędziami konsolowymi, umożliwiającymi konfiguracje systemu bez konieczności uruchamiania panelu webowego. Skrypt konfiguracji sieci (analogicznej do powyższej) znajduje się poniżej
# . keystonerc_admin
# neutron net-create external_network --provider:network_type flat --provider:physical_network extnet --router:external
# neutron subnet-create --name public_subnet --enable_dhcp=False --allocation-pool=start=192.168.122.10,end=192.168.122.20 \
--gateway=192.168.122.1 external_network 192.168.122.0/24
# neutron net-create private_network
# neutron subnet-create --name private_subnet private_network 192.168.100.0/24
# neutron router-create router1
# neutron router-gateway-set router1 external_network
neutron router-interface-add router1 private_subnet
5i. Testowanie poprawności konfiguracji sieci
Za pomocą zakładki Project -> Network -> Network Topology sprawdź poprawność konfiguracji sieci oraz routera
6. Dodanie obrazu instalacyjnego
Cirros jest mini dystrybucją linuxa dedykowaną do testów (min. konfiguracji OpenStack). Korzystając z poniższego linku, pobierz obraz instalacyjny na lokalny komputer
Nastepnie za pomoca Project -> Images dodaj obraz do systemu klikajac przycisk New Image:
- Image Name: Cirros
- Image Source: pobrany wczesniej plik.img
- Format: QCOW2
- Minimum Disk: 1GB
- Minimum RAM: 256MB
Praca w środowisku OpenStack
1. Uruchomienie instancji CirrOS
Za pomocą Project -> Compute ->Instances uruchom nowa instancje (Launch Instance)
- Nazwa: Lab
- Descritpion: dowolne
- Availability Zone: nova
- Count: 1
2. Uruchomienie instancji CirrOS - definicja źródła
- Boot source: Image
- Create New Volume: YES
- Delete Volume on Instance Delete: YES
- Volume Size (GB): 1
- Allocated: Cirros
3. Uruchomienie instancji CirrOS - definicja typu zaalokowanych zasobów
- Allocated: m1.tiny
4. Uruchomienie instancji CirrOS - definicja sieci
- Allocated: siec_wewnetrzna
5. Uruchomienie instancji CirrOS - definicja dodatkowych portów sieciowych
- PUSTE
6. Uruchomienie instancji CirrOS - definicja security groups
- Allocated: lab_studium_sec_group
- Available: default
Po wprowadzeniu powyzszych danych, klikamy przycisk Launch Instance
7. Sprawdzenie poprawności uruchomienia instancji
Po uruchomieniu, nowa instancja powinna być widoczna z widoku Project -> Compute -> Instances
8. Logowanie do instancji za pomocą lokalnej konsoli
OpensStack zawiera lokalną konsole, która może być do użyta do zalogowania się do instancji. konsola ta jest dostępna po kliknięciu na nazwę instancji a następnie wybraniu zakładki Console
9a. Konfiguracja pływającego (floating) IP
W widoku uruchomionych instancji, rozwiń menu po prawej stronie i wybierz opcje: "Associate Floating IP"
9b. Konfiguracja pływającego IP - definicja nowych adresów
Jeśli system nie dysponuje wolnymi adresami, należy dodać je za pomocą przycisku +. Adresy te zostaną dodane z puli, zdefiniowanej na początku dokumentacji jako "Pula adresów pływających"
9c. Konfiguracja pływającego IP - przypisanie nowych adresów
System wskaże dostępne pule, jakie mogą być użyte dla adresów pływających (w niniejszym przypadku z puli: siec_wewnetrzna)
9d. Konfiguracja pływającego IP - przypisanie adresu do portu
W ostatnim kroku należy podać z którym portem powiązany będzie interfejs pływający. Z racji tego, ze zdefiniowana wcześniej instancja posiada tylko jeden port, adres zostanie powiązany własnie z nim
9e. Konfiguracja plywajacego IP - testy
Nowy przypisane adres IP bedzie widoczny w widoku instancji jako drugi adres
10a. Uruchamianie wielu instancji jednocześnie
OpenStack umożliwia uruchomienie wielu maszyn jednocześnie (które następnie mogą być konfigurowane/modyfikowane za pomocą dodatkowych narzędzi). Procedurę uruchamiania polega na zwiększeniu ilości instancji za pomocą parametru Count.
10b. Uruchamianie wielu instancji jednocześnie - nazewnictwo
Po uruchomieniu system zacznie budować instancje w identyczny sposób, jak buduje pojedyncze. Każda z nowej instancji będzie posiadać nazwę zdefiniowana podczas konfiguracji oraz numer. W niniejszym przykładzie jako nazwę podano multi, system sam po myślniku dodał kolejne numery: multi-1, multi-2, ....multi-9,multi-10
10c. uruchamianie wielu instancji jednocześnie - podgląd topologii
Istnieje możliwość podglądu skonfigurowanej topologii w widoku "Network Topology". Pokazuje on nie tylko liczbę uruchomionych instancji ale również i siec(i) do której są podłączone oraz router(y) za pomocą których łącza się ze światem zewnętrznym i/lub innymi sieciami zdefiniowanymi w systemie.