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.

W dalszej części dokumentacji, wszystkie odwołania do tabeli adresów będą zaznaczane za pomocą pomarańczowego okna ostrzeżenia

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

Cirros Image

 

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.

me@radkowski.pro