Openstack云计算(四)horizon Web管理界面,区域,cinder

发布时间:2024年01月08日

一、horizon 介绍:

理解 horizonHorizon为Openstack提供一个WEB前端的管理界面(UI服务)通过Horizone所提供的DashEoard服务,管理员可以使用通过WEB UI对Openstack整体云环境进行管理,并可直观看到各种操作结果与运行状态。

安装和配置

安装软件包:

#?yum install openstack-dashboard?-y

编辑文件?/etc/openstack-dashboard/local_settings?并完成如下动作:

在?controller?节点上配置仪表盘以使用 OpenStack 服务:controller改为自己的服务端点

OPENSTACK_HOST?=?"controller"

允许所有主机访问仪表板:

ALLOWED_HOSTS?=?['*', ]

配置?memcached?会话存储服务:controller改为自己的服务端点

SESSION_ENGINE?=?'django.contrib.sessions.backends.cache'

CACHES?=?{

???'default': {

????????'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', ????

????'LOCATION': 'controller:11211', ???

              }

        }

启用第3版认证API:

OPENSTACK_KEYSTONE_URL?=?"http://%s:5000/v3" % OPENSTACK_HOST

启用对域的支持

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT?=?True

配置API版本:

OPENSTACK_API_VERSIONS?=?{ ???"identity": 3, ???"image": 2, ???"volume": 2,}

通过仪表盘创建用户时的默认域配置为?default?:

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN?=?"default"

通过仪表盘创建的用户默认角色配置为?user?:

OPENSTACK_KEYSTONE_DEFAULT_ROLE?=?"user"

如果您选择网络参数1,禁用支持3层网络服务:

OPENSTACK_NEUTRON_NETWORK?=?{

...

'enable_router': False,

'enable_quotas': False, ???

'enable_distributed_router': False, ???

'enable_ha_router': False, ???

'enable_lb': False, ???

'enable_firewall': False, ???

'enable_vpn': False, ???

'enable_fip_topology_check': False,

}

可以选择性地配置时区:

TIME_ZONE?=?"TIME_ZONE"

完成安装?

重启web服务器以及会话存储服务:

#?systemctl restart httpd.service memcached.service

Region

区域(Region)

  1. 地理上的概念,可以理解为一个独立的数据中心,每个所定义的区域有自己独立的Endpoint ;

2、区域之间是完全隔离的,但多个区域之间共享同一个Keystone和Dashboard(目前Openstack中的Dashboard还不支持多个区域);

3、除了提供隔离的功能,区域的设计更多侧重地理位置的概念,用户可以选择离自己更新的区域来部署自己的服务,选择不同的区域主要是考虑那个区域更靠近自己,如用户在美国,可以选择离美国更近的区域;

4、区域的概念是由Amazon在AWS中提出,主要是解决容错能力和可靠性;

可用性区域(Availability Zone)

1.AZ是在Region范围内的再次切分,例如可以把一个机架上的服务器划分为一个AZ,划分AZ是为了提高容灾能力和提供廉价的隔离服务;

2.?AZ主要是通过冗余来解决可用性的问题,在Amazon的声明中, Instance不可用是指用户所有AZ中的同一个Instance都不可达才表明不可用;

3、 AZ是用户可见的一个概念,并可选择,是物理隔离的,一个AZ不可用不会影响其他的AZ,用户在创建Instance的时候可以选择创建到那些AZ中;的数据

Cell

nova为了增加横向扩展以及分布式、大规模(地理位置级别)部署的能力,同时又不增加数据库和消息中间件的复杂度,引入了cell的概念,并引入了nova-cell服务。

  1. 主要是用来解决OpenStack的扩展性和规模瓶颈;
  2. 每个Cell都有自己独立的DB和AMQP ,不与其他模块共用DB和AMQP,解决了大规模环境中DB和AMQP的瓶颈问题;
  3. Cell实现了树形结构(通过消息路由)和分级调度(过滤算法和权重算法) ,Cell之间通过RPC通讯,解决了扩展性问题;中己,如用户在美国,可以选择离美国更近的区域;

cinder 介绍:

理解 Block Storage

操作系统获得存储空间的方式一般有两种

  1. 通过某种协议(SAS,SCSI,SAN,ISCSI等)挂接裸硬盘,然后分区、格式化、创建文件系统;或者直接使用裸硬盘存储数据(数据库)
  2. 通过 NFS,CIFS等 协议,mount 远程的文件系统

第一种裸硬盘的方式叫做Block Storage (块存储) ,每个裸硬盘通常也称作Volume (卷)第二种叫做文件系统存储。NAS和NFS服务器,以及各种分布式文件系统提供的都是这种存储。理解Block Storage ServiceBlock

Storage Servicet提供对volume从创建到删除整个生命周期的管理。从instance的角度看,挂载的每一个Volume 都是一块硬盘。OpenStack 提供 Block Storage Service 的是 Cinder,其具体功能是 :

  1. 提供REST API使用户能够查询和管理 volume, volume snapshot 以及volume type
  2. 提供scheduler调度 volume创建请求,合理优化存储资源的分配

对于 Cinder 学习来说,Volume 创建是一个非常好的场景,涉及各个 cinder-* 子服务,下面是流程图 :

API对请求做一些必要处理后,向Messaging ( RabbitMQ)发送了一条消息: "让Scheduler创建一个volume"

Scheduler ( cinder-scheduler )从Messaging获取到API发给它的消息,然后执行调度算法,从若干计存储点中选出节点 A

Scheduler 向 Messaging 发送了一条消息:"让存储节点 A 创建这个 volume"

存储节点A的Volume (cinder-volume)从Messaging中获取到Scheduler发给它的消息,然后通过driver在volume provider 上创建 volume.

先决条件?

在你安装和配置块存储服务之前,你必须创建数据库、服务证书和API端点。

完成下面的步骤以创建数据库:

用数据库连接客户端以?root?用户连接到数据库服务器:

$?mysql -u root -p

创建?cinder?数据库:

CREATE DATABASE cinder;

允许?cinder?数据库合适的访问权限:

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \ ?

IDENTIFIED BY 'CINDER_DBPASS';

GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \ ?

IDENTIFIED BY 'CINDER_DBPASS';

用合适的密码替换?CINDER_DBPASS

退出数据库客户端。

exit

要创建服务证书,完成这些步骤:

创建一个?cinder?用户:

$?openstack user create --domain default --password-prompt cinder

添加?admin?角色到?cinder?用户上。

$?openstack role add --project service --user cinder admin

创建?cinder?和?cinderv2?服务实体:

$?openstack service create --name cinder \

??--description "OpenStack Block Storage"?volume

$?openstack service create --name cinderv2 \

??--description "OpenStack Block Storage"?volumev2

创建块设备存储服务的 API 入口点:

$?openstack endpoint create --region RegionOne \

??volume public http://controller:8776/v1/%\(tenant_id\)s

$?openstack endpoint create --region RegionOne \

??volume internal http://controller:8776/v1/%\(tenant_id\)s

$?openstack endpoint create --region RegionOne \

??volume admin http://controller:8776/v1/%\(tenant_id\)s

$?openstack endpoint create --region RegionOne \

??volumev2 public http://controller:8776/v2/%\(tenant_id\)s

$?openstack endpoint create --region RegionOne \

??volumev2 internal http://controller:8776/v2/%\(tenant_id\)s

$?openstack endpoint create --region RegionOne \

??volumev2 admin http://controller:8776/v2/%\(tenant_id\)s

安全并配置组件?

安装软件包:

#?yum install openstack-cinder

编辑?/etc/cinder/cinder.conf,同时完成如下动作:

在?[database]?部分,配置数据库访问:

[database]

...

connection?=?mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

用你为块设备存储数据库选择的密码替换?CINDER_DBPASS。controller替换为自己的服务端点

在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:

[DEFAULT]

...

rpc_backend?=?rabbit

[oslo_messaging_rabbit]

...

rabbit_host?=?controller

rabbit_userid?=?openstack

rabbit_password?=?RABBIT_PASS

用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。controller替换为自己的服务端点

在 “[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?=?cinderpassword?=?CINDER_PASS

将?CINDER_PASS?替换为你在认证服务中为?cinder?用户选择的密码。controller替换为自己的服务端点

?[DEFAULT?部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。

[DEFAULT]...my_ip?=?10.0.0.11

在?[oslo_concurrency]?部分,配置锁路径:

[oslo_concurrency]...lock_path?=?/var/lib/cinder/tmp

初始化块设备服务的数据库:

#?su -s /bin/sh -c "cinder-manage db sync"?cinder

配置计算节点以使用块设备存储?

编辑文件?/etc/nova/nova.conf?并添加如下到其中:

[cinder]os_region_name?=?RegionOne

完成安装?

重启计算API 服务:

#?systemctl restart openstack-nova-api.service

启动块设备存储服务,并将其配置为开机自启:

#?systemctl enable?openstack-cinder-api.service openstack-cinder-scheduler.service

#?systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

查看cinder列表

cinder service-list

安装并配置一个存储节点

安装支持的工具包:

安装 LVM 包:

#?yum install lvm2

启动LVM的metadata服务并且设置该服务随系统启动:

#?systemctl enable?lvm2-lvmetad.service#?systemctl start lvm2-lvmetad.servi

创建LVM 物理卷?/dev/sdb:

#?pvcreate /dev/sdb

创建 LVM 卷组?cinder-volumes:

#?vgcreate cinder-volumes /dev/sdb

块存储服务会在这个卷组中创建逻辑卷。

只有实例可以访问块存储卷组。不过,底层的操作系统管理这些设备并将其与卷关联。默认情况下,LVM卷扫描工具会扫描``/dev`` 目录,查找包含卷的块存储设备。如果项目在他们的卷上使用LVM,扫描工具检测到这些卷时会尝试缓存它们,可能会在底层操作系统和项目卷上产生各种问题。您必须重新配置LVM,让它只扫描包含``cinder-volume``卷组的设备。编辑``/etc/lvm/lvm.conf``文件并完成下面的操作:

在``devices``部分,添加一个过滤器,只接受``/dev/sdb``设备,拒绝其他所有设备:

devices {

...

filter?=?[ "a/sdb/", "r/.*/"]

每个过滤器组中的元素都以``a``开头,即为?accept,或以?r?开头,即为**reject**,并且包括一个设备名称的正则表达式规则。过滤器组必须以``r/.*/``结束,过滤所有保留设备。您可以使用?:命令:`vgs -vvvv`?来测试过滤器。

安全并配置组件?

安装软件包:

#?yum install openstack-cinder targetcli python-keystone

编辑?/etc/cinder/cinder.conf,同时完成如下动作:

在?[database]?部分,配置数据库访问:

[database]

...

connection?=?mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

用你为块设备存储数据库选择的密码替换?CINDER_DBPASS。

在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:

[DEFAULT]

...

rpc_backend?=?rabbit

[oslo_messaging_rabbit]

...

rabbit_host?=?controller

rabbit_userid?=?openstack

rabbit_password?=?RABBIT_PASS

用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

在 “[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?=?cinderpassword?=?CINDER_PASS

将?CINDER_PASS?替换为你在认证服务中为?cinder?用户选择的密码。

?[DEFAULT]?部分,配置?my_ip?选项:

[DEFAULT]

...

my_ip?=?MANAGEMENT_INTERFACE_IP_ADDRESS

将其中的``MANAGEMENT_INTERFACE_IP_ADDRESS``替换为存储节点上的管理网络接口的IP 地址,例如样例架构 <overview-example-architectures>中所示的第一台节点 10.0.0.41 。

在``[lvm]``部分,配置LVM后端以LVM驱动结束,卷组``cinder-volumes`` ,iSCSI 协议和正确的 iSCSI服务:

[lvm]

...

volume_driver?=?cinder.volume.drivers.lvm.LVMVolumeDriver

volume_group?=?cinder-volumes

iscsi_protocol?=?iscsi

iscsi_helper?=?lioadm

在?[DEFAULT]?部分,启用 LVM 后端:

[DEFAULT]

...

enabled_backends?=?lvm

?[DEFAULT]?区域,配置镜像服务 API 的位置:

[DEFAULT]
...
glance_api_servers?=?http://controller:9292

在?[oslo_concurrency]?部分,配置锁路径:

[oslo_concurrency]
...
lock_path?=?/var/lib/cinder/tmp

完成安装?

启动块存储卷服务及其依赖的服务,并将其配置为随系统启动:

#?systemctl enable?openstack-cinder-volume.service target.service

#?systemctl start openstack-cinder-volume.service target.service

文章来源:https://blog.csdn.net/wmd13164306712/article/details/135402544
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。