Mudanças entre as edições de "OpenStack com Open vSwitch e SDN"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Criou página com 'Projeto em andamento.')
 
 
(32 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 1: Linha 1:
Projeto em andamento.
+
''' Autor:''' Rafael Turnes Silveira
 +
 
 +
'''Resumo:'''
 +
 
 +
O  ambiente  em  que  encontram-se  as  redes  de  computadores  está  em  frequente transformação,  evolução  e  consequentemente  a  massificação  dos  seus  recursos.
 +
Estes  sistemas  e  recursos  precisam  ser  dinâmicos,  gerenciáveis  e  elásticos  para poderem adequar-se às necessidades dos usuários. Diante deste cenário desenvolvese um ambiente de computação em nuvem no IFSC, aplicando o modelo infraestrutura
 +
como  serviço.  Que  possibilita  o  provisionamento  dos  recursos  computacionais (processamento,  armazenamento  e  rede de  computadores)  aos  usuários de forma simples, automatizada e remotamente controlada.  As  pesquisas e atividades foram
 +
em cima da plataforma aberta  OpenStack,  demonstrando-se então uma ferramenta completa e simples do ponto de vista do usuário.
 +
 
 +
'''Abstract:'''
 +
 
 +
The  current  environment  from  the  computer  networks  faces  frequent  changes, evolution  and  consequently  the  massification  of  its  resources.  These  systems  and resources need to be dynamic, manageable and elastic in order to adapt to the needs users.  In  this  scenario  has  been  developed  an  environment  of  cloud  computing  at IFSC,  applying  the  model  infrastructure  as  a  service.  It  lets  the  provisioning  of computers resources (compute, storage, networking) in a simple, automated, remotely controlled way to the users.  The research and activities were on  the open platform OpenStack,  demonstrating a complete and simple  tool from the point of view of the user.
 +
 
 +
'''Palavra Chave:'''
 +
OpenStack, Computação em Nuvem, IaaS
 +
 
 +
== Arquivos ==
 +
 
 +
'''Monografia:''' [[Media:TCC_RafaelTurnesSilveira.pdf|Monografia.pdf]]
 +
 
 +
 
 +
[[Categoria:Trabalhos de Alunos]]
 +
[[Categoria:Projeto de Pesquisa]]
 +
[[Categoria:Projeto de Fim de Curso]]
 +
 
 +
 
 +
 
 +
Projeto em andamento com o aluno Rafael Turnes da Silveira.
 +
 
 +
 
 +
 
 +
 
 +
== Instalação ==
 +
 
 +
=== Controlador da nuvem (penny) ===
 +
==== Configuração básica ====
 +
===== Atualizando o sistema =====
 +
<code>apt-get update; apt-get upgrade; apt-get dist-upgrade</syntaxhighlight>
 +
===== Configurando interfaces de rede - /etc/network/interfaces =====
 +
<code>
 +
auto lo
 +
iface lo inet loopback
 +
 
 +
#OpenStack - Rede de gerenciamento
 +
auto p5p1
 +
iface p5p1 inet static
 +
        address 192.168.88.251
 +
        netmask 255.255.255.0
 +
 
 +
#OpenStack - Rede de configuração
 +
auto p5p1:0
 +
iface p5p1:0 inet static
 +
        address 192.168.89.251
 +
        netmask 255.255.255.0
 +
 
 +
#OpenStack - IFSC
 +
auto em1
 +
iface em1 inet manual
 +
        up ifconfig $IFACE 0.0.0.0 up
 +
        up ip link set $IFACE promisc on
 +
        up ethtool -s em1 wol g
 +
        down ip link set $IFACE promisc off
 +
        down ifconfig $IFACE down
 +
 
 +
auto br-ex
 +
iface br-ex inet static
 +
      address 172.18.3.251
 +
      netmask 255.255.192.0
 +
      gateway 172.18.0.254
 +
      dns-nameservers 8.8.8.8 8.8.4.4
 +
</syntaxhighlight>
 +
===== Instalando e configurando NTP server =====
 +
<code>
 +
sudo apt-get install -y ntp
 +
sed -i 's/server ntp.ubuntu.com/server ntp.ubuntu.com\nserver 127.127.1.0\nfudge 127.127.1.0 stratum 10/g' /etc/ntp.conf
 +
service ntp restart
 +
</syntaxhighlight>
 +
===== Instalando e configurando MySQL =====
 +
====== Instalando pacotes. ======
 +
Durante a instalação será pedido para inserir uma senha de root.
 +
<code>sudo apt-get install -y python-mysqldb mysql-server</syntaxhighlight>
 +
====== Mudando bind-address e aplicando a nova configuração ======
 +
<code>sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
 +
service mysql restart
 +
</syntaxhighlight>
 +
====== Criando banco de dados ======
 +
<code>
 +
mysql -u root -p <<EOF
 +
CREATE DATABASE nova;
 +
GRANT ALL PRIVILEGES ON nova.* TO 'novaUser'@'localhost' IDENTIFIED BY 'senha';
 +
CREATE DATABASE cinder;
 +
GRANT ALL PRIVILEGES ON cinder.* TO 'cinderUser'@'localhost' IDENTIFIED BY 'senha';
 +
CREATE DATABASE glance;
 +
GRANT ALL PRIVILEGES ON glance.* TO 'glanceUser'@'localhost' IDENTIFIED BY 'senha';
 +
CREATE DATABASE keystone;
 +
GRANT ALL PRIVILEGES ON keystone.* TO 'keystoneUser'@'localhost' IDENTIFIED BY 'senha';
 +
CREATE DATABASE quantum;
 +
GRANT ALL PRIVILEGES ON quantum.* TO 'quantumUser'@'localhost' IDENTIFIED BY 'senha';
 +
FLUSH PRIVILEGES;
 +
EOF
 +
</syntaxhighlight>
 +
===== Instalando servidor de fila de mensagem =====
 +
<code>
 +
sudo apt-get install rabbitmq-server
 +
rabbitmqctl change_password guest NovaSenha
 +
</syntaxhighlight>
 +
==== OpenStack Identity Service (codenome Keystone) ====
 +
===== Instalando Keystone =====
 +
<code>
 +
sudo apt-get install -y keystone python-keystone python-keystoneclient
 +
sudo rm /var/lib/keystone/keystone.db
 +
</syntaxhighlight>
 +
===== Configurando Keystone =====
 +
edit keystone files
 +
===== Aplicando a nova configuração =====
 +
<code>
 +
service keystone restart
 +
keystone-manage db_sync
 +
</syntaxhighlight>
 +
===== Criando tenants, usuários, roles, serviços e endpoints =====
 +
<code>
 +
#!/bin/bash
 +
 
 +
# Modify these variables as needed
 +
ADMIN_PASSWORD=${ADMIN_PASSWORD:-senhaAdministrador}
 +
SERVICE_PASSWORD=${SERVICE_PASSWORD:-senhaServiço}
 +
export OS_SERVICE_TOKEN="C8gqDVqW99pAY7yXewUy"
 +
export OS_SERVICE_ENDPOINT="http://localhost:35357/v2.0"
 +
SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-nomeDoServiço}
 +
#
 +
MYSQL_USER=keystone
 +
MYSQL_DATABASE=keystone
 +
MYSQL_HOST=localhost
 +
MYSQL_PASSWORD=password
 +
#
 +
KEYSTONE_REGION=IFSC-SJ-01
 +
KEYSTONE_HOST_EXT=172.18.3.251
 +
KEYSTONE_HOST_INT=192.168.88.251
 +
 
 +
# Shortcut function to get a newly generated ID
 +
function get_field() {
 +
    while read data; do
 +
        if [ "$1" -lt 0 ]; then
 +
            field="(\$(NF$1))"
 +
        else
 +
            field="\$$(($1 + 1))"
 +
        fi
 +
        echo "$data" | awk -F'[ \t]*\\|[ \t]*' "{print $field}"
 +
    done
 +
}
 +
 
 +
# Tenants
 +
ADMIN_TENANT=$(keystone tenant-create --name=admin | grep " id " | get_field 2)
 +
SERVICE_TENANT=$(keystone tenant-create --name=$SERVICE_TENANT_NAME | grep " id " | get_field 2)
 +
 
 +
# Users
 +
ADMIN_USER=$(keystone user-create --name=admin --pass="$ADMIN_PASSWORD" --email=rafael@turnes.com.br | grep " id " | get_field 2)
 +
NOVA_USER=$(keystone user-create --name=nova --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=rafael@turnes.com.br | grep " id " | get_field 2)
 +
GLANCE_USER=$(keystone user-create --name=glance --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=rafael@turnes.com.br | grep " id " | get_field 2)
 +
QUANTUM_USER=$(keystone user-create --name=quantum --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=rafael@turnes.com.br | grep " id " | get_field 2)
 +
CINDER_USER=$(keystone user-create --name=cinder --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=rafael@turnes.com.br | grep " id " | get_field 2)
 +
 
 +
# Roles
 +
ADMIN_ROLE=$(keystone role-create --name=admin | grep " id " | get_field 2)
 +
MEMBER_ROLE=$(keystone role-create --name=Member | grep " id " | get_field 2)
 +
 
 +
# Add Roles to Users in Tenants
 +
keystone user-role-add --user-id $ADMIN_USER --role-id $ADMIN_ROLE --tenant-id $ADMIN_TENANT
 +
keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $NOVA_USER --role-id $ADMIN_ROLE
 +
keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $GLANCE_USER --role-id $ADMIN_ROLE
 +
keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $QUANTUM_USER --role-id $ADMIN_ROLE
 +
keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $CINDER_USER --role-id $ADMIN_ROLE
 +
 
 +
# Create services
 +
COMPUTE_SERVICE=$(keystone service-create --name nova --type compute --description 'OpenStack Compute Service' | grep " id " | get_field 2)
 +
VOLUME_SERVICE=$(keystone service-create --name cinder --type volume --description 'OpenStack Volume Service' | grep " id " | get_field 2)
 +
IMAGE_SERVICE=$(keystone service-create --name glance --type image --description 'OpenStack Image Service' | grep " id " | get_field 2)
 +
IDENTITY_SERVICE=$(keystone service-create --name keystone --type identity --description 'OpenStack Identity' | grep " id " | get_field 2)
 +
EC2_SERVICE=$(keystone service-create --name ec2 --type ec2 --description 'OpenStack EC2 service' | grep " id " | get_field 2)
 +
NETWORK_SERVICE=$(keystone service-create --name quantum --type network --description 'OpenStack Networking service' | grep " id " | get_field 2)
 +
 
 +
# Create endpoints
 +
keystone endpoint-create --region $KEYSTONE_REGION --service-id $COMPUTE_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':8774/v2/$(tenant_id)s' --adminurl 'http://'"$KEYSTONE_HOST_INT"':8774/v2/$(tenant_id)s' --internalurl 'http://'"$KEYSTONE_HOST_INT"':8774/v2/$(tenant_id)s'
 +
keystone endpoint-create --region $KEYSTONE_REGION --service-id $VOLUME_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':8776/v1/$(tenant_id)s' --adminurl 'http://'"$KEYSTONE_HOST_INT"':8776/v1/$(tenant_id)s' --internalurl 'http://'"$KEYSTONE_HOST_INT"':8776/v1/$(tenant_id)s'
 +
keystone endpoint-create --region $KEYSTONE_REGION --service-id $IMAGE_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':9292' --adminurl 'http://'"$KEYSTONE_HOST_INT"':9292' --internalurl 'http://'"$KEYSTONE_HOST_INT"':9292'
 +
keystone endpoint-create --region $KEYSTONE_REGION --service-id $IDENTITY_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':5000/v2.0' --adminurl 'http://'"$KEYSTONE_HOST_INT"':35357/v2.0' --internalurl 'http://'"$KEYSTONE_HOST_INT"':5000/v2.0'
 +
keystone endpoint-create --region $KEYSTONE_REGION --service-id $EC2_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':8773/services/Cloud' --adminurl 'http://'"$KEYSTONE_HOST_INT"':8773/services/Admin' --internalurl 'http://'"$KEYSTONE_HOST_INT"':8773/services/Cloud'
 +
keystone endpoint-create --region $KEYSTONE_REGION --service-id $NETWORK_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':9696/' --adminurl 'http://'"$KEYSTONE_HOST_INT"':9696/' --internalurl 'http://'"$KEYSTONE_HOST_INT"':9696/'
 +
</syntaxhighlight>
 +
===== Testando Keystone =====
 +
====== Criando um arquivo de credênciais  ======
 +
<code> vim os.cred </syntaxhighlight>
 +
<code>
 +
export OS_TENANT_NAME=admin
 +
export OS_USERNAME=admin
 +
export OS_PASSWORD=senhaAdministrador
 +
export OS_AUTH_URL="http://192.168.88.251:5000/v2.0/"
 +
export OS_REGION_NAME=IFSC-SJ-01
 +
</syntaxhighlight>
 +
====== Listando usuários ======
 +
<code>
 +
root@penny:~# keystone user-list
 +
+----------------------------------+---------+---------+--------------------------+
 +
|                id                |  name  | enabled |          email          |
 +
+----------------------------------+---------+---------+--------------------------+
 +
| 0bcadb16258d4552839b9c776c89ff64 |  admin  |  True  |  rafael@turnes.com.br  |
 +
| 23fd34f439484b73a6eea9913ac580ad |  cinder |  True  |  rafael@turnes.com.br  |
 +
| 54ac7e04ab2540ed9ef428ed11b8fbcd | ederson |  True  | boidacarapreta@gmail.com |
 +
| 27d928bfefb84c0baefc0b13bcdd362a |  glance |  True  |  rafael@turnes.com.br  |
 +
| 773499148c564119b5e7e64d0c71bb3d |  marcos |  True  |    mmoecke@gmail.com    |
 +
| 61d08e2259e6403ba23918d87dea404b |  nova  |  True  |  rafael@turnes.com.br  |
 +
| 853266dae4f2409dbc035b1b6cd928c8 | quantum |  True  |  rafael@turnes.com.br  |
 +
| 45a33dbb899d4c199e961302796cb1a6 |  rafael |  True  |  rafael@turnes.com.br  |
 +
+----------------------------------+---------+---------+--------------------------+
 +
</syntaxhighlight>
 +
====== Listando serviços ======
 +
<code>
 +
root@penny:~# keystone service-list
 +
+----------------------------------+----------+----------+------------------------------+
 +
|                id                |  name  |  type  |        description          |
 +
+----------------------------------+----------+----------+------------------------------+
 +
| c3350aeba89d47f88a1d6761cd74256b |  cinder  |  volume  |  OpenStack Volume Service  |
 +
| f451c35c697a45b5b5e6a5bbe280d434 |  ec2    |  ec2    |    OpenStack EC2 service    |
 +
| 4d467a606ff44050a9d8a687e1311831 |  glance  |  image  |  OpenStack Image Service    |
 +
| ce703fa0839e4ad68b3bf1f7b48558c3 | keystone | identity |      OpenStack Identity      |
 +
| 9a662cef4e8b4e5eb46e8678fd4ff8c8 |  nova  | compute  |  OpenStack Compute Service  |
 +
| 82a32e1fab37445c9388dc9b5634088a | quantum  | network  | OpenStack Networking service |
 +
+----------------------------------+----------+----------+------------------------------+
 +
</syntaxhighlight>
 +
====== Listando roles ======
 +
<code>
 +
root@penny:~# keystone role-list
 +
+----------------------------------+----------+
 +
|                id                |  name  |
 +
+----------------------------------+----------+
 +
| 746be8d87850406f8eb39aa4b5e55fa3 |  Member  |
 +
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ |
 +
| acaf9716ce20467a9b82578bf4baf534 |  admin  |
 +
+----------------------------------+----------+
 +
</syntaxhighlight>
 +
====== Listando tenants ======
 +
<code>
 +
root@penny:~# keystone  tenant-list
 +
+----------------------------------+---------+---------+
 +
|                id                |  name  | enabled |
 +
+----------------------------------+---------+---------+
 +
| f6dc2f9266f14b848b6e577b7024854a |  IFSC  |  True  |
 +
| 4aaa0eb1b84d4405af0384a59053ac45 |  admin  |  True  |
 +
| 68082d94500045c19e9bd40dd0b1cc7f | service |  True  |
 +
+----------------------------------+---------+---------+
 +
 
 +
</syntaxhighlight>
 +
==== OpenStack Imagine Service (codenome Glance) ====
 +
===== Instalando Glance =====
 +
<code>
 +
apt-get -y install glance
 +
</syntaxhighlight>
 +
===== Configurando Glance =====
 +
<code>
 +
rm /var/lib/glance/glance.sqlite
 +
service glance-api restart && service glance-registry restart
 +
glance-manage db_sync
 +
</syntaxhighlight>
 +
===== Testando Glance =====
 +
====== Enviando uma imagem ======
 +
<code>
 +
mkdir /tmp/images
 +
cd /tmp/images/
 +
wget "http://uec-images.ubuntu.com/raring/current/raring-server-cloudimg-amd64-disk1.img"
 +
glance image-create --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu Server 13.04" < raring-server-cloudimg-amd64-disk1.img
 +
</syntaxhighlight>
 +
====== Listando imagens ======
 +
<code>
 +
root@penny:~# glance image-list
 +
+--------------------------------------+---------------------+-------------+------------------+-----------+--------+
 +
| ID                                  | Name                | Disk Format | Container Format | Size      | Status |
 +
+--------------------------------------+---------------------+-------------+------------------+-----------+--------+
 +
| 5b9b1a48-fdd0-4c72-8ab5-0ac073072b39 | Ubuntu Server 13.04 | qcow2      | bare            | 236519424 | active |
 +
+--------------------------------------+---------------------+-------------+------------------+-----------+--------+
 +
</syntaxhighlight>
 +
==== OpenStack Block Storage service (codenome Cinder) ====
 +
===== Instalando Cinder =====
 +
<code>
 +
apt-get install -y cinder-api cinder-scheduler cinder-volume iscsitarget open-iscsi iscsitarget-dkms python-cinderclient linux-headers-`uname -r`
 +
</syntaxhighlight>
 +
===== Configurando Cinder =====
 +
====== Pré-configuração ======
 +
<code>
 +
sed -i 's/false/true/g' /etc/default/iscsitarget
 +
service iscsitarget start
 +
service open-iscsi start
 +
pvcreate /dev/sda5
 +
vgcreate cinder-volumes /dev/sda5
 +
</syntaxhighlight>
 +
====== Editando arquivos de configuração ======
 +
====== cinder.conf ======
 +
<code>
 +
[DEFAULT]
 +
rootwrap_config = /etc/cinder/rootwrap.conf
 +
api_paste_confg = /etc/cinder/api-paste.ini
 +
iscsi_helper = ietadm
 +
volume_name_template = volume-%s
 +
volume_group = cinder-volumes
 +
verbose = True
 +
auth_strategy = keystone
 +
state_path = /var/lib/cinder
 +
lock_path = /var/lock/cinder
 +
volumes_dir = /var/lib/cinder/volumes
 +
sql_connection = mysql://cinder:servicePassword@localhost/cinder
 +
 
 +
# Configuration options if sending notifications via rabbitmq (these are
 +
# the defaults)
 +
rabbit_host = localhost
 +
rabbit_port = 5672
 +
rabbit_use_ssl = false
 +
rabbit_userid = guest
 +
rabbit_password = senhaRabbitMQ
 +
#rabbit_virtual_host = /nova
 +
</syntaxhighlight>
 +
 
 +
====== Aplicando a nova configuração ======
 +
<code>
 +
cinder-manage db sync
 +
service cinder-api restart ; service cinder-scheduler restart; service cinder-volume restart
 +
</syntaxhighlight>
 +
 
 +
===== Testando Cinder =====
 +
====== Criando volume ======
 +
<code>
 +
root@penny:~# cinder create --display-description "Primeiro Volume" 1
 +
+---------------------+--------------------------------------+
 +
|      Property      |                Value                |
 +
+---------------------+--------------------------------------+
 +
|    attachments    |                  []                  |
 +
|  availability_zone  |                nova                |
 +
|      bootable      |                false                |
 +
|      created_at    |      2013-10-21T20:41:58.711368      |
 +
| display_description |          Primeiro Volume            |
 +
|    display_name    |                None                |
 +
|          id        | be57581f-70eb-4f9a-8884-57ae14d6bc60 |
 +
|      metadata      |                  {}                  |
 +
|        size        |                  1                  |
 +
|    snapshot_id    |                None                |
 +
|    source_volid    |                None                |
 +
|        status      |              creating              |
 +
|    volume_type    |                None                |
 +
+---------------------+--------------------------------------+
 +
 
 +
</syntaxhighlight>
 +
====== Listando volume ======
 +
<code>
 +
root@penny:~# cinder list
 +
</syntaxhighlight>
 +
====== Deletando volume ======
 +
<code>
 +
root@penny:~# cinder delete 2da4b600-33f0-4576-b0ff-e3a3e8f95161
 +
</syntaxhighlight>
 +
 
 +
== Atualizando da versão Grizzly para Havana ==
 +
https://wiki.openstack.org/wiki/ReleaseNotes/Havana
 +
=== Parando serviços ===
 +
==== Nó de computação 1 (howard) ====
 +
<code>
 +
cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i stop; done
 +
cd /etc/init.d/; for i in $( ls quantum-* ); do sudo service $i stop; done
 +
</syntaxhighlight>
 +
==== Controlador da nuvem (penny) ====
 +
<code>
 +
cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i stop; done
 +
cd /etc/init.d/; for i in $( ls quantum-* ); do sudo service $i stop; done
 +
cd /etc/init.d/; for i in $( ls cinder-* ); do sudo service $i stop; done
 +
cd /etc/init.d/; for i in $( ls keystone-* ); do sudo service $i stop; done
 +
</syntaxhighlight>
 +
=== Backup ===
 +
==== Banco de dados ====
 +
<code>
 +
mkdir -p  /root/backup/database
 +
mysqldump -u root -p --all-databases > /root/backup/database/alldatabases.sql
 +
mysqldump -u root -p keystone > /root/backup/database/keystone.sql
 +
mysqldump -u root -p quantum > /root/backup/database/quantum.sql
 +
mysqldump -u root -p cinder > /root/backup/database/cinder.sql
 +
mysqldump -u root -p nova > /root/backup/database/nova.sql
 +
mysqldump -u root -p glance > /root/backup/database/glance.sql
 +
</syntaxhighlight>
 +
 
 +
==== Arquivos de configuração ====
 +
===== Keystone =====
 +
<code>
 +
cp -a /etc/keystone /root/backup/
 +
</syntaxhighlight>
 +
===== Glance =====
 +
<code>
 +
cp -a /etc/glance /root/backup/
 +
</syntaxhighlight>
 +
===== Cinder =====
 +
<code>
 +
cp -a /etc/cinder /root/backup/
 +
</syntaxhighlight>
 +
===== Nova =====
 +
<code>
 +
cp -a /etc/nova /root/backup/
 +
</syntaxhighlight>
 +
===== Quantum =====
 +
<code>
 +
cp -a /etc/quantum /root/backup/
 +
</syntaxhighlight>
 +
 
 +
=== Atualizando Ubuntu ===
 +
==== Controlador da nuvem (penny) ====
 +
<code>
 +
sudo apt-get update && sudo apt-get dist-upgrade
 +
sudo apt-get install update-manager-core
 +
sudo do-release-upgrade -d
 +
</syntaxhighlight>
 +
Agora basta seguir as instruções da tela
 +
 
 +
==== Nó de computação 1 (howard) ====
 +
<code>
 +
sudo apt-get update && sudo apt-get dist-upgrade
 +
sudo apt-get install update-manager-core
 +
sudo do-release-upgrade -d
 +
</syntaxhighlight>
 +
Agora basta seguir as instruções da tela
 +
=== Atualizando Banco de dados ===
 +
No controlador da nuvem (Penny)
 +
<code>
 +
nova-manage db sync
 +
cinder-manage db sync
 +
glance-manage upgrade
 +
keystone-manage db_sync
 +
</syntaxhighlight>
 +
=== Iniciando os serviços ===
 +
==== Nó de computação 1 (howard) ====
 +
<code>
 +
cd /etc/init/; for i in $( ls nova-* | cut -d. -f1); do sudo service $i restart; done
 +
cd /etc/init/; for i in $( ls quantum-* | cut -d. -f1); do sudo service $i restart; done
 +
</syntaxhighlight>
 +
==== Controlador da nuvem (penny) ====
 +
<code>
 +
cd /etc/init/; for i in $( ls nova-* | cut -d. -f1 ); do sudo service $i restart; done
 +
cd /etc/init/; for i in $( ls quantum-* | cut -d. -f1 ); do sudo service $i restart; done
 +
cd /etc/init/; for i in $( ls cinder-* | cut -d. -f1 ); do sudo service $i restart; done
 +
cd /etc/init/; for i in $( ls keystone* | cut -d. -f1 ); do sudo service $i restart; done
 +
</syntaxhighlight>
 +
 
 +
=== Testanto a migração ===
 +
==== Keystone ====
 +
<code>
 +
sudo -i
 +
source os.cred
 +
root@penny:~# keystone user-list
 +
+----------------------------------+---------+---------+--------------------------+
 +
|                id                |  name  | enabled |          email          |
 +
+----------------------------------+---------+---------+--------------------------+
 +
| 0bcadb16258d4552839b9c776c89ff64 |  admin  |  True  |  rafael@turnes.com.br  |
 +
| 23fd34f439484b73a6eea9913ac580ad |  cinder |  True  |  rafael@turnes.com.br  |
 +
| 54ac7e04ab2540ed9ef428ed11b8fbcd | ederson |  True  | boidacarapreta@gmail.com |
 +
| 27d928bfefb84c0baefc0b13bcdd362a |  glance |  True  |  rafael@turnes.com.br  |
 +
| 773499148c564119b5e7e64d0c71bb3d |  marcos |  True  |    mmoecke@gmail.com    |
 +
| 61d08e2259e6403ba23918d87dea404b |  nova  |  True  |  rafael@turnes.com.br  |
 +
| 853266dae4f2409dbc035b1b6cd928c8 | quantum |  True  |  rafael@turnes.com.br  |
 +
| 45a33dbb899d4c199e961302796cb1a6 |  rafael |  True  |  rafael@turnes.com.br  |
 +
+----------------------------------+---------+---------+--------------------------+
 +
</syntaxhighlight>
 +
==== Glance ====
 +
<code>
 +
mkdir /tmp/images
 +
cd /tmp/images/
 +
wget "http://uec-images.ubuntu.com/saucy/current/saucy-server-cloudimg-amd64-disk1.img"
 +
glance image-create --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu Server 13.10" < saucy-server-cloudimg-amd64-disk1.img
 +
+------------------+--------------------------------------+
 +
| Property        | Value                                |
 +
+------------------+--------------------------------------+
 +
| checksum        | 21d994119ec0a8491bc91113b718808d    |
 +
| container_format | bare                                |
 +
| created_at      | 2013-10-24T19:25:55                  |
 +
| deleted          | False                                |
 +
| deleted_at      | None                                |
 +
| disk_format      | qcow2                                |
 +
| id              | 5b049fb6-bb68-4ea8-9c68-01a025df830b |
 +
| is_public        | True                                |
 +
| min_disk        | 0                                    |
 +
| min_ram          | 0                                    |
 +
| name            | Ubuntu Server 13.10                  |
 +
| owner            | 4aaa0eb1b84d4405af0384a59053ac45    |
 +
| protected        | False                                |
 +
| size            | 241827840                            |
 +
| status          | active                              |
 +
| updated_at      | 2013-10-24T19:25:56                  |
 +
+------------------+--------------------------------------+
 +
root@penny:/tmp/images# glance image-list
 +
+--------------------------------------+---------------------+-------------+------------------+-----------+--------+
 +
| ID                                  | Name                | Disk Format | Container Format | Size      | Status |
 +
+--------------------------------------+---------------------+-------------+------------------+-----------+--------+
 +
| 5b9b1a48-fdd0-4c72-8ab5-0ac073072b39 | Ubuntu Server 13.04 | qcow2      | bare            | 236519424 | active |
 +
| 5b049fb6-bb68-4ea8-9c68-01a025df830b | Ubuntu Server 13.10 | qcow2      | bare            | 241827840 | active |
 +
+--------------------------------------+---------------------+-------------+------------------+-----------+--------+
 +
</syntaxhighlight>
 +
==== Cinder ====
 +
<code>
 +
root@penny:~# cinder list
 +
+--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
 +
|                  ID                  |  Status  |  Display Name  | Size | Volume Type | Bootable | Attached to |
 +
+--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
 +
| 420c2c3e-d195-492a-9b3f-50beb0d7280c | available | Testing cinder2 |  5  |    None    |  false  |            |
 +
| df7b1f5c-b287-4812-bfb8-9cd8b2c0ab2f | available |      None      |  10  |    None    |  false  |            |
 +
+--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+
 +
root@penny:~# cinder create --display-name "Testing new version" --display-description "Testing Havana Version" 10
 +
+---------------------+--------------------------------------+
 +
|      Property      |                Value                |
 +
+---------------------+--------------------------------------+
 +
|    attachments    |                  []                  |
 +
|  availability_zone  |                nova                |
 +
|      bootable      |                false                |
 +
|      created_at    |      2013-10-24T19:30:41.068222      |
 +
| display_description |        Testing Havana Version        |
 +
|    display_name    |        Testing new version          |
 +
|          id        | 75f766eb-8b95-4329-bbe3-b2b593fcf71d |
 +
|      metadata      |                  {}                  |
 +
|        size        |                  10                  |
 +
|    snapshot_id    |                None                |
 +
|    source_volid    |                None                |
 +
|        status      |              creating              |
 +
|    volume_type    |                None                |
 +
+---------------------+--------------------------------------+
 +
root@penny:~# cinder list
 +
+--------------------------------------+-----------+---------------------+------+-------------+----------+-------------+
 +
|                  ID                  |  Status  |    Display Name    | Size | Volume Type | Bootable | Attached to |
 +
+--------------------------------------+-----------+---------------------+------+-------------+----------+-------------+
 +
| 420c2c3e-d195-492a-9b3f-50beb0d7280c | available |  Testing cinder2  |  5  |    None    |  false  |            |
 +
| 75f766eb-8b95-4329-bbe3-b2b593fcf71d | available | Testing new version |  10  |    None    |  false  |            |
 +
| df7b1f5c-b287-4812-bfb8-9cd8b2c0ab2f | available |        None        |  10  |    None    |  false  |            |
 +
+--------------------------------------+-----------+---------------------+------+-------------+----------+-------------+
 +
 
 +
</syntaxhighlight>
 +
 
 +
==== Nova ====
 +
<code>
 +
</syntaxhighlight>
 +
 
 +
=== Migrando Quantum para Neutron ===
 +
<code>
 +
Upgrades from Grizzly
 +
 
 +
Starting the neutron-server after upgrading code, but prior to migration will result in some database models being created without the proper migrations occurring. The following upgrade setups should be taken to ensure a properly upgraded database.
 +
 
 +
Ensure that the database is stamped for Grizzly prior to stopping service.quantum-db-manage --config-file /path/to/quantum.conf --config-file /path/to/plugin/conf.ini stamp grizzly
 +
Stop quantum-server and deploy the Neutron code Do not start the neutron-server at this time.
 +
Run Havana Migration neutron-db-manage --config-file /path/to/quantum.conf --config-file /path/to/plugin/conf.ini upgrade havana
 +
Start neutron-server
 +
</syntaxhighlight>

Edição atual tal como às 14h41min de 21 de março de 2014

Autor: Rafael Turnes Silveira

Resumo:

O ambiente em que encontram-se as redes de computadores está em frequente transformação, evolução e consequentemente a massificação dos seus recursos. Estes sistemas e recursos precisam ser dinâmicos, gerenciáveis e elásticos para poderem adequar-se às necessidades dos usuários. Diante deste cenário desenvolvese um ambiente de computação em nuvem no IFSC, aplicando o modelo infraestrutura como serviço. Que possibilita o provisionamento dos recursos computacionais (processamento, armazenamento e rede de computadores) aos usuários de forma simples, automatizada e remotamente controlada. As pesquisas e atividades foram em cima da plataforma aberta OpenStack, demonstrando-se então uma ferramenta completa e simples do ponto de vista do usuário.

Abstract:

The current environment from the computer networks faces frequent changes, evolution and consequently the massification of its resources. These systems and resources need to be dynamic, manageable and elastic in order to adapt to the needs users. In this scenario has been developed an environment of cloud computing at IFSC, applying the model infrastructure as a service. It lets the provisioning of computers resources (compute, storage, networking) in a simple, automated, remotely controlled way to the users. The research and activities were on the open platform OpenStack, demonstrating a complete and simple tool from the point of view of the user.

Palavra Chave: OpenStack, Computação em Nuvem, IaaS

Arquivos

Monografia: Monografia.pdf


Projeto em andamento com o aluno Rafael Turnes da Silveira.



Instalação

Controlador da nuvem (penny)

Configuração básica

Atualizando o sistema

apt-get update; apt-get upgrade; apt-get dist-upgrade</syntaxhighlight>

Configurando interfaces de rede - /etc/network/interfaces

auto lo iface lo inet loopback

  1. OpenStack - Rede de gerenciamento

auto p5p1 iface p5p1 inet static

       address 192.168.88.251
       netmask 255.255.255.0
  1. OpenStack - Rede de configuração

auto p5p1:0 iface p5p1:0 inet static

       address 192.168.89.251
       netmask 255.255.255.0
  1. OpenStack - IFSC

auto em1 iface em1 inet manual

       up ifconfig $IFACE 0.0.0.0 up
       up ip link set $IFACE promisc on
       up ethtool -s em1 wol g
       down ip link set $IFACE promisc off
       down ifconfig $IFACE down

auto br-ex iface br-ex inet static

      address 172.18.3.251
      netmask 255.255.192.0
      gateway 172.18.0.254
      dns-nameservers 8.8.8.8 8.8.4.4

</syntaxhighlight>

Instalando e configurando NTP server

sudo apt-get install -y ntp sed -i 's/server ntp.ubuntu.com/server ntp.ubuntu.com\nserver 127.127.1.0\nfudge 127.127.1.0 stratum 10/g' /etc/ntp.conf service ntp restart </syntaxhighlight>

Instalando e configurando MySQL
Instalando pacotes.

Durante a instalação será pedido para inserir uma senha de root. sudo apt-get install -y python-mysqldb mysql-server</syntaxhighlight>

Mudando bind-address e aplicando a nova configuração

sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf service mysql restart </syntaxhighlight>

Criando banco de dados

mysql -u root -p <<EOF CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'novaUser'@'localhost' IDENTIFIED BY 'senha'; CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cinder.* TO 'cinderUser'@'localhost' IDENTIFIED BY 'senha'; CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glanceUser'@'localhost' IDENTIFIED BY 'senha'; CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystoneUser'@'localhost' IDENTIFIED BY 'senha'; CREATE DATABASE quantum; GRANT ALL PRIVILEGES ON quantum.* TO 'quantumUser'@'localhost' IDENTIFIED BY 'senha'; FLUSH PRIVILEGES; EOF </syntaxhighlight>

Instalando servidor de fila de mensagem

sudo apt-get install rabbitmq-server rabbitmqctl change_password guest NovaSenha </syntaxhighlight>

OpenStack Identity Service (codenome Keystone)

Instalando Keystone

sudo apt-get install -y keystone python-keystone python-keystoneclient sudo rm /var/lib/keystone/keystone.db </syntaxhighlight>

Configurando Keystone

edit keystone files

Aplicando a nova configuração

service keystone restart keystone-manage db_sync </syntaxhighlight>

Criando tenants, usuários, roles, serviços e endpoints

  1. !/bin/bash
  1. Modify these variables as needed

ADMIN_PASSWORD=${ADMIN_PASSWORD:-senhaAdministrador} SERVICE_PASSWORD=${SERVICE_PASSWORD:-senhaServiço} export OS_SERVICE_TOKEN="C8gqDVqW99pAY7yXewUy" export OS_SERVICE_ENDPOINT="http://localhost:35357/v2.0" SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-nomeDoServiço}

MYSQL_USER=keystone MYSQL_DATABASE=keystone MYSQL_HOST=localhost MYSQL_PASSWORD=password

KEYSTONE_REGION=IFSC-SJ-01 KEYSTONE_HOST_EXT=172.18.3.251 KEYSTONE_HOST_INT=192.168.88.251

  1. Shortcut function to get a newly generated ID

function get_field() {

   while read data; do
       if [ "$1" -lt 0 ]; then
           field="(\$(NF$1))"
       else
           field="\$$(($1 + 1))"
       fi
       echo "$data" | awk -F'[ \t]*\\|[ \t]*' "{print $field}"
   done

}

  1. Tenants

ADMIN_TENANT=$(keystone tenant-create --name=admin | grep " id " | get_field 2) SERVICE_TENANT=$(keystone tenant-create --name=$SERVICE_TENANT_NAME | grep " id " | get_field 2)

  1. Users

ADMIN_USER=$(keystone user-create --name=admin --pass="$ADMIN_PASSWORD" --email=rafael@turnes.com.br | grep " id " | get_field 2) NOVA_USER=$(keystone user-create --name=nova --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=rafael@turnes.com.br | grep " id " | get_field 2) GLANCE_USER=$(keystone user-create --name=glance --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=rafael@turnes.com.br | grep " id " | get_field 2) QUANTUM_USER=$(keystone user-create --name=quantum --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=rafael@turnes.com.br | grep " id " | get_field 2) CINDER_USER=$(keystone user-create --name=cinder --pass="$SERVICE_PASSWORD" --tenant-id $SERVICE_TENANT --email=rafael@turnes.com.br | grep " id " | get_field 2)

  1. Roles

ADMIN_ROLE=$(keystone role-create --name=admin | grep " id " | get_field 2) MEMBER_ROLE=$(keystone role-create --name=Member | grep " id " | get_field 2)

  1. Add Roles to Users in Tenants

keystone user-role-add --user-id $ADMIN_USER --role-id $ADMIN_ROLE --tenant-id $ADMIN_TENANT keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $NOVA_USER --role-id $ADMIN_ROLE keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $GLANCE_USER --role-id $ADMIN_ROLE keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $QUANTUM_USER --role-id $ADMIN_ROLE keystone user-role-add --tenant-id $SERVICE_TENANT --user-id $CINDER_USER --role-id $ADMIN_ROLE

  1. Create services

COMPUTE_SERVICE=$(keystone service-create --name nova --type compute --description 'OpenStack Compute Service' | grep " id " | get_field 2) VOLUME_SERVICE=$(keystone service-create --name cinder --type volume --description 'OpenStack Volume Service' | grep " id " | get_field 2) IMAGE_SERVICE=$(keystone service-create --name glance --type image --description 'OpenStack Image Service' | grep " id " | get_field 2) IDENTITY_SERVICE=$(keystone service-create --name keystone --type identity --description 'OpenStack Identity' | grep " id " | get_field 2) EC2_SERVICE=$(keystone service-create --name ec2 --type ec2 --description 'OpenStack EC2 service' | grep " id " | get_field 2) NETWORK_SERVICE=$(keystone service-create --name quantum --type network --description 'OpenStack Networking service' | grep " id " | get_field 2)

  1. Create endpoints

keystone endpoint-create --region $KEYSTONE_REGION --service-id $COMPUTE_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':8774/v2/$(tenant_id)s' --adminurl 'http://'"$KEYSTONE_HOST_INT"':8774/v2/$(tenant_id)s' --internalurl 'http://'"$KEYSTONE_HOST_INT"':8774/v2/$(tenant_id)s' keystone endpoint-create --region $KEYSTONE_REGION --service-id $VOLUME_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':8776/v1/$(tenant_id)s' --adminurl 'http://'"$KEYSTONE_HOST_INT"':8776/v1/$(tenant_id)s' --internalurl 'http://'"$KEYSTONE_HOST_INT"':8776/v1/$(tenant_id)s' keystone endpoint-create --region $KEYSTONE_REGION --service-id $IMAGE_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':9292' --adminurl 'http://'"$KEYSTONE_HOST_INT"':9292' --internalurl 'http://'"$KEYSTONE_HOST_INT"':9292' keystone endpoint-create --region $KEYSTONE_REGION --service-id $IDENTITY_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':5000/v2.0' --adminurl 'http://'"$KEYSTONE_HOST_INT"':35357/v2.0' --internalurl 'http://'"$KEYSTONE_HOST_INT"':5000/v2.0' keystone endpoint-create --region $KEYSTONE_REGION --service-id $EC2_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':8773/services/Cloud' --adminurl 'http://'"$KEYSTONE_HOST_INT"':8773/services/Admin' --internalurl 'http://'"$KEYSTONE_HOST_INT"':8773/services/Cloud' keystone endpoint-create --region $KEYSTONE_REGION --service-id $NETWORK_SERVICE --publicurl 'http://'"$KEYSTONE_HOST_EXT"':9696/' --adminurl 'http://'"$KEYSTONE_HOST_INT"':9696/' --internalurl 'http://'"$KEYSTONE_HOST_INT"':9696/' </syntaxhighlight>

Testando Keystone
Criando um arquivo de credênciais

vim os.cred </syntaxhighlight> export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=senhaAdministrador export OS_AUTH_URL="http://192.168.88.251:5000/v2.0/" export OS_REGION_NAME=IFSC-SJ-01 </syntaxhighlight>

Listando usuários

root@penny:~# keystone user-list +----------------------------------+---------+---------+--------------------------+ | id | name | enabled | email | +----------------------------------+---------+---------+--------------------------+ | 0bcadb16258d4552839b9c776c89ff64 | admin | True | rafael@turnes.com.br | | 23fd34f439484b73a6eea9913ac580ad | cinder | True | rafael@turnes.com.br | | 54ac7e04ab2540ed9ef428ed11b8fbcd | ederson | True | boidacarapreta@gmail.com | | 27d928bfefb84c0baefc0b13bcdd362a | glance | True | rafael@turnes.com.br | | 773499148c564119b5e7e64d0c71bb3d | marcos | True | mmoecke@gmail.com | | 61d08e2259e6403ba23918d87dea404b | nova | True | rafael@turnes.com.br | | 853266dae4f2409dbc035b1b6cd928c8 | quantum | True | rafael@turnes.com.br | | 45a33dbb899d4c199e961302796cb1a6 | rafael | True | rafael@turnes.com.br | +----------------------------------+---------+---------+--------------------------+ </syntaxhighlight>

Listando serviços

root@penny:~# keystone service-list +----------------------------------+----------+----------+------------------------------+ | id | name | type | description | +----------------------------------+----------+----------+------------------------------+ | c3350aeba89d47f88a1d6761cd74256b | cinder | volume | OpenStack Volume Service | | f451c35c697a45b5b5e6a5bbe280d434 | ec2 | ec2 | OpenStack EC2 service | | 4d467a606ff44050a9d8a687e1311831 | glance | image | OpenStack Image Service | | ce703fa0839e4ad68b3bf1f7b48558c3 | keystone | identity | OpenStack Identity | | 9a662cef4e8b4e5eb46e8678fd4ff8c8 | nova | compute | OpenStack Compute Service | | 82a32e1fab37445c9388dc9b5634088a | quantum | network | OpenStack Networking service | +----------------------------------+----------+----------+------------------------------+ </syntaxhighlight>

Listando roles

root@penny:~# keystone role-list +----------------------------------+----------+ | id | name | +----------------------------------+----------+ | 746be8d87850406f8eb39aa4b5e55fa3 | Member | | 9fe2ff9ee4384b1894a90878d3e92bab | _member_ | | acaf9716ce20467a9b82578bf4baf534 | admin | +----------------------------------+----------+ </syntaxhighlight>

Listando tenants

root@penny:~# keystone tenant-list +----------------------------------+---------+---------+ | id | name | enabled | +----------------------------------+---------+---------+ | f6dc2f9266f14b848b6e577b7024854a | IFSC | True | | 4aaa0eb1b84d4405af0384a59053ac45 | admin | True | | 68082d94500045c19e9bd40dd0b1cc7f | service | True | +----------------------------------+---------+---------+

</syntaxhighlight>

OpenStack Imagine Service (codenome Glance)

Instalando Glance

apt-get -y install glance </syntaxhighlight>

Configurando Glance

rm /var/lib/glance/glance.sqlite service glance-api restart && service glance-registry restart glance-manage db_sync </syntaxhighlight>

Testando Glance
Enviando uma imagem

mkdir /tmp/images cd /tmp/images/ wget "http://uec-images.ubuntu.com/raring/current/raring-server-cloudimg-amd64-disk1.img" glance image-create --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu Server 13.04" < raring-server-cloudimg-amd64-disk1.img </syntaxhighlight>

Listando imagens

root@penny:~# glance image-list +--------------------------------------+---------------------+-------------+------------------+-----------+--------+ | ID | Name | Disk Format | Container Format | Size | Status | +--------------------------------------+---------------------+-------------+------------------+-----------+--------+ | 5b9b1a48-fdd0-4c72-8ab5-0ac073072b39 | Ubuntu Server 13.04 | qcow2 | bare | 236519424 | active | +--------------------------------------+---------------------+-------------+------------------+-----------+--------+ </syntaxhighlight>

OpenStack Block Storage service (codenome Cinder)

Instalando Cinder

apt-get install -y cinder-api cinder-scheduler cinder-volume iscsitarget open-iscsi iscsitarget-dkms python-cinderclient linux-headers-`uname -r` </syntaxhighlight>

Configurando Cinder
Pré-configuração

sed -i 's/false/true/g' /etc/default/iscsitarget service iscsitarget start service open-iscsi start pvcreate /dev/sda5 vgcreate cinder-volumes /dev/sda5 </syntaxhighlight>

Editando arquivos de configuração
cinder.conf

[DEFAULT] rootwrap_config = /etc/cinder/rootwrap.conf api_paste_confg = /etc/cinder/api-paste.ini iscsi_helper = ietadm volume_name_template = volume-%s volume_group = cinder-volumes verbose = True auth_strategy = keystone state_path = /var/lib/cinder lock_path = /var/lock/cinder volumes_dir = /var/lib/cinder/volumes sql_connection = mysql://cinder:servicePassword@localhost/cinder

  1. Configuration options if sending notifications via rabbitmq (these are
  2. the defaults)

rabbit_host = localhost rabbit_port = 5672 rabbit_use_ssl = false rabbit_userid = guest rabbit_password = senhaRabbitMQ

  1. rabbit_virtual_host = /nova

</syntaxhighlight>

Aplicando a nova configuração

cinder-manage db sync service cinder-api restart ; service cinder-scheduler restart; service cinder-volume restart </syntaxhighlight>

Testando Cinder
Criando volume

root@penny:~# cinder create --display-description "Primeiro Volume" 1 +---------------------+--------------------------------------+ | Property | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | created_at | 2013-10-21T20:41:58.711368 | | display_description | Primeiro Volume | | display_name | None | | id | be57581f-70eb-4f9a-8884-57ae14d6bc60 | | metadata | {} | | size | 1 | | snapshot_id | None | | source_volid | None | | status | creating | | volume_type | None | +---------------------+--------------------------------------+

</syntaxhighlight>

Listando volume

root@penny:~# cinder list </syntaxhighlight>

Deletando volume

root@penny:~# cinder delete 2da4b600-33f0-4576-b0ff-e3a3e8f95161 </syntaxhighlight>

Atualizando da versão Grizzly para Havana

https://wiki.openstack.org/wiki/ReleaseNotes/Havana

Parando serviços

Nó de computação 1 (howard)

cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i stop; done cd /etc/init.d/; for i in $( ls quantum-* ); do sudo service $i stop; done </syntaxhighlight>

Controlador da nuvem (penny)

cd /etc/init.d/; for i in $( ls nova-* ); do sudo service $i stop; done cd /etc/init.d/; for i in $( ls quantum-* ); do sudo service $i stop; done cd /etc/init.d/; for i in $( ls cinder-* ); do sudo service $i stop; done cd /etc/init.d/; for i in $( ls keystone-* ); do sudo service $i stop; done </syntaxhighlight>

Backup

Banco de dados

mkdir -p /root/backup/database mysqldump -u root -p --all-databases > /root/backup/database/alldatabases.sql mysqldump -u root -p keystone > /root/backup/database/keystone.sql mysqldump -u root -p quantum > /root/backup/database/quantum.sql mysqldump -u root -p cinder > /root/backup/database/cinder.sql mysqldump -u root -p nova > /root/backup/database/nova.sql mysqldump -u root -p glance > /root/backup/database/glance.sql </syntaxhighlight>

Arquivos de configuração

Keystone

cp -a /etc/keystone /root/backup/ </syntaxhighlight>

Glance

cp -a /etc/glance /root/backup/ </syntaxhighlight>

Cinder

cp -a /etc/cinder /root/backup/ </syntaxhighlight>

Nova

cp -a /etc/nova /root/backup/ </syntaxhighlight>

Quantum

cp -a /etc/quantum /root/backup/ </syntaxhighlight>

Atualizando Ubuntu

Controlador da nuvem (penny)

sudo apt-get update && sudo apt-get dist-upgrade sudo apt-get install update-manager-core sudo do-release-upgrade -d </syntaxhighlight> Agora basta seguir as instruções da tela

Nó de computação 1 (howard)

sudo apt-get update && sudo apt-get dist-upgrade sudo apt-get install update-manager-core sudo do-release-upgrade -d </syntaxhighlight> Agora basta seguir as instruções da tela

Atualizando Banco de dados

No controlador da nuvem (Penny) nova-manage db sync cinder-manage db sync glance-manage upgrade keystone-manage db_sync </syntaxhighlight>

Iniciando os serviços

Nó de computação 1 (howard)

cd /etc/init/; for i in $( ls nova-* | cut -d. -f1); do sudo service $i restart; done cd /etc/init/; for i in $( ls quantum-* | cut -d. -f1); do sudo service $i restart; done </syntaxhighlight>

Controlador da nuvem (penny)

cd /etc/init/; for i in $( ls nova-* | cut -d. -f1 ); do sudo service $i restart; done cd /etc/init/; for i in $( ls quantum-* | cut -d. -f1 ); do sudo service $i restart; done cd /etc/init/; for i in $( ls cinder-* | cut -d. -f1 ); do sudo service $i restart; done cd /etc/init/; for i in $( ls keystone* | cut -d. -f1 ); do sudo service $i restart; done </syntaxhighlight>

Testanto a migração

Keystone

sudo -i source os.cred root@penny:~# keystone user-list +----------------------------------+---------+---------+--------------------------+ | id | name | enabled | email | +----------------------------------+---------+---------+--------------------------+ | 0bcadb16258d4552839b9c776c89ff64 | admin | True | rafael@turnes.com.br | | 23fd34f439484b73a6eea9913ac580ad | cinder | True | rafael@turnes.com.br | | 54ac7e04ab2540ed9ef428ed11b8fbcd | ederson | True | boidacarapreta@gmail.com | | 27d928bfefb84c0baefc0b13bcdd362a | glance | True | rafael@turnes.com.br | | 773499148c564119b5e7e64d0c71bb3d | marcos | True | mmoecke@gmail.com | | 61d08e2259e6403ba23918d87dea404b | nova | True | rafael@turnes.com.br | | 853266dae4f2409dbc035b1b6cd928c8 | quantum | True | rafael@turnes.com.br | | 45a33dbb899d4c199e961302796cb1a6 | rafael | True | rafael@turnes.com.br | +----------------------------------+---------+---------+--------------------------+ </syntaxhighlight>

Glance

mkdir /tmp/images cd /tmp/images/ wget "http://uec-images.ubuntu.com/saucy/current/saucy-server-cloudimg-amd64-disk1.img" glance image-create --is-public true --disk-format qcow2 --container-format bare --name "Ubuntu Server 13.10" < saucy-server-cloudimg-amd64-disk1.img +------------------+--------------------------------------+ | Property | Value | +------------------+--------------------------------------+ | checksum | 21d994119ec0a8491bc91113b718808d | | container_format | bare | | created_at | 2013-10-24T19:25:55 | | deleted | False | | deleted_at | None | | disk_format | qcow2 | | id | 5b049fb6-bb68-4ea8-9c68-01a025df830b | | is_public | True | | min_disk | 0 | | min_ram | 0 | | name | Ubuntu Server 13.10 | | owner | 4aaa0eb1b84d4405af0384a59053ac45 | | protected | False | | size | 241827840 | | status | active | | updated_at | 2013-10-24T19:25:56 | +------------------+--------------------------------------+ root@penny:/tmp/images# glance image-list +--------------------------------------+---------------------+-------------+------------------+-----------+--------+ | ID | Name | Disk Format | Container Format | Size | Status | +--------------------------------------+---------------------+-------------+------------------+-----------+--------+ | 5b9b1a48-fdd0-4c72-8ab5-0ac073072b39 | Ubuntu Server 13.04 | qcow2 | bare | 236519424 | active | | 5b049fb6-bb68-4ea8-9c68-01a025df830b | Ubuntu Server 13.10 | qcow2 | bare | 241827840 | active | +--------------------------------------+---------------------+-------------+------------------+-----------+--------+ </syntaxhighlight>

Cinder

root@penny:~# cinder list +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+ | ID | Status | Display Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+ | 420c2c3e-d195-492a-9b3f-50beb0d7280c | available | Testing cinder2 | 5 | None | false | | | df7b1f5c-b287-4812-bfb8-9cd8b2c0ab2f | available | None | 10 | None | false | | +--------------------------------------+-----------+-----------------+------+-------------+----------+-------------+ root@penny:~# cinder create --display-name "Testing new version" --display-description "Testing Havana Version" 10 +---------------------+--------------------------------------+ | Property | Value | +---------------------+--------------------------------------+ | attachments | [] | | availability_zone | nova | | bootable | false | | created_at | 2013-10-24T19:30:41.068222 | | display_description | Testing Havana Version | | display_name | Testing new version | | id | 75f766eb-8b95-4329-bbe3-b2b593fcf71d | | metadata | {} | | size | 10 | | snapshot_id | None | | source_volid | None | | status | creating | | volume_type | None | +---------------------+--------------------------------------+ root@penny:~# cinder list +--------------------------------------+-----------+---------------------+------+-------------+----------+-------------+ | ID | Status | Display Name | Size | Volume Type | Bootable | Attached to | +--------------------------------------+-----------+---------------------+------+-------------+----------+-------------+ | 420c2c3e-d195-492a-9b3f-50beb0d7280c | available | Testing cinder2 | 5 | None | false | | | 75f766eb-8b95-4329-bbe3-b2b593fcf71d | available | Testing new version | 10 | None | false | | | df7b1f5c-b287-4812-bfb8-9cd8b2c0ab2f | available | None | 10 | None | false | | +--------------------------------------+-----------+---------------------+------+-------------+----------+-------------+

</syntaxhighlight>

Nova

</syntaxhighlight>

Migrando Quantum para Neutron

Upgrades from Grizzly

Starting the neutron-server after upgrading code, but prior to migration will result in some database models being created without the proper migrations occurring. The following upgrade setups should be taken to ensure a properly upgraded database.

Ensure that the database is stamped for Grizzly prior to stopping service.quantum-db-manage --config-file /path/to/quantum.conf --config-file /path/to/plugin/conf.ini stamp grizzly Stop quantum-server and deploy the Neutron code Do not start the neutron-server at this time. Run Havana Migration neutron-db-manage --config-file /path/to/quantum.conf --config-file /path/to/plugin/conf.ini upgrade havana Start neutron-server </syntaxhighlight>