› Foros › PC › Software libre
Una nube privada es cuando las posibilidades y servicios que está ofrece son usados en exclusiva por los miembros internos que la han creado. Tambien es común que empresas tengan una nube privada para uso exclusivo interno.
OpenStack actualmente es la solución con mayor apoyo, tanto de la comunidad como de empresas.
Es software libre, concretamente con licencia permisiva.
OpenStack es totalmente modular, pudiendo usar solo los módulos que necesitemos(hay unos mínimos que necesitaremos) para solucionar la problemática que tengamos.
Es una tecnología en auge. Somos muchos los apasionados en las tecnologías en este foro.
Aunque realmente el proyecto OpenStack tiene unos años, estamos en una edad temprana, el mejor momento para involucrarse en un proyecto/tecnología y dominarla.
· Keystone
· MySQL (los componentes usan su propia BBDD dentro del gestor de base de datos)
· RabbitMQ
· Horizon
· Neutron
· Cinder
· Glance
· Nova
#aptitude update
#aptitude upgrade
#reboot (no obligatorio, ¿manías mías? )
RabbitMQ es un software de negociación de mensajes de código abierto. Podemos clasificarlo como middleware de mensajería. En OpenStack es el encargado de los "mensajes" entre los distintos módulos/componentes.
Enlace Wikipedia: http://es.wikipedia.org/wiki/RabbitMQ
Ejecutamos en consola:
$aptitude search rabbitmq
#aptitude install rabbitmq-server
#aptitude install mysql-server (nos pedirá una contraseña para el root del MySQL)
#aptitude install python-mysqldb
Editamos el archivo de configuración de MySQL:
#nano /etc/mysql/my.cnf
Buscamos el parámetro bind-address y cambiamos 127.0.0.1 por la ip que tenga la interfaz de red.
Debajo de la etiqueta [mysqld] buscamos y editamos (o añadimos si no están los parámetros:
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
Reiniciamos el servicio MySQL:
#service mysql restart
Además instalamos NTP (protocolo de Internet para la sincronización horaria), VLAN (habilita la configuración de VLANs en interfaces de red) y Bridge-utils (es un paquete que se encarga de acceder al núcleo bridges virtuales):
#aptitude install ntp
#aptitude install vlan
#aptitude install bridge-utils
Editamos el fichero /etc/sysctl.conf
Con este fichero pasamos parámetros de configuración en tiempo de ejecución al kernel de Linux. Es "lo mismo" que hacer modificaciones en el contenido de /proc/sys.
#nano /etc/sysctl.conf
et.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
Los parámetros vienen ya en el archivo, debemos descomentarlos y asignar el valor adecuado.
Cargamos los valores del sysctl (así mandamos los nuevos valores tambien):
#sysctl -p
#aptitude install keystone
Creamos una base de datos para keystone:
· Nos logueamos en el MySQL: $mysql -u root -p
· Creamos la BBDD: create database keystone;
· Creamos el usuario keystone y le damos permisos: grant all privileges on keystone.* to 'keystone'@'%' identified by 'laclavequequierasponerle' ( en 'keystone'@'%' le estamos dando los permisos para cualquier localización desde la que se conecte, esto en producción no es buena idea )
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone_dbpass';
· Salimos del MySQL: exit
Configuramos Keystone (Para acceder al directorio puede que os sea necesario estar como root [sudo su]):
· Editamos el archivo de configuración /etc/keystone/keystone.conf:
Comentamos la línea "connection = sqlite:////var/lib/keystone/keystone.db"
Añadimos la línea "connection = mysql://keystone:keystonepassword@192.1 ... 5/keystone
Exportarmos las variables de keystone que usaremos en la terminal:
#export OS_SERVICE_TOKEN=ADMIN
#export OS_SERVICE_ENDPOINT=http://192.168.1.135:35357/v2.0
Ejecutamos los siguientes comandos para crear el usuario admin, el role,etc...:
#keystone tenant-create --name=admin --description="Admin Tenant"
#keystone tenant-create --name=service --description="Service Tenant"
#keystone user-create --name=admin --pass=ADMIN --email=uncorreo@cualquiera.com
#keystone role-create --name=admin
#keystone user-role-add --user=admin --tenant=admin --role=admin
Creamos el servicio de Keystone:
#keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"
Creamos el endpoint de Keystone:
#keystone endpoint-create --service=keystone --publicurl=http://192.168.1.135:5000/v2.0 --internalurl=http://192.168.1.135:5000/v2.0 --adminurl=http://192.168.1.135:35357/v2.0
"Desasignamos" los valores antes exportados:
#unset OS_SERVICE_TOKEN
#unset OS_SERVICE_ENDPOINT
Creamos un fichero llamado "creds" y añadimos:
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://192.168.1.135:35357/v2.0
Ejecutamos el siguiente comando:
$source creds
Probamos que todo ha ido bien:
keystone token-get
keystone user-list
Glance es el encargado del almacén de volúmenes.
· Instalamos el paquete glance: #aptitude install glance python-glanceclient
· Creamos la BBDD para Glance y su usuario:
create database glance;
grant all on glance.* to 'glance'@'%' identified by 'glancepassword';
· Editamos el fichero /etc/glance/glance-api.conf y /etc/glance/glance-registry.conf con la siguiente información
[database]
connection = mysql://glance:GLANCE_DBPASS@controller/glance
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = IP_O_NombreDNS_del_nodo
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = GLANCE_PASS
[paste_deploy]
...
flavor = keystone
· Creamos las relaciones de Glance con Keystone
keystone user-create --name=glance --pass=glance_pass --email=glance@example.com
keystone user-role-add --user=glance --tenant=service --role=admin
keystone service-create --name=glance --type=image --description="Glance Image Service"
keystone endpoint-create --service=glance --publicurl=http://192.168.1.135:9292 --internalurl=http://192.168.1.135:9292 --adminurl=http://192.168.1.135:9292
· Reiniciamos los servicios:
#service glance-registry restart
#service glance-api restart
· Probamos que todo ha ido bien:
$mkdir /tmp/images
$cd /tmp/images/
$wget http://download.cirros-cloud.net/0.3.2/ ... 4-disk.img
Subimos la imagen (.img) descargada al servicio:
$ glance image-create --name=nombreQueQueramosDarleALaImagen --disk-format=(qcow2, raw, vhd, vmdk, vdi, iso, aki, ari, and ami) --container-format=(bare, ovf, aki, ari and ami) --is-public=True(todos) o False(solo administradores) < cirros-0.3.2-x86_64-disk.img
Para conocer el formato del disco:
$file cirros-0.3.2-x86_64-disk.img
Nova es el módulo encargado de la computación. Está formado por un conjunto de servicios capaz de lanzar instancias de máquinas virtuales.
· Instalamos los siguientes paquetes:
#aptitude install nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient nova-compute nova-console
· Creamos la BBDD para Nova:
create database nova;
· Creamos el usuario nova en MySQL:
grant all privileges on nova.* to 'nova'@'%' identified by 'novapassword';
· Poblamos la BBDD:
#su -s /bin/sh -c "nova-manage db sync" nova
· Editamos el fichero de configuración /etc/nova/nova.conf:
Modificamos la siguiente sección:
[database]
connection = mysql://nova:NOVA_DBPASS@ipdelaVM/nova
Modificamos la siguiente sección:
[DEFAULT]
rpc_backend = rabbit
rabbit_host = vuestraip
rabbit_password = RABBIT_PASS
my_ip = TU_IP
vncserver_listen = TU_IP
vncserver_proxyclient_address = TU_IP
auth_strategy = keystone
· Editamos el fichero /etc/nova/api-nova.conf de forma que la sección siguiente quede así:
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = 192.168.1.135
auth_port = 35357
auth_protocol = http
auth_uri = http://vuestraip:5000/v2.0
admin_tenant_name = service
admin_user = nova
admin_password = novapassword
· Eliminamos el siguiente fichero original de la instalación (puesto que no vamos a usar SQLite):
#rm /var/lib/nova/nova.sqlite
·Añadimos las entradas de Keystone correspondientes para Nova:
$keystone user-create --name=nova --pass=NOVA_PASS --email=tu@email.com
$keystone user-role-add --user=nova --tenant=service --role=admin
$keystone service-create --name=nova --type=compute \ --description="OpenStack Compute"
$keystone endpoint-create --service-id=$(keystone service-list | awk '/ compute / {print $2}') --publicurl=http://tuip:8774/v2/%\(tenant_id\)s --internalurl=http://controller:8774/v2/%\(tenant_id\)s --adminurl=http://tuip:8774/v2/%\(tenant_id\)s
· Reiniciamos los siguientes servicios:
#service nova-api restart
#service nova-cert restart
#service nova-consoleauth restart
#service nova-scheduler restart
#service nova-conductor restart
#service nova-novncproxy restart
· Probamos! Qué poco me ha gustado Nova Me ha dado algún que otro error un rato bueno...
Neutron es el encargado de dar servicio a las redes en el entorno OpenStack.
· Instalamos los paquetes necesarios:
aptitude install neutron-server neutron-plugin-openvswitch neutron-plugin-openvswitch-agent neutron-common neutron-dhcp-agent neutron-l3-agent neutron-metadata-agent openvswitch-switch
· Creamos la BBDD para Neutron:
create database neutron;
grant all on neutron.* to 'neutron'@'%' identified by 'neutronpassword';
· Añadimos las entradas de Neutron a Keystone:
keystone user-create --name=neutron --pass=neutronpass --email=tu@email.com
keystone service-create --name=neutron --type=network --description="OpenStack Networking"
keystone user-role-add --user=neutron --tenant=service --role=admin
keystone endpoint-create --service=neutron --publicurl http://tuip:9696 --adminurl=http://tuip:9696 --internalurl=http://tuip:9696
service neutron-server restart; service neutron-plugin-openvswitch-agent restart;service neutron-metadata-agent restart; service neutron-dhcp-agent restart; service neutron-l3-agent restart
· Creación de las máquinas que formarán OpenStack. En mi caso he creado una estructura de 3 Nodos virtualizados en Virtualbox (equipo anfitrion es MacBook PRO 13" 2015 16GB RAM 256GB SSD):
#Controlador: Nombre VM Pikachu. Ubuntu Server 14.04 LTS 64 bits. HDD 6GB. RAM 2GB.
#Network: Nombre VM Charmander. Ubuntu Server 14.04 LTS 64 bits. HDD 6GB. RAM 1GB.
#Computación: Nombre VM Bulbasaur. Ubuntu Server 14.04 LTS 64 bits. HDD 20GB. RAM 2.5GB
sodark escribió:Entiendo que es como un openmosix? O exactamente que se puede hacer con openstack.
alienvita2 escribió:Me gusta e interesa bastante el hilo.
En este sistema de 3 nodos se podria instalar hadoop en los 3 nodos? Podria ser interesante ver el rendimiento distribuido y standalone:)
Me suscribo al hilo para estar atento!
alienvita2 escribió:En este sistema de 3 nodos se podria instalar hadoop en los 3 nodos? Podria ser interesante ver el rendimiento distribuido y standalone:)
Alecs7k escribió:Estaba leyendo las instrucciones de la instalación y...me quedo cortísimo de RAM.
Iverson88 escribió:Alecs7k escribió:Estaba leyendo las instrucciones de la instalación y...me quedo cortísimo de RAM.
Para la instalación y tal no hace falta gran cosa, pero luego puedes tener problemas al levantar la instancia. Cuanta ram dispones?
Alecs7k escribió:Iverson88 escribió:Alecs7k escribió:Estaba leyendo las instrucciones de la instalación y...me quedo cortísimo de RAM.
Para la instalación y tal no hace falta gran cosa, pero luego puedes tener problemas al levantar la instancia. Cuanta ram dispones?
4GB