Paweł Suder
17.05.2018
Przejdźmy do przykładu użycia, czyli pokażemy, jak można wykorzystać projekt cloud, na własne potrzeby, w kilku prostych krokach.
W projekcie wymagany jest klucz publiczny SSH
Pierwsze co należy wykonać, to wygenerować klucz SSH na swoim komputerze, jeśli go nie ma, a następnie dodać jego publiczną cześć do projektu.
Klucz ten będzie wykorzystywany do logowania się na instancję.
Dodanie serwera można wykonać przez menu projektu
Następnie możemy przejść do uruchomienia instancji.
Aby uruchomić nową instancję, należy w widoku infrastruktury projektu, wybrać z menu "Launch instance".
Uruchomienie instancji
Tworząc instację, należy wybrać region, obraz bazowy i typ serwera. Na potrzeby prezentacji użyłem Ubuntu 16.04, z odmianą sandbox, w Warszawie, o nazwie web-1.
W OVH, przy uruchomieniu instancji z OpenStack API, określany jest sposób naliczania opłat na godzinowy.
Czym jest region?
Czym jest obraz bazowy?
Czym jest typ serwera?
Dodatkowo, przy tworzeniu instancji możliwe jest określenie liczby instancji do uruchomienia, podanie skryptu do konfiguracji instancji (wykonywanego po uruchomieniu systemu) czy określenie sieci prywatnej, do jakiej ma zostać instancja podłączona.
Przy uruchomieniu instancji użyjemy skryptu post-install, by móc skorzystać później z skryptów Ansible.
#!/usr/bin/env bash sudo apt update sudo apt install -y build-essential python python-dev python-pip python-setuptools
O używaniu sieci prywatnej powiem przy okazji vRacka.
Tworzenie instancji
lscpu | grep -e Architecture -e CPU -e Thread -e Core free -m lsblk ip addr show ens3
Cloudem można także zarządzać API.
Oto przykład, na którym jest widoczne, jak można uruchomić instancję z poziomu OpenStack API. Po chwili można zalogować się na instancję przez SSH.
source ~/Spaces/GitHub/openstack-playground/openrc-demo-waw1.sh nova list --fields name,status nova keypair-list nova keypair-add --pub-key ~/.ssh/id_rsa.pub psuder_desktop nova keypair-list nova boot --flavor s1-4 --image "Ubuntu 16.04" --nic net-name=Ext-Net --key-name psuder_desktop testing nova list --fields name,status nova list --fields name,status nova list --fields name,networks ssh ubuntu@54.37.131.86 uptime nova list --fields name nova delete testing nova list --fields name
➜ ~ nova list --fields name,status,networks
+--------------------------------------+-------+--------+-----------------------------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+-------+--------+-----------------------------------------------+
| a8337ef7-693b-4f8f-a90c-b5d4ed087528 | web-1 | ACTIVE | Ext-Net=54.38.136.26, 2001:41d0:601:2000::26c |
+--------------------------------------+-------+--------+-----------------------------------------------+
ubuntu@web-1:~$ ip addr show ens3 2: ens3:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether fa:16:3e:5b:71:db brd ff:ff:ff:ff:ff:ff inet 54.38.136.26/32 brd 54.38.136.26 scope global ens3 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:fe5b:71db/64 scope link valid_lft forever preferred_lft forever ubuntu@web-1:~$ ip route default via 54.38.136.1 dev ens3 54.38.136.1 dev ens3 scope link
Kilka zdań o sieci publicznej:
A teraz przejdźmy do sieci prywatnych.
Prywatne połączenie wszystkich serwerowni OVH na świecie
Sieć prywatna (tenant network) oparta jest o usługę vRack OVH.
vRack pozwala na połączenie prywatną siecią L2 różne usługi, której mają do dostęp do vRacka.
vRack pozwala na odizolowanie najważniejszych serwerów w ramach prywatnej sieci VLAN
Można wdrożyć aż do 4000 prywatnych sieci VLAN.
Sieci prywatne mogą służyć do różnych połączeń.
Możliwe połączenie Public Cloud z serwerami dedykowanymi
Możliwe jest połączenie instancji public clouda z serwerami dedykowanymi.
Do serwerów dedykowanych dostarczane jest łącze trunk, a do instancji cloud - wiele interfejsów różnych sieci prywatnych - ramki VLAN nie są widoczne.
Dodawanie sieci prywatnej vRack
Jak to wygląda w praktyce? Aby dodać sieć prywatną, klikamy na "plus" w widoku vRacka, w projekcie cloud.
Widok sieci prywatnych vRack
Oto jak prezentowana jest lista sieci prywatnych vRack w projekcie cloud.
Widok sieci w OpenStack Horizon
Oto jak prezentowana jest lista sieci prywatnych vRack przez OpenStack Horizon.
➜ ~ neutron net-show Private-Net neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. +--------------------------+--------------------------------------+ | Field | Value | +--------------------------+--------------------------------------+ | admin_state_up | True | | availability_zone_hints | | | availability_zones | nova | | created_at | 2018-02-13T10:44:43Z | | description | | | id | adc65d0c-abd3-47d9-a1a3-96ed4ea50485 | | ipv4_address_scope | | | ipv6_address_scope | | | mtu | 9000 | | name | Private-Net | | project_id | 84506b08626d4e03a581d170f3bc53d2 | | provider:network_type | vrack | | provider:segmentation_id | 0 | | qos_policy_id | | | revision_number | 4 | | router:external | False | | shared | False | | status | ACTIVE | | subnets | b55fd630-79e4-4101-9d30-12ba693533ca | | tags | | | tenant_id | 84506b08626d4e03a581d170f3bc53d2 | | updated_at | 2018-02-13T10:44:49Z | +--------------------------+--------------------------------------+
Oto jak prezentowana jest lista sieci prywatnych vRack przez OpenStack API.
Ważny jest, aby `segmentation_id` był taki sam w każdym regionie.
➜ ~ neutron subnet-show b55fd630-79e4-4101-9d30-12ba693533ca neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. +-------------------+----------------------------------------------------+ | Field | Value | +-------------------+----------------------------------------------------+ | allocation_pools | {"start": "192.168.0.214", "end": "192.168.0.254"} | | cidr | 192.168.0.0/24 | | created_at | 2018-02-13T10:44:49Z | | description | | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | | | host_routes | | | id | b55fd630-79e4-4101-9d30-12ba693533ca | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | | | network_id | adc65d0c-abd3-47d9-a1a3-96ed4ea50485 | | project_id | 84506b08626d4e03a581d170f3bc53d2 | | revision_number | 2 | | service_types | | | subnetpool_id | | | tenant_id | 84506b08626d4e03a581d170f3bc53d2 | | updated_at | 2018-02-13T10:44:49Z | +-------------------+----------------------------------------------------+
Subnet jest taki sam w wielu regionach, ale są różne zakresy adresów przyznawanych przez DHCP, tak aby nie było overlappingu adresów IP.
Oto przykład, na którym jest widoczne, jak można uruchomić instancję z poziomu OpenStack API z dodatkowym interfejsem oraz jak podłączyć dodatkowy interfejs sieci prywatnej do działającej instancji.
nova list --fields name,status nova list --fields name,networks nova boot --flavor s1-4 --image "Ubuntu 16.04" --nic net-name=Ext-Net --nic net-name=Private-Net --key-name psuder_desktop testing nova list --fields name,status nova list --fields name,status nova list --fields name,networks | grep 192.168.0.218 nova delete 735c849c-ad24-4093-8f33-5ce005c2470e neutron net-list | grep Private-Net nova interface-attach web-1 --net-id adc65d0c-abd3-47d9-a1a3-96ed4ea50485 ssh ubuntu@54.38.136.26 ip link sudo dhclient ens6 nova list --fields name,networks | grep 192.168.0.218
➜ ~ nova list --fields name,status,networks +--------------------------------------+-------+--------+----------------------------------------------------------------------------+ | ID | Name | Status | Networks | +--------------------------------------+-------+--------+----------------------------------------------------------------------------+ | 9c1097ae-2e7e-4244-91b6-017ed75191b4 | db-1 | ACTIVE | Ext-Net=145.239.28.190, 2001:41d0:601:2000::245; Private-Net=192.168.0.224 | | a8337ef7-693b-4f8f-a90c-b5d4ed087528 | web-1 | ACTIVE | Ext-Net=54.38.136.26, 2001:41d0:601:2000::26c; Private-Net=192.168.0.218 | +--------------------------------------+-------+--------+----------------------------------------------------------------------------+
Widok listy instancji z dwoma sieciami
Oto jak prezentowana jest lista instancji, która mają prywatne interfejsy.
ubuntu@web-1:~$ mtr -r -c 1 192.168.0.224
Start: Tue Feb 13 13:17:33 2018
HOST: web-1 Loss% Snt Last Avg Best Wrst StDev
1.|-- 192.168.0.224 0.0% 1 1.4 1.4 1.4 1.4 0.0
ubuntu@web-1:~$ mtr -r -c 1 145.239.28.190
Start: Tue Feb 13 13:17:52 2018
HOST: web-1 Loss% Snt Last Avg Best Wrst StDev
1.|-- 54.38.136.1 0.0% 1 0.2 0.2 0.2 0.2 0.0
2.|-- 192.168.250.254 0.0% 1 0.1 0.1 0.1 0.1 0.0
3.|-- 192.168.250.8 0.0% 1 0.3 0.3 0.3 0.3 0.0
4.|-- ip-145-239-28.eu 0.0% 1 0.4 0.4 0.4 0.4 0.0
Na slajdzie widać, jaka jest trasa pakietu w ramach sieci publicznej oraz lokalnej (prywatnej) vRack.
Technologia vRack (wirtualna szafa) pozwala na połączenie, odizolowanie i rozdzielenie usług OVH w ramach jednej lub kilku prywatnych i zabezpieczonych sieci L2.
Przejdźmy do następnego tematu naszej prezentacji, a mianowicie użycia OpenStack API z wykorzystaniem skryptów do automatyzacji, jak np. Ansible.
Oto przykład, gdzie widać, jak z pomocą skryptu Ansible uruchamiane są dwie instancje i konfigurowane, tak aby można była na nich korzystać z mysqla i wordpressa.
ansible-playbook playbook-1.yml nova list --fields name,status,networks ssh ubuntu@54.37.130.17 sudo docker ps mysql -u db_user -H 192.168.0.223 -p show databases; use db_wordpress; show tables;
Widok instalacji Wordpressa
Oto jak to wygląda z poziomu UI. Na slajdzie widać ekran podstawowej konfiguracji Wordpressa.
Widok Wordpressa
Po chwili widać panel admina Wordpress.
Widok przestrzeni dyskowej
W ramach OpenStacka istnieje serwis Swift, który pozwala na statyczne przechowywanie plików.
Object storage możemy użyć jako przestrzeń na backup.
Dodawanie nowego kontenera
Z poziomu panelu klienta można utworzyć nowy kontener na pliki. Wymagane jest wybranie regionu oraz typu.
Typ oznaczony jako hosting statyczny, to kontener publiczny, który posiada podstawowy layout strony HTML.
Kontener z sekcji Public Cloud Archive to kontener, do którego można wysyłać pliki przy pomocy rsynca.
Instalowanie pluginu w Wordpress
Dla Wordpressa istnieje plugin, który korzysta z OpenStack Swift (przestrzeni dyskowej), gdzie umieszczany jest backup Wordpressa.
Konfigurowanie pluginu w Wordpress
Plugin pozwala na wybranie OpenStack Swift.
Aby skonfigurować w pełni ten plugin, potrzebujemy wykonać kilka dodatkowych kroków przez panel klienta.
Dodawanie nowego użytkownika w projekcie OpenStack
Należy utworzyć nowego użytkownika, który ma dostęp do projektu cloud przez OpenStack API.
Pobranie konfiguracji dostępu do OpenStack API
Do konfiguracji pluginu potrzeba nam kilka dodatkowych informacji, które można odczytać z pliku konfiguracyjnego OpenStack.
Pobranie konfiguracji dostępu do OpenStack API
W pliku konfiguracyjnym można znaleźć informacje o:
Konfiguracja pluginu w Wordpress
Dane z pliku konfiguracyjnego podajemy w konfiguracji pluginu w Wordpressie.
Przed zapisaniem sprawdzamy, czy można ustawienia działają.
Po wykonaniu backup, w kontenerze widoczne są pliku wygenerowane przez plugin.
Jakie mają państwo pytania?
Ukłony, oklaski..