文章

Openstack服务

服务的基本使用

Nova


管理VM的生命周期,是Openstack的核心组件之一

计算服务是OpenStack最核心的服务之一,负责维护和管理云环境的计算资源,它在OpenStack项目中代号是nova。

Nova自身并没有提供任何虚拟化能力,它提供计算服务,使用不同的虚拟化驱动来与底层支持的Hypervisor(虚拟机管理器)进行交互。所有的计算实例(虚拟服务器)由Nova进行生命周期的调度管理(启动、挂起、停止、删除等)。

Nova需要Keystone、Glance、Neutron、Cinder和Swift等其他服务的支持,能与这些服务集成,实现如加密磁盘、裸金属计算实例等。

1. 创建flavor类型

openstack help flavor create
usage: openstack flavor create [-h] [-f {json,shell,table,value,yaml}]
                               [-c COLUMN] [--max-width <integer>]
                               [--fit-width] [--print-empty] [--noindent]
                               [--prefix PREFIX] [--id <id>] [--ram <size-mb>]
                               [--disk <size-gb>] [--ephemeral <size-gb>]
                               [--swap <size-mb>] [--vcpus <vcpus>]
                               [--rxtx-factor <factor>] [--public | --private]
                               [--property <key=value>] [--project <project>]
                               [--description <description>]
                               [--project-domain <project-domain>]
                               <flavor-name>

Create new flavor

2. 查看flavor类型

openstack flavor list

3. 访问安全组

openstack security group list

查看任意规则的详细信息

openstack security group rule show

4. 创建访问安全组

openstack help security group create
usage: openstack security group create [-h] [-f {json,shell,table,value,yaml}]
                                       [-c COLUMN] [--max-width <integer>]
                                       [--fit-width] [--print-empty]
                                       [--noindent] [--prefix PREFIX]
                                       [--description <description>]
                                       [--project <project>]
                                       [--project-domain <project-domain>]
                                       [--tag <tag> | --no-tag]
                                       <name>

Create a new security group

5.删除访问安全组

openstack security group delete <name>

6.添加安全规则

openstack  help security group rule create 
usage: openstack security group rule create [-h]
                                            [-f {json,shell,table,value,yaml}]
                                            [-c COLUMN]
                                            [--max-width <integer>]
                                            [--fit-width] [--print-empty]
                                            [--noindent] [--prefix PREFIX]
                                            [--remote-ip <ip-address> | --remote-group <group>]
                                            [--description <description>]
                                            [--dst-port <port-range>]
                                            [--icmp-type <icmp-type>]
                                            [--icmp-code <icmp-code>]
                                            [--protocol <protocol>]
                                            [--ingress | --egress]
                                            [--ethertype <ethertype>]
                                            [--project <project>]
                                            [--project-domain <project-domain>]
                                            <group>
从入口方向放行所有ICMP规则,命令如下:

openstack security group rule create --protocol icmp --ingress  default
从入口方向放行所有TCP规则,命令如下:

openstack security group rule create --protocol tcp --ingress  default
从入口方向放行所有UDP规则,命令如下:

openstack security group rule create --protocol udp --ingress  default
查看“default”安全组中所有的规则列表信息,命令如下:

openstack security group rule list default

7.查询可用镜像

openstack image list

上传镜像有关详见Glance服务

8.创建网络与子网

openstack help network create
sage: openstack network create [-h] [-f {json,shell,table,value,yaml}]
                                [-c COLUMN] [--max-width <integer>]
                                [--fit-width] [--print-empty] [--noindent]
                                [--prefix PREFIX] [--share | --no-share]
                                [--enable | --disable] [--project <project>]
                                [--description <description>] [--mtu <mtu>]
                                [--project-domain <project-domain>]
                                [--availability-zone-hint <availability-zone>]
                                [--enable-port-security | --disable-port-securit
y]
                                [--external | --internal]
                                [--default | --no-default]
                                [--qos-policy <qos-policy>]
                                [--transparent-vlan | --no-transparent-vlan]
                                [--provider-network-type <provider-network-type>
]
                                [--provider-physical-network <provider-physical-
network>]
                                [--provider-segment <provider-segment>]
                                [--dns-domain <dns-domain>]
                                [--tag <tag> | --no-tag]
                                <name>

创建子网

openstack subnet create

修改OpenStack平台

修改Nova服务配置文件,设置参数“virt_type=qemu”。命令参数如下:

crudini --set /etc/nova/nova.conf libvirt virt_type qemu

systemctl restart openstack-nova-compute

9.启动云主机

openstack help server create
usage: openstack server create [-h] [-f {json,shell,table,value,yaml}]
                               [-c COLUMN] [--max-width <integer>]
                               [--fit-width] [--print-empty] [--noindent]
                               [--prefix PREFIX]
                               (--image <image> | --volume <volume>) --flavor
                               <flavor> [--security-group <security-group>]
                               [--key-name <key-name>]
                               [--property <key=value>]
                               [--file <dest-filename=source-filename>]
                               [--user-data <user-data>]
                               [--availability-zone <zone-name>]
                               [--block-device-mapping <dev-name=mapping>]
                               [--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,port-id=port-uuid,auto,none>]
                               [--network <network>] [--port <port>]
                               [--hint <key=value>]
                               [--config-drive <config-drive-volume>|True]
                               [--min <count>] [--max <count>] [--wait]
                               <server-name>

10.管理虚拟机

查看虚拟机列表信息

openstack server list

看虚拟机的具体信息,包括使用的安全组、flavor以及网络信息

openstack server show <server-name>

操作虚拟机

openstack server stop <server-name>
openstack server start <server-name>
openstack server reboot <server-name>

调整虚拟机

修改配置文件

修改controller节点nova.conf配置文件,添加调整类型大小的参数,controller节点设置参数

[root@controller ~]# crudini --set /etc/nova/nova.conf DEFAULT allow_resize_to_same_host True
[root@controller ~]# crudini --set /etc/nova/nova.conf DEFAULT scheduler_default_filters RetryFilter,AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter
systemctl restart openstack-nova*

现有云主机硬盘和内存不满足使用,需要对现有云主机进行资源扩容,将内存扩容至1G,硬盘扩容至15G大小,类型名称为“centos1”首先创建一个新的云主机类型满足扩容资源的需求。通过命令创建新云主机类型,命令如下所示:

[root@controller ~]#  openstack flavor create --disk 15 --ram 1024 --vcpus 2 centos1
+-----------------------------+---------------------------------------+
| Field                       | Value                                 |
+-----------------------------+---------------------------------------+
| OS-FLV-DISABLED:disabled    | False                                 |
| OS-FLV-EXT-DATA:ephemeral   | 0                                     |
| disk                        | 15                                    |
| id                          | a99a75ba-5afb-448b-bfc8-6bc656471476  |
| name                        | centos1                               |
| os-flavor-access:is_public | True                                  |
| properties                  |                                       |
| ram                         | 1024                                  |
| rxtx_factor                 | 1.0                                   |
| swap                        |                                       |
| vcpus                       | 2                                     |
+-----------------------------+--------------------------------------

调整云主机类型

openstack help server resize
usage: openstack server resize [-h] [--flavor <flavor> | --confirm | --revert]
                               [--wait]
                               <server>

  <server>           Server (name or ID)

optional arguments:
  -h, --help         show this help message and exit
  --flavor <flavor>  Resize server to specified flavor
  --confirm          Confirm server resize is complete
  --revert           Restore server state before resize
  --wait             Wait for resize to complete
使用命令调整云主机“cirros-test”类型为centos1,使用–wait参数,在命令执行后,调整云主机需要一定时间,添加–wait参数后会在确认时回馈“complete”。命令如下所示:

[root@controller ~]# openstack server resize --flavor centos1 --wait cirros-test
Complete
[root@controller ~]# openstack server list
+--------------------------------------+-------------+---------------+------------------------------+--------------+---------+
| ID                                   | Name        | Status        | Networks                     | Image        | Flavor  |
+--------------------------------------+-------------+---------------+------------------------------+--------------+---------+
| d152e1e5-7ff2-4f4e-9a1f-4133d8c4d6fe | cirros-test | VERIFY_RESIZE | network-vlan=192.168.200.187 | cirros-0.3.4 | centos1 |
+--------------------------------------+-------------+---------------+------------------------------+--------------+---------+

Glance


为虚拟机进行镜像管理

Glance是OpenStack镜像服务,用来注册、登陆和检索虚拟机镜像。Glance服务提供了一个REST API,使读者能够查询虚拟机镜像元数据和检索的实际镜像。通过镜像服务提供的虚拟机镜像可以存储在不同的位置,从简单的文件系统对象存储到类似OpenStack对象存储系统。

通过命令创建镜像

glance help image-create 
usage: glance image-create [--architecture ]
                           [--protected [True|False]] [--name ]
                           [--instance-uuid ]
                           [--min-disk ] [--visibility ]
                           [--kernel-id ]
                           [--tags  [ ...]]
                           [--os-version ]
                           [--disk-format ]
                           [--os-distro ] [--id ]
                           [--owner ] [--ramdisk-id ]
                           [--min-ram ]
                           [--container-format ]
                           [--property ] [--file ]
                           [--progress]

管理镜像

查看镜像

glance image-list <id>

查看镜像的详细信息

glance image-show <id>

修改镜像

glance help image-update 
usage: glance image-update [--architecture ]
                           [--protected [True|False]] [--name ]
                           [--instance-uuid ]
                           [--min-disk ] [--visibility ]
                           [--kernel-id ]
                           [--os-version ]
                           [--disk-format ]
                           [--os-distro ] [--owner ]
                           [--ramdisk-id ] [--min-ram ]
                           [--container-format ]
                           [--property ] [--remove-property key]

删除镜像

glance image-delete <id>

Swift


为虚拟机提供存储资源


Keystone


为虚拟机进行权限服务


Cellometer


提供Openstack的报警、计算


Cinder


为虚拟机提供存储资源

1. 块存储服务

创建镜像和网络:

[root@controller ~]# glance image-create --name cirros-0.3.4 --disk-format qcow2 --container-format bare --progress < cirros-0.3.4-x86_64-disk.img
…
[root@controller ~]# openstack network create --provider-network-type vlan --provider-physical-network provider network-vlan --provider-segment 200
…
[root@controller ~]# openstack subnet create  --network network-vlan  --allocation-pool start=192.168.200.100,end=192.168.200.200 --gateway 192.168.200.1 --subnet-range 192.168.200.0/24  subnet-vlan

修改OpenStack平台

crudini --set /etc/nova/nova.conf libvirt virt_type qemu

systemctl restart openstack-nova-compute

启动云主机:

openstack server create --image cirros-0.3.4 --flavor 2 --network network-vlan cirros-test

查看Cinder服务状态

openstack volume service list

创建块存储

openstack help volume create 
usage: openstack volume create [-h] [-f {json,shell,table,value,yaml}]
                               [-c COLUMN] [--max-width <integer>]
                               [--fit-width] [--print-empty] [--noindent]
                               [--prefix PREFIX] [--size <size>]
                               [--type <volume-type>]
                               [--image <image> | --snapshot <snapshot> | --source <volume> | --source-replicated <replicated-volume>]
                               [--description <description>] [--user <user>]
                               [--project <project>]
                               [--availability-zone <availability-zone>]
                               [--consistency-group consistency-group>]
                               [--property <key=value>] [--hint <key=value>]
                               [--multi-attach] [--bootable | --non-bootable]
                               [--read-only | --read-write]
                               <name>
//通过命令创建块存储,大小为2G,名称为“volume”
openstack volume create --size 2 volume

查看块存储

openstack volume list

查看某一块存储的详细信息

openstack volume show volume

挂载云硬盘

块存储设备创建成功后,可以在OpenStack上将该设备挂载至云主机上,可以作为一块云硬盘来进行使用。给云主机添加一块磁盘。

openstack help server add volume
usage: openstack server add volume [-h] [--device <device>] <server> <volume>

Add volume to server

positional arguments:
  <server>           Server (name or ID)
  <volume>           Volume to add (name or ID)

使用命令将创建的“volume”块存储添加至云主机“cirros-test”上

openstack server add volume cirros-test volume

2. 扩展卷

创建完卷后可能因为需求的变更,需要对已有的卷进行扩容操作,这时需要用到“openstack volume set”命令修改卷的信息。命令格式如下:

openstack  help  volume set
usage: openstack volume set [-h] [--name <name>] [--size <size>]
                            [--description <description>] [--no-property]
                            [--property <key=value>]
                            [--image-property <key=value>] [--state <state>]
                            [--type <volume-type>]
                            [--retype-policy <retype-policy>]
                            [--bootable | --non-bootable]
                            [--read-only | --read-write]
                            <volume>

分离卷,通过命令将“volume”卷大小从2G扩容至3G,使用–size参数可修改已创建好的卷大小。

openstack server remove volume cirros-test volume

openstack volume set --size 3 volume

再次挂载卷

openstack server add volume cirros-test volume

Neutron


为Openstack提供网络服务

Horizon Dashboard

提供基于web的自服务门户,与底层交互,如果启动一个实例,来分配IP地址以及来配置访问控制等。

License:  CC BY 4.0