SlideShare a Scribd company logo


2
•
IT
• IT
OpenStack Day Taiwan Hadoop Conf
SITCON Conf
•
i.m.a.c
NUTCimac
imac-cloud
Agenda
3
•
• Keystone
• Glance
• Nova
• Neutron
• Horizon
• Deploy and Management Tools
• SSCloud
4
Minimal Hardware Requirements
5
Minimal Network Layout
6
Minimal Service Layout
7
Network Topology
8
Network Time Protocol (NTP)
9
NTP
$ sudo apt-get install -y ntp
Controller Server /etc/ntp.conf
restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap
server 2.tw.pool.ntp.org
server 3.asia.pool.ntp.org
server 0.asia.pool.ntp.org
Controller /etc/ntp.conf
server controller iburst
Network Time Protocol (NTP)
10
Controller
$ ntpq -c peers
+123.204.45.116 59.149.185.193 2 u 196 256 353 158.773 70.671 20.943
*186.211.189.118 203.123.48.219 2 u 215 256 377 59.255 -1.832 2.092
+time.iqnet.com 62.201.207.162 2 u 18 256 377 391.601 4.016 3.642
$ ntpq -c peers
*controller 10.0.0.11 3 u 47 64 37 0.308 -0.251 0.079
Ubuntu OpenStack
11
OpenStack
12
Ubuntu 15.04 Repository
Repository
$ sudo apt-get install -y software-properties-common
$ sudo add-apt-repository -y cloud-archive:liberty
Repository
$ sudo apt-get update && sudo apt-get -y dist-upgrade
P.S.
SQL database (1/2)
13
OpenStack SQL
Controller
$ sudo apt-get install -y mariadb-server python-mysqldb
/etc/mysql/conf.d/mysqld_openstack.cnf
[mysqld]
bind-address = 10.0.0.11
P.S. p@ssw0rd
SQL database (2/2)
14
...
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
$ sudo service mysql restart
$ sudo mysql_secure_installation
P.S. …
Message queue (1/2)
15
OpenStack Message Queue
RabbitMQ Controller
$ sudo apt-get install -y rabbitmq-server
web console
$ sudo rabbitmq-plugins enable rabbitmq_management
$ sudo sh -c "echo '[{rabbit, [{loopback_users, []}]}].' > /etc/rabbitmq/
rabbitmq.config"
$ sudo service rabbitmq-server restart
P.S. http://<ip>:15672 guest/guest
Message queue (2/2)
16
User OpenStack
$ sudo rabbitmqctl add_user openstack <password>
Creating user "openstack" ...
…done.
User
$ sudo rabbitmqctl set_permissions openstack ".*" ".*" “.*"
Setting permissions for user "openstack" in vhost "/" ...
...done.
P.S. p@ssw0rd
17
Keystone
18
Amazon AWS IAM
19
20
API
(1/2)
21
Identity Controller
Database Keystone
$ mysql -u root -p
# CREATE DATABASE keystone;
# GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'
IDENTIFIED BY 'keystone';
# GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED
BY 'keystone';
(2/2)
22
openssl admin token
$ openssl rand -hex 16
1ed64bdb7ebda9ae6d01d811565d4d64
P.S. token
Keystone
23
$ echo "manual" | sudo tee /etc/init/keystone.override
Packaging-Deb apt-get keystone
$ sudo apt-get install keystone python-openstackclient apache2
libapache2-mod-wsgi memcached python-memcache
P.S. Kilo Keystone Eventlet WSGI Server
Keystone (1/3)
24
/etc/keystone/keystone.conf ADMIN_TOKEN
[DEFAULT]
admin_token = 1ed64bdb7ebda9ae6d01d811565d4d64
[database]
[database]
connection = mysql://keystone:keystone@10.0.0.11/keystone
P.S. connection MySQL Keystone
Keystone (2/3)
25
[memcache]
[memcache]
servers = localhost:11211
[token]
[token]
provider = keystone.token.providers.uuid.Provider
driver = keystone.token.persistence.backends.memcache.Token
Keystone (3/3)
26
[revoke]
[revoke]
driver = keystone.contrib.revoke.backends.sql.Revoke
$ sudo keystone-manage db_sync
P.S. SQLite
Apache2 HTTP (1/3)
27
/etc/apache2/apache2.conf ServerName controller
ServerName controller
/etc/apache2/sites-available/wsgi-keystone.conf
$ sudo vim /etc/apache2/sites-available/wsgi-keystone.conf
Listen 5000
Listen 35357
Apache2 HTTP (2/3)
28
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /var/www/cgi-bin/keystone/main
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
LogLevel info
ErrorLog /var/log/apache2/keystone-error.log
CustomLog /var/log/apache2/keystone-access.log combined
</VirtualHost>
Apache2 HTTP (3/3)
29
<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /var/www/cgi-bin/keystone/admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
<IfVersion >= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
LogLevel info
ErrorLog /var/log/apache2/keystone-error.log
CustomLog /var/log/apache2/keystone-access.log combined
</VirtualHost>
WSGI (1/2)
30
$ sudo ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-
enabled
WSGI WSGI
$ sudo mkdir -p /var/www/cgi-bin/keystone
$ sudo curl http://git.openstack.org/cgit/openstack/keystone/plain/httpd/
keystone.py?h=stable/liberty | sudo tee /var/www/cgi-bin/keystone/main /var/
www/cgi-bin/keystone/admin
WSGI(2/2)
31
chown chmod
$ sudo chown -R keystone:keystone /var/www/cgi-bin/keystone
$ sudo chmod 755 /var/www/cgi-bin/keystone/*
Apache2 SQLite
$ sudo service apache2 restart
$ sudo rm -f /var/lib/keystone/keystone.db
32
export OS_TOKEN admin_token API
URL
$ export OS_TOKEN=1ed64bdb7ebda9ae6d01d811565d4d64
$ export OS_URL=http://10.0.0.11:35357/v2.0
$ openstack service create --name keystone --description "OpenStack
Identity" identity
API
33
API
API
$ openstack endpoint create --publicurl http://10.0.0.11:5000/v2.0 
--internalurl http://10.0.0.11:5000/v2.0 
--adminurl http://10.0.0.11:35357/v2.0 
--region RegionOne identity
34
Openstack domains,
projects (tenants), users roles admin Project User
Role
$ openstack project create --description "Admin Project" admin
$ openstack user create --password p@ssw0rd --email admin@example.com
admin
$ openstack role create admin
$ openstack role add --project admin --user admin admin
$ openstack project create --description "Service Project" service
P.S. p@ssw0rd
35
Demo
$ openstack project create --description "Demo Project" demo
$ openstack user create --password demo --email
demo@example.com demo
$ openstack role create user
$ openstack role add --project demo --user demo user
P.S. demo
36
Keystone
OS_TOKEN OS_URL
$ unset OS_TOKEN OS_URL
admin Identity v2.0 token
$ openstack --os-auth-url http://10.0.0.11:35357 --os-project-name admin
--os-username admin --os-auth-type password token issue
P.S. p@ssw0rd
admin client
37
admin demo
admin admin-openrc.sh
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=p@ssw0rd
export OS_AUTH_URL=http://10.0.0.11:35357/v3
P.S. p@ssw0rd
user client
38
demo demo-openrc.sh
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=demo
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_AUTH_URL=http://10.0.0.11:5000/v3
P.S. demo
Client
39
source
$ source admin-openrc.sh
$ openstack token issue
40
Glance
41
Amazon AWS VM
Import Export
42
43
EX: Ubuntu CoreOS…
(1/2)
44
Image Service Controller
Database
$ mysql -u root -p
# CREATE DATABASE glance;
# GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost'
IDENTIFIED BY 'glance';
# GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY
'glance';
P.S. glance
(2/2)
45
Keystone admin
$ openstack user create --password glance --email glance@example.com
glance
$ openstack role add --project service --user glance admin
$ openstack service create --name glance --description "OpenStack Image
service" image
$ openstack endpoint create --publicurl http://10.0.0.11:9292 
--internalurl http://10.0.0.11:9292 
--adminurl http://10.0.0.11:9292 --region RegionOne image
P.S. glance
Glance
46
Packaging-Deb apt-get
Glance
$ sudo apt-get install -y glance python-glanceclient
Glance (1/6)
47
/etc/glance/glance-api.conf [DEFAULT]
noop
[DEFAULT]
notification_driver = noop
[database]
[database]
connection = mysql://glance:glance@10.0.0.11/glance
P.S. connection MySQL
Glance (2/6)
48
[keystone_authtoken]
[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = glance
password = glance
P.S. glance
Glance (3/6)
49
[paste_deploy]
[paste_deploy]
flavor = keystone
[glance_store]
[glance_store]
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
Glance (4/6)
50
/etc/glance/glance-registry.conf [DEFAULT]
noop
[DEFAULT]
notification_driver = noop
[database]
[database]
connection = mysql://glance:glance@10.0.0.11/glance
P.S. connection MySQL
Glance (5/6)
51
[keystone_authtoken]
[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = glance
password = glance
P.S. glance
Glance (6/6)
52
[paste_deploy]
[paste_deploy]
flavor = keystone
/etc/glance/glance-api.conf /etc/glance/glance-registry.conf
SQLite
$ sudo glance-manage db_sync
$ sudo service glance-registry restart
$ sudo service glance-api restart
$ sudo rm -f /var/lib/glance/glance.sqlite
Glance
53
admin-openrc.sh demo-openrc.sh Glance API
$ echo "export OS_IMAGE_API_VERSION=2" | sudo tee -a admin-openrc.sh demo-
openrc.sh
$ source admin-openrc.sh
Glance
$ wget -P /tmp/images http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-
disk.img
$ glance image-create --name "cirros-0.3.4-x86_64" --file cirros-0.3.4-x86_64-
disk.img --disk-format qcow2 --container-format bare --visibility public --progress
54
Nova
55
Amazon AWS EC2
56
IaaS
57
(1/2)
58
Compute Controller
Compute Controller
$ mysql -u root -p
# CREATE DATABASE nova;
# GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY
'nova';
# GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';
P.S. nova
(2/2)
59
Keystone admin
$ openstack user create --password nova --email nova@example.com nova
$ openstack role add --project service --user nova admin
$ openstack service create --name nova --description "OpenStack Compute" compute
$ openstack endpoint create --publicurl http://10.0.0.11:8774/v2/%(tenant_id)s 
--internalurl http://10.0.0.11:8774/v2/%(tenant_id)s 
--adminurl http://10.0.0.11:8774/v2/%(tenant_id)s 
--region RegionOne compute
P.S. nova
Nova
60
Packaging-Deb apt-get
Nova
$ sudo apt-get install nova-api nova-cert nova-conductor nova-
consoleauth nova-novncproxy nova-scheduler python-novaclient
Nova (1/4)
61
/etc/nova/nova.conf [DEFAULT]
[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 10.0.0.11
vncserver_listen = 10.0.0.11
vncserver_proxyclient_address = 10.0.0.11
Nova (2/4)
62
[database]
[database]
connection = mysql://nova:nova@10.0.0.11/nova
[oslo_messaging_rabbit]
[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = p@ssw0rd
P.S. connection MySQL Rabbit
Nova (3/4)
63
[keystone_authtoken]
[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = nova
P.S. Keystone nova
Nova (4/4)
64
[glance] [oslo_concurrency] Glance Host lock_path
[glance]
host = 10.0.0.11
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
$ sudo nova-manage db sync
65
Nova SQLite
$ sudo service nova-api restart
$ sudo service nova-cert restart
$ sudo service nova-consoleauth restart
$ sudo service nova-scheduler restart
$ sudo service nova-conductor restart
$ sudo service nova-novncproxy restart
$ sudo rm -f /var/lib/nova/nova.sqlite
66
Nova
67
Compute
68
PPT
69
70
71
Compute
Compute
72
controller compute service
VM instance Compute
$ sudo apt-get install -y nova-compute sysfsutils
Nova-Compute (1/5)
73
/etc/nova/nova.conf [DEFAULT]
[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone
resume_guests_state_on_host_boot = true
my_ip = 10.0.0.31
Nova-Compute (2/5)
74
[vnc] VNC Server
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = 10.0.0.31
novncproxy_base_url = http://10.0.0.11:6080/vnc_auto.html
Nova-Compute (3/5)
75
[oslo_messaging_rabbit] VNC Server
[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = p@ssw0rd
P.S. Rabbit p@ssw0rd
Nova-Compute (4/5)
76
[keystone_authtoken] VNC Server
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = nova
P.S. Keystone nova
Nova-Compute (5/5)
77
[glance] [oslo_concurrency] Glance Host lock_path
[glance]
host = 10.0.0.11
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
$ sudo nova-manage db sync
Compute libvirt
78
Compute
$ kvm-ok
$ egrep -c '(vmx|svm)' /proc/cpuinfo
8
CPU KVM /etc/nova/nova-
compute.conf virt_type QEMU
[libvirt]
virt_type = qemu
79
Nova SQLite
$ sudo service nova-compute restart
$ sudo rm -f /var/lib/nova/nova.sqlite
Nova
80
admin-openrc.sh nova client
$ nova service-list
$ nova endpoints
$ nova image-list
81
Neutron
82
Amazon AWS VPC
83
L2 L3
84
Plugin
LBaaS VPNaaS FWaaS
(1/2)
85
Networking Controller Network
Compute Controller
$ mysql -u root -p
# CREATE DATABASE neutron;
# GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost'
IDENTIFIED BY 'neutron';
# GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY
'neutron';
P.S. neutron
(2/2)
86
Keystone admin
$ openstack user create --password neutron --email neutron@example.com neutron
$ openstack role add --project service --user neutron admin
$ openstack service create --name neutron --description "OpenStack Networking"
network
$ openstack endpoint create --publicurl http://10.0.0.11:9696 
--adminurl http://10.0.0.11:9696 
--internalurl http://10.0.0.11:9696 
--region RegionOne network
P.S. neutron
Neutron
87
Packaging-Deb apt-get
Neutron
$ sudo apt-get install neutron-server neutron-plugin-ml2 python-
neutronclient
Neutron (1/4)
88
/etc/neutron/neutron.conf [DEFAULT]
[DEFAULT]
rpc_backend = rabbit
auth_strategy = keystone
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = http://10.0.0.11:8774/v2
Neutron (2/4)
89
[database]
[DEFAULT]
connection = mysql://neutron:neutron@10.0.0.11/neutron
[oslo_messaging_rabbit]
[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = p@ssw0rd
P.S. MySQL neutron rabbit p@ssw0rd
Neutron (3/4)
90
[keystone_authtoken]
[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = neutron
P.S. neutron
Neutron (4/4)
91
[nova]
[nova]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = nova
P.S. nova
Modular Layer 2 (1/2)
92
/etc/neutron/plugins/ml2/ml2_conf.ini [ml2]
GRE OVS
[ml2]
type_drivers = flat,vlan,gre,vxlan
tenant_network_types = gre
mechanism_drivers = openvswitch
93
a
OVS
94
OVS = Open vSwitch
95
Open Source
Open vSwitch
96
GRE
97
GRE = Graduate Record Examinations
98
GRE = Generic Routing Encapsulation
99
100
ML2
Modular Layer 2 (2/2)
101
[ml2_type_gre] id
[ml2_type_gre]
tunnel_id_ranges = 1:1000
[securitygroup] ipset OVS iptables
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
Nova Networking(1/2)
102
/etc/nova/nova.conf [DEFAULT] APIs
Drivers
[DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
Nova Networking(2/2)
103
[neutron]
[neutron]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = neutron
P.S. neutron
104
$ sudo neutron-db-manage --config-file /etc/neutron/neutron.conf --
config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade liberty
Compute Networking SQLite
$ sudo service nova-api restart
$ sudo service neutron-server restart
$ sudo rm -f /var/lib/neutron/neutron.sqlite
neutron
105
neutron client neutron-server
$ neutron ext-list
P.S. neutron
106
Network
(1/2)
107
Network L3 DHCP
/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
$ sudo sysctl -p
(2/2)
108
apt-get
$ sudo apt-get install neutron-plugin-ml2 neutron-plugin-
openvswitch-agent neutron-l3-agent neutron-dhcp-agent neutron-
metadata-agent
Neutron (1/3)
109
/etc/neutron/neutron.conf [DEFAULT]
[DEFAULT]
rpc_backend = rabbit
auth_strategy = keystone
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
Neutron (2/3)
110
[database]
[DEFAULT]
# connection = sqlite:////var/lib/neutron/neutron.sqlite
[oslo_messaging_rabbit]
[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = p@ssw0rd
P.S. MySQL neutron rabbit p@ssw0rd
Neutron (3/3)
111
[keystone_authtoken]
[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = neutron
P.S. neutron
Modular Layer 2 (1/4)
112
/etc/neutron/plugins/ml2/ml2_conf.ini [ml2]
GRE OVS
[ml2]
type_drivers = flat,vlan,gre,vxlan
tenant_network_types = gre
mechanism_drivers = openvswitch
Modular Layer 2 (2/4)
113
[ml2_type_flat]
[ml2_type_flat]
flat_networks = external
[ml2_type_gre] id
[ml2_type_gre]
tunnel_id_ranges = 1:1000
Modular Layer 2 (3/4)
114
[securitygroup] ipset OVS iptables
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
[ovs] IP
[ovs]
local_ip = 10.0.1.21
bridge_mappings = external:br-ex
Modular Layer 2 (4/4)
115
[agent] GRE
[agent]
tunnel_types = gre
Layer-3 (L3) Proxy
116
/etc/neutron/l3_agent.ini [DEFAULT]
[DEFAULT]
...
verbose = True
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
external_network_bridge =
router_delete_namespaces = True
DHCP Proxy(1/2)
117
/etc/neutron/dhcp_agent.ini [DEFAULT] DHCP
[DEFAULT]
...
verbose = True
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
dhcp_delete_namespaces = True
dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf
DHCP Proxy(2/2)
118
/etc/neutron/dnsmasq-neutron.conf DHCP MTU (26)
1454 bytes
$ echo 'dhcp-option-force=26,1454' | sudo tee /etc/neutron/dnsmasq-
neutron.conf
Metadata Proxy(1/2)
119
/etc/neutron/metadata_agent.ini [DEFAULT] metadata
[DEFAULT]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_region = RegionOne
auth_plugin = password
project_domain_id = default
Metadata Proxy(2/2)
120
/etc/neutron/metadata_agent.ini [DEFAULT]
[DEFAULT]
…
user_domain_id = default
project_name = service
username = neutron
password = neutron
nova_metadata_ip = 10.0.0.11
metadata_proxy_shared_secret = d88ec459ab1e0bdaf5d8
P.S. Keystone neutron metadata_proxy_shared_secret
121
Controller
Nova Metadata Proxy
122
/etc/nova/nova.conf [neutron] Nova metadata proxy
[neutron]
...
service_metadata_proxy = True
metadata_proxy_shared_secret = d88ec459ab1e0bdaf5d8
Controller Compute API
$ sudo service nova-api restart
P.S. metadata_proxy_shared_secret d88ec459ab1e0bdaf5d8
123
Network
Open vSwitch (OVS)
124
Open vSwitch
$ sudo service openvswitch-switch restart
$ sudo ovs-vsctl add-br br-ex
$ sudo ovs-vsctl add-port br-ex INTERFACE_NAME
P.S. INTERFACE_NAME Public eth1
Networking
125
$ sudo service neutron-plugin-openvswitch-agent restart
$ sudo service neutron-l3-agent restart
$ sudo service neutron-dhcp-agent restart
$ sudo service neutron-metadata-agent restart
Controller Keystone admin
$ neutron agent-list
126
Compute
(1/2)
127
Compute /etc/
sysctl.conf
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
$ sudo sysctl -p
(2/2)
128
apt-get
$ sudo apt-get install neutron-plugin-ml2 neutron-plugin-
openvswitch-agent
Neutron (1/3)
129
/etc/neutron/neutron.conf [DEFAULT]
[DEFAULT]
rpc_backend = rabbit
auth_strategy = keystone
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
Neutron (2/3)
130
[database]
[DEFAULT]
# connection = sqlite:////var/lib/neutron/neutron.sqlite
[oslo_messaging_rabbit]
[oslo_messaging_rabbit]
rabbit_host = 10.0.0.11
rabbit_userid = openstack
rabbit_password = p@ssw0rd
P.S. MySQL neutron rabbit p@ssw0rd
Neutron (3/3)
131
[keystone_authtoken]
[keystone_authtoken]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = neutron
P.S. neutron
Modular Layer 2 (1/3)
132
/etc/neutron/plugins/ml2/ml2_conf.ini [ml2]
GRE OVS
[ml2]
type_drivers = flat,vlan,gre,vxlan
tenant_network_types = gre
mechanism_drivers = openvswitch
Modular Layer 2 (2/3)
133
[ml2_type_gre] id
[ml2_type_gre]
tunnel_id_ranges = 1:1000
[securitygroup] ipset OVS iptables
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
Modular Layer 2 (3/3)
134
[ovs] IP
[ovs]
local_ip = 10.0.1.31
[agent] GRE
[agent]
tunnel_types = gre
Compute Networking(1/2)
135
/etc/nova/nova.conf [DEFAULT] APIs Drivers
[DEFAULT]
...
network_api_class = nova.network.neutronv2.api.API
security_group_api = neutron
linuxnet_interface_driver =
nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
Compute Networking(2/2)
136
[neutron] Keystone
[DEFAULT]
auth_uri = http://10.0.0.11:5000
auth_url = http://10.0.0.11:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = neutron
password = neutron
P.S. neutron
Compute Networking
137
$ sudo service openvswitch-switch restart
$ sudo service nova-compute restart
$ sudo service neutron-plugin-openvswitch-agent restart
Controller Keystone admin
$ neutron agent-list
138
139
External network(1/2)
140
neutron net-create
$ neutron net-create ext-net --router:external --provider:physical_network
external --provider:network_type flat
External network(2/2)
141
neutron subnet-create
$ neutron subnet-create ext-net 192.168.20.0/24 --name ext-subnet --
allocation-pool start=192.168.20.101,end=192.168.20.200 --disable-dhcp --
gateway 192.168.20.1
142
Horizon
143
Dashboard
Horizon (1/2)
144
Dashboard Controller
OpenStack apt-get dashboard
$ sudo apt-get install openstack-dashboard
Ubuntu openstack-dashboard ubuntu-theme
$ sudo apt-get purge openstack-dashboard-ubuntu-theme
Horizon (2/2)
145
/etc/openstack-dashboard/local_settings.py
OPENSTACK_HOST = "controller"
ALLOWED_HOSTS = '*'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
146
$ sudo service apache2 reload
$ sudo service apache2 restart
http://10.0.011/horizon
147
Deploy and Management
Tools
148
Mirantis Fuel
149
HP Helion
150
Ubuntu
MAAS + JuJu
151
Kolla
152
Red Hat
OpenStack
153P.S.
154
Ansible
155
Puppet
156
Chef
157
158
SSCloud
159
Dashboard
150
hackathon001 , hackathon002, ... , hackathon150
https://sscloud.unicloud.org.tw/auth/login/
160
OpenStack Hackfest
18-20 March 2016
161

More Related Content

PDF
Docker 基本概念與指令操作
PDF
使用 CLI 管理 OpenStack 平台
PPTX
How to manage Microsoft Azure with open source
PDF
CoreOSによるDockerコンテナのクラスタリング
PPTX
How to go the extra mile on monitoring
PDF
Kubernetes Tutorial
PDF
Declare your infrastructure: InfraKit, LinuxKit and Moby
PDF
No more (unsecure) secrets, Marty
Docker 基本概念與指令操作
使用 CLI 管理 OpenStack 平台
How to manage Microsoft Azure with open source
CoreOSによるDockerコンテナのクラスタリング
How to go the extra mile on monitoring
Kubernetes Tutorial
Declare your infrastructure: InfraKit, LinuxKit and Moby
No more (unsecure) secrets, Marty

What's hot (20)

PDF
Launching containers with fleet
PDF
Openstack at NTT Feb 7, 2011
PDF
CoreOS + Kubernetes @ All Things Open 2015
PDF
Install and Configure Ubuntu for Hadoop Installation for beginners
PDF
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
PPTX
Hadoop single cluster installation
PDF
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
PDF
Come configurare Liferay 6.0 per Oracle
PDF
Kubernetes + Docker + Elixir - Alexei Sholik, Andrew Dryga | Elixir Club Ukraine
PDF
CoreOS : 설치부터 컨테이너 배포까지
PPTX
AWS 기반 Docker, Kubernetes
DOC
Installation of Subversion on Ubuntu,...
PDF
Basic onos-tutorial
PDF
Warp 10 Platform Presentation - Criteo Beer & Tech 2016-02-03
PDF
當專案漸趕,當遷移也不再那麼難 (Ship Your Projects with Docker EcoSystem)
PDF
Quay 3.3 installation
PDF
R-House (LSRC)
PPTX
SCALE 15x Minimizing PostgreSQL Major Version Upgrade Downtime
DOCX
Component pack 6006 install guide
PDF
Virtualbox and Mysql
Launching containers with fleet
Openstack at NTT Feb 7, 2011
CoreOS + Kubernetes @ All Things Open 2015
Install and Configure Ubuntu for Hadoop Installation for beginners
Стажировка 2016-07-27 02 Денис Нелюбин. PostgreSQL и jsonb
Hadoop single cluster installation
コンテナ仮想、その裏側 〜user namespaceとrootlessコンテナ〜
Come configurare Liferay 6.0 per Oracle
Kubernetes + Docker + Elixir - Alexei Sholik, Andrew Dryga | Elixir Club Ukraine
CoreOS : 설치부터 컨테이너 배포까지
AWS 기반 Docker, Kubernetes
Installation of Subversion on Ubuntu,...
Basic onos-tutorial
Warp 10 Platform Presentation - Criteo Beer & Tech 2016-02-03
當專案漸趕,當遷移也不再那麼難 (Ship Your Projects with Docker EcoSystem)
Quay 3.3 installation
R-House (LSRC)
SCALE 15x Minimizing PostgreSQL Major Version Upgrade Downtime
Component pack 6006 install guide
Virtualbox and Mysql
Ad

Similar to Build your own private openstack cloud (20)

PDF
Openstack 101
PPT
[OpenStack 하반기 스터디] HA using DVR
PDF
Open stack pike-devstack-tutorial
PDF
Cutting through the fog of cloud
ODP
Triangle OpenStack meetup 09 2013
PDF
Reverse engineering Swisscom's Centro Grande Modem
PDF
OSMC 2008 | Monitoring MySQL by Geert Vanderkelen
PPT
Cloud stack vs openstack vs eucalyptus
PDF
Whitepaper MS SQL Server on Linux
PDF
Zaragoza dev ops-activiti-khd-20181212
PDF
Hacking the swisscom modem
PDF
Percona Live 2012PPT:mysql-security-privileges-and-user-management
KEY
fog or: How I Learned to Stop Worrying and Love the Cloud
PDF
OpenStack API's and WSGI
PDF
Red Hat Forum Tokyo - OpenStack Architecture
PPT
Presentation iv implementasi 802x eap tls peap mscha pv2
KEY
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
ODP
Drizzle to MySQL, Stress Free Migration
PPTX
Vagrant, Ansible, and OpenStack on your laptop
KEY
dotCloud and go
Openstack 101
[OpenStack 하반기 스터디] HA using DVR
Open stack pike-devstack-tutorial
Cutting through the fog of cloud
Triangle OpenStack meetup 09 2013
Reverse engineering Swisscom's Centro Grande Modem
OSMC 2008 | Monitoring MySQL by Geert Vanderkelen
Cloud stack vs openstack vs eucalyptus
Whitepaper MS SQL Server on Linux
Zaragoza dev ops-activiti-khd-20181212
Hacking the swisscom modem
Percona Live 2012PPT:mysql-security-privileges-and-user-management
fog or: How I Learned to Stop Worrying and Love the Cloud
OpenStack API's and WSGI
Red Hat Forum Tokyo - OpenStack Architecture
Presentation iv implementasi 802x eap tls peap mscha pv2
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
Drizzle to MySQL, Stress Free Migration
Vagrant, Ansible, and OpenStack on your laptop
dotCloud and go
Ad

Recently uploaded (20)

PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Advanced Soft Computing BINUS July 2025.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
Cloud computing and distributed systems.
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
Electronic commerce courselecture one. Pdf
PPT
Teaching material agriculture food technology
PDF
Modernizing your data center with Dell and AMD
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Chapter 3 Spatial Domain Image Processing.pdf
Network Security Unit 5.pdf for BCA BBA.
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Advanced Soft Computing BINUS July 2025.pdf
NewMind AI Monthly Chronicles - July 2025
Cloud computing and distributed systems.
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
Electronic commerce courselecture one. Pdf
Teaching material agriculture food technology
Modernizing your data center with Dell and AMD
The AUB Centre for AI in Media Proposal.docx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf

Build your own private openstack cloud