文章目录

  • 1.openstack部署
  • 1.1 环境搭建
    • 1.控制节点服务器主机网络
    • 2.网络时间协议(NTP)
    • 3.安装OpenStack包
    • 4.安装SQL数据库
    • 5.消息队列
    • 6.Memcached
  • 1.2 认证服务
    • 1.配置组件
    • 2.配置 Apache HTTP 服务器
    • 3.创建服务实体和API端点
    • 4.创建域、项目、用户和角色
    • 5.验证操作
    • 6.创建 OpenStack 客户端环境脚本
  • 1.3 镜像服务
    • 1.创建创建一个数据库、服务凭证和API端点
    • 2.安装包并配置组件
    • 3.验证操作
  • 1.4 计算服务
    • 1.创建数据库服务的凭据以及 API endpoints
    • 2.安装包并配置组件
    • 3.安装和配置计算节点
    • 4.验证计算服务的操作
  • 1.5 Networking 服务
    • 1. 安装并配置控制节点
    • 2. 在控制节点配置公共网络
    • 3.在控制节点为计算节点配置网络服务
    • 4.安装和配置计算节点
    • 5.计算节点上配置网络组件
    • 6.为计算节点配置网络服务
  • 2.openstack实例
    • 1 创建提供者网络
    • 2.创建m1.nano规格的主机
    • 3.生成一个键值对
    • 4.增加安全组规则
    • 5.在公有网络上创建实例

参考官网:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment.html

实验环境:
控制节点:controller:192.168.43.11, 2CPU,4GB内存,20GB 存储(最少5G)

计算节点: compute: 172.25.1.2 ,2 CPU, 2GB内存, 20GB 存储(最少10G)


1.openstack部署

1.1 环境搭建

1.控制节点服务器主机网络

[root@server1 ~]# cd /boot/grub2/
[root@server1 grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc  locale
[root@server1 grub2]# vim grub.cfginux16 /vmlinuz-3.10.0-957.el7.x86_64 root=UUID=8d5190d9-d50b-49f4-a64e-7a985e53dc81 ro crashkernel=auto rhgb quiet LANG=en_US.UTF-8 net.ifnames=0

提供者网络接口使用一个特殊的配置,不分配给它IP地址。配置第二块网卡作为提供者网络:
将其中的 INTERFACE_NAME替换为实际的接口名称。

[root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.43.11
GATEWAY=192.168.43.1
NETMASK=255.255.255.0
DNS1=114.114.114.114
[root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=none
DEVICE=eth1
ONBOOT=yes
[root@controller ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.1.250 foundation1.ilt.example.com
192.168.43.11 controller
192.168.43.12 computer1
192.168.43.13 block1



2.网络时间协议(NTP)

设置所有节点的时间与宿主机同步

[root@controller ~]#vim /etc/chrony.conf宿主机设置虚拟机时间同步

# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server ntp1.aliyun.com iburst# Allow NTP client access from local network.
allow 172.25/16



在controller中
[root@controller ~]#yum install chrony -y
[root@controller ~]#vim /etc/chrony.conf

# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 192.168.43.10 iburst

systemctl enable chronyd.service --now
chronyc sources -v



3.安装OpenStack包

[root@controller ~]#yum upgrade在主机上升级包
[root@controller ~]#yum install python-openstackclient安装 OpenStack 客户端




4.安装SQL数据库

[root@controller ~]#yum install mariadb mariadb-server python2-PyMySQL安装软件包
[root@controller ~]#vim /etc/my.cnf.d/openstack.cnf

[mysqld]
bind-address = 172.25.1.1 ###设置 ``bind-address``值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库
default-storage-engine = innodb ###设置如下键值来启用一起有用的选项和 UTF-8 字符集
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

[root@controller ~]#systemctl enable mariadb.service --now启动数据库服务,并将其配置为开机自启
[root@controller ~]#mysql_secure_installation初始化数据库





5.消息队列

[root@controller ~]# yum install rabbitmq-server安装包
[root@controller ~]# systemctl enable rabbitmq-server.service --now启动消息队列服务并将其配置为随系统启动
[root@controller ~]# rabbitmqctl add_user openstack openstack添加 openstack 用户及免密
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"给“openstack”用户配置写和读权限





6.Memcached

[root@controller ~]# yum install memcached python-memcached安装软件包

[root@controller ~]# vim /etc/sysconfig/memcached
[root@controller ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
#OPTIONS="-l 127.0.0.1,::1" ##禁用
[root@controller ~]# systemctl enable memcached.service --now

[root@controller ~]# systemctl enable memcached.service --now启动Memcached服务,并且配置它随机启动


1.2 认证服务

1.配置组件

keystone提供授权管理和服务目录。

[root@controller ~]# mysql -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 10.1.20-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE keystone;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'  IDENTIFIED BY 'keystone';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'  IDENTIFIED BY 'keystone';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> ^DBye
[root@controller ~]# mysql -u keystone -p keystone
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.1.20-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [keystone]> ^DBye


[root@controller ~]# yum install openstack-keystone httpd mod_wsgi安装包
[root@controller ~]# openssl rand -hex 10生成一个随机值在初始的配置中作为管理员的令牌
[root@controller ~]# vim /etc/keystone/keystone.conf

[DEFAULT]
admin_token = ADMIN_TOKEN[database]
connection = mysql+pymysql://keystone:keystone@controller/keystone[token]
provider = fernet

su -s /bin/sh -c "keystone-manage db_sync" keystone初始化身份认证服务的数据库
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone初始化Fernet keys






2.配置 Apache HTTP 服务器

[root@controller ~]# vim /etc/httpd/conf/httpd.conf

ServerName controller ##配置``ServerName`` 选项为控制节点


创建文件
[root@controller ~]# vim /etc/httpd/conf.d/wsgi-keystone.conf

Listen 5000
Listen 35357<VirtualHost *:5000>WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}WSGIProcessGroup keystone-publicWSGIScriptAlias / /usr/bin/keystone-wsgi-publicWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnErrorLogFormat "%{cu}t %M"ErrorLog /var/log/httpd/keystone-error.logCustomLog /var/log/httpd/keystone-access.log combined<Directory /usr/bin>Require all granted</Directory>
</VirtualHost><VirtualHost *:35357>WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}WSGIProcessGroup keystone-adminWSGIScriptAlias / /usr/bin/keystone-wsgi-adminWSGIApplicationGroup %{GLOBAL}WSGIPassAuthorization OnErrorLogFormat "%{cu}t %M"ErrorLog /var/log/httpd/keystone-error.logCustomLog /var/log/httpd/keystone-access.log combined<Directory /usr/bin>Require all granted</Directory>
</VirtualHost>

[root@controller ~]# systemctl enable httpd.service --now



3.创建服务实体和API端点

为身份认证服务创建的临时身份验证令牌用来初始化的服务实体和API端点
[root@controller ~]# export OS_TOKEN=ADMIN_TOKEN配置认证令牌
[root@controller ~]# export OS_URL=http://controller:35357/v3配置端点URL
[root@controller ~]# export OS_IDENTITY_API_VERSION=3配置认证 API 版本

创建服务实体和身份认证服务:
[root@controller ~]# openstack service create --name keystone --description "OpenStack Identity" identity

创建认证服务的 API 端点
注意:每个添加到OpenStack环境中的服务要求一个或多个服务实体和三个认证服务中的API 端点变种
[root@controller ~]# openstack endpoint create --region RegionOne identity public http://controller:5000/v3
[root@controller ~]# openstack endpoint create --region RegionOne identity internal http://controller:5000/v3
[root@controller ~]# openstack endpoint create --region RegionOne identity admin http://controller:35357/v3




4.创建域、项目、用户和角色

创建域default
[root@controller ~]# openstack domain create --description "Default Domain" default


为进行管理操作,创建管理的项目、用户和角色:
[root@controller ~]# openstack project create --domain default --description "Admin Project" admin 创建 admin 项目
[root@controller ~]# openstack user create --domain default --password admin admin创建 admin 用户
[root@controller ~]# openstack role create admin 创建 admin 角色
[root@controller ~]# openstack role add --project admin --user admin admin 添加admin 角色到 admin 项目和用户上



每个服务包含独有用户的service 项目,创建service项目
[root@controller ~]# openstack project create --domain default --description "Service Project" service


创建 demo 项目和用户
[root@controller ~]# openstack project create --domain default --description "Demo Project" demo创建demo 项目
[root@controller ~]# openstack user create --domain default --password-prompt demo创建demo 用户
[root@controller ~]# openstack role create user创建 user 角色
[root@controller ~]# openstack role add --project demo --user demo user添加 user角色到demo 项目和用户



5.验证操作

重置 OS_TOKEN 和 OS_URL 环境变量
[root@controller ~]# unset OS_TOKEN OS_URL
作为 admin 用户,请求认证令牌
[root@controller ~]# openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue
作为 demo 用户,请求认证令牌
[root@controller ~]# openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username demo token issue
这个命令使用demo 用户的密码和API端口5000,这样只会允许对身份认证服务API的常规(非管理)访问。



6.创建 OpenStack 客户端环境脚本

为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件。
创建脚本

[root@controller ~]# vim admin-openrc
[root@controller ~]# cat admin-openrc
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2[root@controller ~]# vim demo-openrc
[root@controller ~]# cat demo-openrc
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

使用脚本

[root@controller ~]# source admin-openrc
[root@controller ~]# export
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="controller"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/etc/keystone"
declare -x OS_AUTH_URL="http://controller:35357/v3"
declare -x OS_IDENTITY_API_VERSION="3"
declare -x OS_IMAGE_API_VERSION="2"
declare -x OS_PASSWORD="admin"
declare -x OS_PROJECT_DOMAIN_NAME="default"
declare -x OS_PROJECT_NAME="admin"
declare -x OS_USERNAME="admin"
declare -x OS_USER_DOMAIN_NAME="default"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="192.168.43.10 43670 22"
declare -x SSH_CONNECTION="192.168.43.10 43670 192.168.43.11 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm-256color"
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="3"
declare -x XMODIFIERS="@im=none"
[root@controller ~]# openstack user list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 29a7dbbc96c8498b8e67f2012ad14f92 | admin |
| 9e92ee1e38b84cc0b5f7001b2db70264 | demo  |
+----------------------------------+-------+[root@controller ~]# source demo-openrc
[root@controller ~]# export
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="controller"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/etc/keystone"
declare -x OS_AUTH_URL="http://controller:5000/v3"
declare -x OS_IDENTITY_API_VERSION="3"
declare -x OS_IMAGE_API_VERSION="2"
declare -x OS_PASSWORD="demo"
declare -x OS_PROJECT_DOMAIN_NAME="default"
declare -x OS_PROJECT_NAME="demo"
declare -x OS_USERNAME="demo"
declare -x OS_USER_DOMAIN_NAME="default"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="192.168.43.10 43670 22"
declare -x SSH_CONNECTION="192.168.43.10 43670 192.168.43.11 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm-256color"
declare -x USER="root"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="3"
declare -x XMODIFIERS="@im=none"
[root@controller ~]# openstack user list
You are not authorized to perform the requested action: identity:list_users (HTTP 403) (Request-ID: req-e6487953-c2e4-44c3-9836-5393f21e2cd5)






[root@controller ~]# source admin-openrc
[root@controller ~]# ls
admin-openrc  anaconda-ks.cfg  demo-openrc
[root@controller ~]# openstack project list
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 32c74abc55964470bc518e9fff7ac040 | admin   |
| 6ababa60693c4aa6a965beba6bcf5b88 | service |
| 6ed1d2242c094627a82458e7bce1e606 | demo    |
+----------------------------------+---------+
[root@controller ~]# openstack service list
+----------------------------------+----------+----------+
| ID                               | Name     | Type     |
+----------------------------------+----------+----------+
| 3135df44052940beadfcfdb6f3703b77 | keystone | identity |
+----------------------------------+----------+----------+
[root@controller ~]# openstack endpoint list
+----------------------+-----------+--------------+--------------+---------+-----------+-----------------------+
| ID                   | Region    | Service Name | Service Type | Enabled | Interface | URL                   |
+----------------------+-----------+--------------+--------------+---------+-----------+-----------------------+
| a2b6256eb4bd43108d59 | RegionOne | keystone     | identity     | True    | admin     | http://controller:353 |
| fce3fdaac9c8         |           |              |              |         |           | 57/v3                 |
| caa9ac4adb6c421da667 | RegionOne | keystone     | identity     | True    | public    | http://controller:500 |
| fec72581b8cf         |           |              |              |         |           | 0/v3                  |
| e9adaaaf14cc4ccbbf0c | RegionOne | keystone     | identity     | True    | internal  | http://controller:500 |
| 11f6a9d8660f         |           |              |              |         |           | 0/v3                  |
+----------------------+-----------+--------------+--------------+---------+-----------+-----------------------+

1.3 镜像服务

OpenStack镜像服务是IaaS的核心服务。它接受磁盘镜像或服务器镜像API请求,和来自终端用户或OpenStack计算组件的元数据定义。它也支持包括OpenStack对象存储在内的多种类型仓库上的磁盘镜像或服务器镜像存储。
大量周期性进程运行于OpenStack镜像服务上以支持缓存。同步复制(Replication)服务保证集群中的一致性和可用性。其它周期性进程包括auditors, updaters, 和 reapers。
OpenStack镜像服务包括以下组件:
glance-api:接收镜像API的调用,诸如镜像发现、恢复、存储。
glance-registry:存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。
数据库:存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。
镜像文件的存储仓库:支持多种类型的仓库,它们有普通文件系统、对象存储、RADOS块设备、HTTP、以及亚马逊S3。记住,其中一些仓库仅支持只读方式使用。
元数据定义服务:通用的API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及可以与之关联的资源的类型。

1.创建创建一个数据库、服务凭证和API端点

创建数据库:
用数据库连接客户端以 root 用户连接到数据库服务器:
[root@controller ~]# mysql -u root -p
创建 glance 数据库:
CREATE DATABASE glance;
对glance数据库授予恰当的权限:
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';



创建服务证书:
获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
$ . admin-openrc
创建 glance 用户:
$ openstack user create --domain default --password glance glance
添加 admin 角色到 glance 用户和 service 项目上。
$ openstack role add --project service --user glance admin
创建glance服务实体:
$ openstack service create --name glance --description "OpenStack Image" image


创建镜像服务的 API 端点:
$ openstack endpoint create --region RegionOne image public http://controller:9292
$ openstack endpoint create --region RegionOne image internal http://controller:9292
$ openstack endpoint create --region RegionOne image admin http://controller:9292


2.安装包并配置组件

安装软件包:yum install openstack-glance


编辑文件vim /etc/glance/glance-api.conf

[database] ##配置数据库访问
connection = mysql+pymysql://glance:glance@controller/glance##在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance[paste_deploy]
flavor = keystone[glance_store] ##配置本地文件系统存储和镜像文件位置
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/






编辑文件 vim /etc/glance/glance-registry.conf

[database] ##配置数据库访问
connection = mysql+pymysql://glance:glance@controller/glance[keystone_authtoken] ##配置认证服务访问
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance[paste_deploy]##配置认证服务访问
flavor = keystone




写入镜像服务数据库:su -s /bin/sh -c "glance-manage db_sync" glance

启动镜像服务、配置他们随机启动:
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service


3.验证操作

下载源镜像:
$ wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img


使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:
$ openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
确认镜像的上传并验证属性:
$ openstack image list



1.4 计算服务

OpenStack计算服务由下列组件所构成:

nova-api 服务: 接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。
nova-api-metadata 服务: 接受来自虚拟机发送的元数据请求。nova-api-metadata服务一般在安装nova-network服务的多主机模式下使用。
nova-compute服务: 一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。例如:XenServer/XCP 的 XenAPI、KVM 或 QEMU 的 libvirt、VMware 的 VMwareAPI。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后,到数据库中更新它的状态。
nova-scheduler服务: 拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。
nova-conductor模块: 媒介作用于nova-compute服务与数据库之间。它排除了由nova-compute服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要将它部署在运行nova-compute服务的主机节点上。
nova-cert模块: 服务器守护进程向Nova Cert服务提供X509证书。用来为euca-bundle-image生成证书。仅仅是在EC2 API的请求中使用
nova-network worker 守护进程: 与nova-compute服务类似,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。
nova-consoleauth 守护进程: 授权控制台代理所提供的用户令牌。详情可查看nova-novncproxy和 nova-xvpvncproxy。该服务必须为控制台代理运行才可奏效。在集群配置中你可以运行二者中任一代理服务而非仅运行一个nova-consoleauth服务。
nova-novncproxy 守护进程: 提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。
nova-spicehtml5proxy 守护进程: 提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。
nova-xvpvncproxy 守护进程: 提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。
nova-cert 守护进程: X509 证书。
nova客户端: 用于用户作为租户管理员或最终用户来提交命令。
队列: 一个在守护进程间传递消息的中央集线器。常见实现有RabbitMQ <http://www.rabbitmq.com/>__ , 以及如Zero MQ <http://www.zeromq.org/>__等AMQP消息队列。
SQL数据库: 存储构建时和运行时的状态,为云基础设施,包括有:可用实例类型、使用中的实例、可用网络、项目

1.创建数据库服务的凭据以及 API endpoints

创建数据库
$ mysql -u root -p
创建 nova_api 和 nova 数据库:
CREATE DATABASE nova_api;
CREATE DATABASE nova;
对数据库进行正确的授权:
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';



创建服务证书
创建 nova 用户:
$ openstack user create --domain default \ --password nova nova
给 nova 用户添加 admin 角色:
$ openstack role add --project service --user nova admin
创建 nova 服务实体:
$ openstack service create --name nova --description "OpenStack Compute" compute


创建 Compute 服务 API 端点 :
$ openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s



2.安装包并配置组件

安装软件包:
yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler


编辑vim /etc/nova/nova.conf

[DEFAULT] ##只启用计算和元数据API
enabled_apis = osapi_compute,metadata##在[api_database]``和``[database]``部分,配置数据库的连接:
[api_database]
connection = mysql+pymysql://nova:nova@controller/nova_api[database]
connection = mysql+pymysql://nova:nova@controller/nova##在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
[DEFAULT]
rpc_backend = rabbit[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack##在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
auth_strategy = keystone[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova##在 [DEFAULT 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。
[DEFAULT]
my_ip = 192.168.43.11##在  [DEFAULT] 部分,使能 Networking 服务:
[DEFAULT]
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver##在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 :
[vnc]
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip##在 [glance] 区域,配置镜像服务 API 的位置:
[glance]
api_servers = http://controller:9292##在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/nova/tmp

同步Compute 数据库:
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova

启动 Compute 服务并将其设置为随系统启动:
systemctl enable openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service



3.安装和配置计算节点

计算节点同样双网卡




安装软件包:
[root@compute1 ~]# yum install openstack-nova-compute -y

编辑[root@compute1 ~]# vim /etc/nova/nova.conf

##在``[DEFAULT]`` 和 [oslo_messaging_rabbit]部分,配置``RabbitMQ``消息队列的连接:
[DEFAULT]
rpc_backend = rabbit[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack##在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
auth_strategy = keystone[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
## [keystone_authtoken] 中注释或者删除其他选项。##在 [DEFAULT] 部分,配置 my_ip 选项:
[DEFAULT]
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS##在  [DEFAULT] 部分,使能 Networking 服务:
[DEFAULT]
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver##在``[vnc]``部分,启用并配置远程控制台访问:
[vnc]
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html##在 [glance] 区域,配置镜像服务 API 的位置:
[glance]
api_servers = http://controller:9292##在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/nova/tmp

完成安装后确定您的计算节点是否支持虚拟机的硬件加速:
[root@compute1 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
如果这个命令返回了 one or greater 的值,那么你的计算节点支持硬件加速且不需要额外的配置。
如果这个命令返回了 zero 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM

编辑/etc/nova/nova.conf文件

[libvirt]
virt_type = kvm


启动计算服务及其依赖,并将其配置为随系统自动启动:
[root@compute1 ~]# systemctl enable libvirtd.service openstack-nova-compute.service --now


[root@compute1 ~]# yum install -y libvirt-client


4.验证计算服务的操作

[root@controller ~]# source admin-openrc
[root@controller ~]# openstack compute service list


1.5 Networking 服务

OpenStack Networking(neutron),允许创建、插入接口设备,这些设备由其他的OpenStack服务管理。插件式的实现可以容纳不同的网络设备和软件,为OpenStack架构与部署提供了灵活性。
它包含下列组件:
neutron-server: 接收和路由API请求到合适的OpenStack网络插件,以达到预想的目的。
OpenStack网络插件和代理: 插拔端口,创建网络和子网,以及提供IP地址,这些插件和代理依赖于供应商和技术而不同,OpenStack网络基于插件和代理为Cisco 虚拟和物理交换机、NEC OpenFlow产品,Open vSwitch,Linux bridging以及VMware NSX 产品穿线搭桥。
常见的代理L3(3层),DHCP(动态主机IP地址),以及插件代理。
消息队列: 大多数的OpenStack Networking安装都会用到,用于在neutron-server和各种各样的代理进程间路由信息。也为某些特定的插件扮演数据库的角色,以存储网络状态.

1. 安装并配置控制节点

创建一个数据库,服务凭证和API端点
用数据库连接客户端以 root 用户连接到数据库服务器:
mysql -p
创建neutron数据库:
CREATE DATABASE neutron;
对neutron 数据库授予合适的访问权限,使用合适的密码替换NEUTRON_DBPASS
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';



创建服务证书
创建neutron用户:
openstack user create --domain default --password neutron neutron
添加admin 角色到neutron 用户:
openstack role add --project service --user neutron admin
创建neutron服务实体:
openstack service create --name neutron --description "OpenStack Networking" network
创建网络服务API端点:
openstack endpoint create --region RegionOne network public http://controller:9696
openstack endpoint create --region RegionOne network internal http://controller:9696
openstack endpoint create --region RegionOne network admin http://controller:9696




2. 在控制节点配置公共网络

安装组件
[root@controller ~]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables


编辑[root@controller ~]# vim /etc/neutron/neutron.conf文件

## 在 [database] 部分,配置数据库访问:
[database]
connection = mysql+pymysql://neutron:neutron@controller/neutron##在``[DEFAULT]``部分,启用ML2插件并禁用其他插件:
[DEFAULT]
core_plugin = ml2
service_plugins =##在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接:
[DEFAULT]
rpc_backend = rabbit[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack##在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
auth_strategy = keystone[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron

配置 Modular Layer 2 (ML2) 插件
编辑[root@controller ~]# vim /etc/neutron/plugins/ml2/ml2_conf.ini文件

##在``[ml2]``部分,启用flat和VLAN网络:
[ml2]
type_drivers = flat,vlan##在``[ml2]``部分,禁用私有网络:
[ml2]
tenant_network_types =##在``[ml2]``部分,启用Linuxbridge机制:
[ml2]
mechanism_drivers = linuxbridge##在``[ml2]`` 部分,启用端口安全扩展驱动:
[ml2]
extension_drivers = port_security##在``[ml2_type_flat]``部分,配置公共虚拟网络为flat网络
[ml2_type_flat]
flat_networks = provider##在 ``[securitygroup]``部分,启用 ipset 增加安全组规则的高效性:
[securitygroup]
enable_ipset = True

配置Linuxbridge代理
编辑[root@controller ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini

##在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:
[linux_bridge]
physical_interface_mappings = provider:eth1##在``[vxlan]``部分,禁止VXLAN覆盖网络:
[vxlan]
enable_vxlan = False##在 ``[securitygroup]``部分,启用安全组并配置 Linuxbridge iptables firewall driver:
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

配置DHCP代理
编辑[root@controller ~]# vim /etc/neutron/dhcp_agent.ini文件

##在``[DEFAULT]``部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
[DEFAULT]
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True


配置元数据代理
编辑[root@controller ~]# vim /etc/neutron/metadata_agent.ini文件:

##在``[DEFAULT]`` 部分,配置元数据主机以及共享密码:
[DEFAULT]
nova_metadata_ip = controller
metadata_proxy_shared_secret = redhat


3.在控制节点为计算节点配置网络服务

编辑[root@controller ~]# vim /etc/nova/nova.conf文件并完成以下操作:

###在``[neutron]``部分,配置访问参数,启用元数据代理并设置密码:
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutronservice_metadata_proxy = True
metadata_proxy_shared_secret = redhat

网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini。如果超链接不存在,使用下面的命令创建它:
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

同步数据库:
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron


重启计算API 服务:
systemctl restart openstack-nova-api.service

当系统启动时,启动 Networking 服务并配置它启动。
systemctl enable --now neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service



4.安装和配置计算节点

安装组件
yum install openstack-neutron-linuxbridge ebtables ipset -y

配置通用组件,编辑`[root@compute1 ~]# vim /etc/neutron/neutron.conf`` 文件

## 在``[database]`` 部分,注释所有``connection`` 项,因为计算节点不直接访问数据库。
## 在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接:
[DEFAULT]
rpc_backend = rabbit[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack## 在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
...
auth_strategy = keystone[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron## 在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp

**

5.计算节点上配置网络组件

配置Linuxbridge代理
Linuxbridge代理为实例建立layer-2虚拟网络并且处理安全组规则。

编辑[root@compute1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:

##在``[linux_bridge]``部分,将公共虚拟网络和公共物理网络接口对应起来:
[linux_bridge]
physical_interface_mappings = provider:eth1##在``[vxlan]``部分,禁止VXLAN覆盖网络:
[vxlan]
enable_vxlan = False##在 ``[securitygroup]``部分,启用安全组并配置 Linuxbridge iptables firewall driver:
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

6.为计算节点配置网络服务

编辑/etc/nova/nova.conf文件并完成下面的操作:

##在``[neutron]`` 部分,配置访问参数:
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron

重启计算服务:
systemctl restart openstack-nova-compute.service
启动Linuxbridge代理并配置它开机自启动:
systemctl enable --now neutron-linuxbridge-agent.service



2.openstack实例

1 创建提供者网络

在控制节点上,加载 admin 凭证来获取管理员能执行的命令访问权限:
source admin-openrc
创建网络:
neutron net-create --shared --provider:physical_network provider --provider:network_type flat provider


在网络上创建一个子网:
neutron subnet-create --name provider --allocation-pool start=192.168.43.100,end=192.168.43.200 --dns-nameserver 114.114.114.114 --gateway 192.168.43.1 provider 192.168.43.0/24


2.创建m1.nano规格的主机

默认的最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,我们推荐创建只需要64 MB的m1.nano规格的主机。若单纯为了测试的目的,请使用m1.nano规格的主机来加载CirrOS镜像
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano


3.生成一个键值对

大部分云镜像支持公共密钥认证而不是传统的密码认证。在启动实例前,你必须添加一个公共密钥到计算服务。
导入租户demo的凭证
source demo-openrc
生成和添加秘钥对:
ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
验证公钥的添加:
openstack keypair list


4.增加安全组规则

默认情况下,default安全组适用于所有实例并且包括拒绝远程访问实例的防火墙规则。对诸如CirrOS这样的Linux镜像,我们推荐至少允许ICMP (ping) 和安全shell(SSH)规则。
添加规则到 default 安全组。
允许 ICMP (ping):
openstack security group rule create --proto icmp default
允许安全 shell (SSH) 的访问:
openstack security group rule create --proto tcp --dst-port 22 default


5.在公有网络上创建实例

确定实例选项:启动一台实例,您必须至少指定一个类型、镜像名称、网络、安全组、密钥和实例名称。
在控制节点上,获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
source demo-openrc
一个实例指定了虚拟机资源的大致分配,包括处理器、内存和存储。
列出可用类型:
openstack flavor list
列出可用镜像:
openstack image list
列出可用网络:
openstack network list
列出可用的安全组:
openstack security group list


创建实例
openstack server create --flavor m1.tiny --image cirros --nic net-id=b4cb2e89-665e-4914-97d2-8dbdc8ea1d9f --security-group default --key-name mykey provider-instance
检查实例的状态:
openstack server list


使用虚拟控制台访问实例
获取你实例的 Virtual Network Computing (VNC) 会话URL并从web浏览器访问它:
openstack console url show provider-instance







openstack的部署与云主机实例相关推荐

  1. Ceph与OpenStack整合(仅为云主机提供云盘功能)

    1. Ceph与OpenStack整合(仅为云主机提供云盘功能) 创建: linhaifeng,最新修改: 大约1分钟以前 ceph ceph osd pool create volumes 128 ...

  2. 如何把项目部署到云服务器上,如何把项目部署到云主机

    如何把项目部署到 先使用#yum install lrzsz命令下载rz ,下载完毕后,输入rz就可以在Windows桌面上传输文件到linux服务器.其次你还需要使用 #yum install zi ...

  3. 基于openstack安装部署私有云详细图文教程

    本文主要分享的是云计算.openstack的使用.私有云平台建设.云服务器云硬盘的构建和使用.从基本概念入手到私有云建设,信息量非常大.对于openstack的安装部署都是从官方文档中一步步的介绍,内 ...

  4. 基于openstack安装部署私有云详细

    本文主要分享的是云计算.openstack的使用.私有云平台建设.云服务器云硬盘的构建和使用.从基本概念入手到私有云建设,信息量非常大.对于openstack的安装部署都是从官方文档中一步步的介绍,内 ...

  5. openstack安装部署私有云详细图文

    本文主要分享的是云计算.openstack的使用.私有云平台建设.云服务器云硬盘的构建和使用.从基本概念入手到私有云建设,信息量非常大.对于openstack的安装部署都是从官方文档中一步步的介绍,内 ...

  6. mysql 云主机名_mysql部署到云主机的笔记

    写了个程序,需要把数据库部署到云主机上 MySQL基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限 为了安全,新添加一个用户来进行远程登录 登录MYSQL: ...

  7. openstack平台上创建云主机

    两种方式创建云主机 前提 交代: 上传镜像 修改安全组 web创建云主机 创建云主机类型 创建网络 创建云主机 命令行创建云主机 首先创建云主机类型 创建网络 云主机创建 前提 云平台的控股节点(co ...

  8. 第九节 先电云openstack手动搭建创建云主机

    创建外网 管理员-系统-网络-创建网络(容器的网络) 外部网络只给管理员用,不可共享 创建外网的子网,与本机IP同网段未使用的IP地址 2. 项目-网络 3. 路由 进入路由 把外网的子网池改为200 ...

  9. 将Hexo博客部署到云主机

    摘要: 在云主机上搭建一个git裸仓库,然后使用nginx作为网页服务器,就可以轻松将Hexo博客通过git部署到云主机上. 这是一个忧伤的故事 我的博客KiwenLau之前部署在Coding Pag ...

最新文章

  1. NB-IoT模组低功耗设计:DRX、eDRX和PSM(NB-IoT专栏—拓展篇2)
  2. 工控系统的指纹识别技术
  3. Spring-配置bean的方法(工厂方法和Factorybean)【转】
  4. Android中控件移动的实现
  5. 视频编码器的智能化——AI辅助编解码的ASIC解决方案
  6. sata接口测试软件,如何查看电脑是否支持USB 3.0?Hwinfo32检测SATA端口的方法
  7. c语言键盘按f1显示f1,windows10键盘f1变成功能键的两种解决方法
  8. 【转载】安装pip、pyinstaller并将py脚本打包成exe文件
  9. android webview 水平滚动,Android WebView不可滚动
  10. 渗透测试技术_Nessus工具(一)Linux centos7下 Nessus8.13的下载、安装
  11. java赵云主角兵器谱游戏_三国赵云所用的龙胆亮银枪的起源——传奇兵器谱一、“百兵之王”枪...
  12. 当欧洲开始通过页游对抗假新闻,中国何时起步媒介素养培育?
  13. mysql 中的neq_mysql中neq使用Python的Django框架中的压缩组件Django Compressor_MySQL
  14. Android手电筒案例
  15. 《算法零基础100讲》(第20讲) 进制转换(二) - 进阶[C语言题解]
  16. 基岩版刷铁傀儡机制和Java_我的世界:Java版1.14获得铁傀儡的四种方式,第三种千万别忘记...
  17. orientdb实战
  18. vue 未登录 登录超时跳转到登录页
  19. Android 耳机驱动知识
  20. vba给服务器发送消息,我如何发送一个HTTP POST请求使用VBA从Excel服务器?我如何发送一个HTTP POST请...

热门文章

  1. Linux网卡模块,裁剪Linux并实现网卡模块的安装(附有命令移植的脚本)
  2. TCP粘包问题以及解决方法
  3. 如何发送工资条通知短信
  4. 操作系统接口之批处理作业
  5. w7系统桌面没有计算机图标不见了,桌面上我的电脑图标不见了怎么办
  6. 记录下:订单模块初步完成
  7. 关于Win10的powerdesigner16的缩放问题,字体和图标
  8. C# DGV常用操作
  9. lyle的第一篇博客
  10. ubuntu配置网易云音乐