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

王柳  金牌会员 | 2024-6-15 03:03:18 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 890|帖子 890|积分 2670

一、horizon 先容:

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

安装和设置

安装软件包:

  1. # yum install openstack-dashboard -y
复制代码
编辑文件 /etc/openstack-dashboard/local_settings 并完成如下动作:

在 controller 节点上设置仪表盘以利用 OpenStack 服务:controller改为本身的服务端点

  1. OPENSTACK_HOST = "controller"
复制代码
允许所有主机访问仪表板:

  1. ALLOWED_HOSTS = ['*', ]
复制代码
设置 memcached 会话存储服务:controller改为本身的服务端点

  1. SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
  2. CACHES = {
  3.    'default': {
  4.         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',     
  5.     'LOCATION': 'controller:11211',    
  6.               }
  7.         }
复制代码
启用第3版认证API:

  1. OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
复制代码
启用对域的支持

  1. OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
复制代码
设置API版本:

  1. OPENSTACK_API_VERSIONS = {    "identity": 3,    "image": 2,    "volume": 2,}
复制代码
通过仪表盘创建用户时的默认域设置为 default :

  1. OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"
复制代码
通过仪表盘创建的用户默认脚色设置为 user :

  1. OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
复制代码
如果您选择网络参数1,禁用支持3层网络服务:

  1. OPENSTACK_NEUTRON_NETWORK = {
  2. ...
  3. 'enable_router': False,
  4. 'enable_quotas': False,    
  5. 'enable_distributed_router': False,    
  6. 'enable_ha_router': False,    
  7. 'enable_lb': False,    
  8. 'enable_firewall': False,    
  9. 'enable_vpn': False,    
  10. 'enable_fip_topology_check': False,
  11. }
复制代码
可以选择性地设置时区:

  1. TIME_ZONE = "TIME_ZONE"
复制代码
完成安装

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

  1. # systemctl restart httpd.service memcached.service
复制代码


Region
区域(Region)

  • 地理上的概念,可以明确为一个独立的数据中央,每个所定义的区域有本身独立的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服务。

  • 主要是用来办理OpenStack的扩展性和规模瓶颈;
  • 每个Cell都有本身独立的DB和AMQP ,不与其他模块共用DB和AMQP,办理了大规模环境中DB和AMQP的瓶颈问题;
  • Cell实现了树形结构(通过消息路由)和分级调度(过滤算法和权重算法) ,Cell之间通过RPC通讯,办理了扩展性问题;中己,如用户在美国,可以选择离美国更近的区域;
cinder 先容:
明确 Block Storage
操纵系统获得存储空间的方式一般有两种

  • 通过某种协议(SAS,SCSI,SAN,ISCSI等)挂接裸硬盘,然后分区、格式化、创建文件系统;大概直接利用裸硬盘存储数据(数据库)
  • 通过 NFS,CIFS等 协议,mount 远程的文件系统
第一种裸硬盘的方式叫做Block Storage (块存储) ,每个裸硬盘通常也称作Volume (卷)第二种叫做文件系统存储。NAS和NFS服务器,以及各种分布式文件系统提供的都是这种存储。明确Block Storage ServiceBlock
Storage Servicet提供对volume从创建到删除整个生命周期的管理。从instance的角度看,挂载的每一个Volume 都是一块硬盘。OpenStack 提供 Block Storage Service 的是 Cinder,其具体功能是 :

  • 提供REST API利用户能够查询和管理 volume, volume snapshot 以及volume type
  • 提供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 用户毗连到数据库服务器:
  1. $ mysql -u root -p
复制代码
创建 cinder 数据库:

  1. CREATE DATABASE cinder;
复制代码
允许 cinder 数据库符合的访问权限:

  1. GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \  
  2. IDENTIFIED BY 'CINDER_DBPASS';
  3. GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \  
  4. IDENTIFIED BY 'CINDER_DBPASS';
复制代码
用符合的密码替换 CINDER_DBPASS

退出数据库客户端。

  1. exit
复制代码
要创建服务证书,完成这些步骤:

创建一个 cinder 用户:

  1. $ openstack user create --domain default --password-prompt cinder
复制代码
添加 admin 脚色到 cinder 用户上。

  1. $ openstack role add --project service --user cinder admin
复制代码
创建 cinder 和 cinderv2 服务实体:

  1. $ openstack service create --name cinder \
  2.   --description "OpenStack Block Storage" volume
  3. $ openstack service create --name cinderv2 \
  4.   --description "OpenStack Block Storage" volumev2
复制代码
创建块装备存储服务的 API 入口点:
  1. $ openstack endpoint create --region RegionOne \
  2.   volume public http://controller:8776/v1/%\(tenant_id\)s
  3. $ openstack endpoint create --region RegionOne \
  4.   volume internal http://controller:8776/v1/%\(tenant_id\)s
  5. $ openstack endpoint create --region RegionOne \
  6.   volume admin http://controller:8776/v1/%\(tenant_id\)s
  7. $ openstack endpoint create --region RegionOne \
  8.   volumev2 public http://controller:8776/v2/%\(tenant_id\)s
  9. $ openstack endpoint create --region RegionOne \
  10.   volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
  11. $ openstack endpoint create --region RegionOne \
  12.   volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
复制代码

安全并设置组件

安装软件包:

  1. # yum install openstack-cinder
复制代码
编辑 /etc/cinder/cinder.conf,同时完成如下动作:

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

  1. [database]
  2. ...
  3. connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
复制代码
用你为块装备存储数据库选择的密码替换 CINDER_DBPASS。controller替换为本身的服务端点

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

  1. [DEFAULT]
  2. ...
  3. rpc_backend = rabbit
  4. [oslo_messaging_rabbit]
  5. ...
  6. rabbit_host = controller
  7. rabbit_userid = openstack
  8. rabbit_password = RABBIT_PASS
复制代码
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。controller替换为本身的服务端点

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,设置认证服务访问:

  1. [DEFAULT]
  2. ...
  3. auth_strategy = keystone
  4. [keystone_authtoken]
  5. ...
  6. auth_uri = http://controller:5000
  7. auth_url = http://controller:35357
  8. memcached_servers = controller:11211
  9. auth_type = password
  10. project_domain_name = default
  11. user_domain_name = default
  12. project_name = service
  13. username = cinderpassword = CINDER_PASS
复制代码
将 CINDER_PASS 替换为你在认证服务中为 cinder 用户选择的密码。controller替换为本身的服务端点

在 [DEFAULT 部分,设置``my_ip`` 来利用控制节点的管理接口的IP 地点。

  1. [DEFAULT]...my_ip = 10.0.0.11
复制代码
在 [oslo_concurrency] 部分,设置锁路径:

  1. [oslo_concurrency]
  2. ...
  3. lock_path = /var/lib/cinder/tmp
复制代码
初始化块装备服务的数据库:

  1. # su -s /bin/sh -c "cinder-manage db sync" cinder
复制代码
设置计算节点以利用块装备存储

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

  1. [cinder]os_region_name = RegionOne
复制代码
完成安装

重启计算API 服务:

  1. # systemctl restart openstack-nova-api.service
复制代码
启动块装备存储服务,并将其设置为开机自启:

  1. # systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
  2. # systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
复制代码
查看cinder列表

  1. cinder service-list
复制代码
安装并设置一个存储节点

安装支持的工具包:

安装 LVM 包:

  1. # yum install lvm2
复制代码
启动LVM的metadata服务而且设置该服务随系统启动:

  1. # systemctl enable lvm2-lvmetad.service# systemctl start lvm2-lvmetad.servi
复制代码
创建LVM 物理卷 /dev/sdb:

  1. # pvcreate /dev/sdb
复制代码
创建 LVM 卷组 cinder-volumes:

  1. # vgcreate cinder-volumes /dev/sdb
复制代码
块存储服务会在这个卷组中创建逻辑卷。

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

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

  1. devices {
  2. ...
  3. filter = [ "a/sdb/", "r/.*/"]
复制代码
每个过滤器组中的元素都以``a``开头,即为 accept,或以 r 开头,即为**reject**,而且包括一个装备名称的正则表达式规则。过滤器组必须以``r/.*/``结束,过滤所有保留装备。您可以利用 :下令:`vgs -vvvv` 来测试过滤器。

安全并设置组件

安装软件包:

  1. # yum install openstack-cinder targetcli python-keystone
复制代码

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

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

  1. [database]
  2. ...
  3. connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
复制代码
用你为块装备存储数据库选择的密码替换 CINDER_DBPASS。

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

  1. [DEFAULT]
  2. ...
  3. rpc_backend = rabbit
  4. [oslo_messaging_rabbit]
  5. ...
  6. rabbit_host = controller
  7. rabbit_userid = openstack
  8. rabbit_password = RABBIT_PASS
复制代码
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,设置认证服务访问:

  1. [DEFAULT]
  2. ...
  3. auth_strategy = keystone
  4. [keystone_authtoken]
  5. ...
  6. auth_uri = http://controller:5000
  7. auth_url = http://controller:35357
  8. memcached_servers = controller:11211
  9. auth_type = password
  10. project_domain_name = default
  11. user_domain_name = default
  12. project_name = service
  13. username = cinderpassword = CINDER_PASS
复制代码
将 CINDER_PASS 替换为你在认证服务中为 cinder 用户选择的密码。

在 [DEFAULT] 部分,设置 my_ip 选项:

  1. [DEFAULT]
  2. ...
  3. 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服务:

  1. [lvm]
  2. ...
  3. volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
  4. volume_group = cinder-volumes
  5. iscsi_protocol = iscsi
  6. iscsi_helper = lioadm
复制代码
在 [DEFAULT] 部分,启用 LVM 后端:

  1. [DEFAULT]
  2. ...
  3. enabled_backends = lvm
复制代码
在 [DEFAULT] 区域,设置镜像服务 API 的位置:

  1. [DEFAULT]
  2. ...
  3. glance_api_servers = http://controller:9292
复制代码
在 [oslo_concurrency] 部分,设置锁路径:

  1. [oslo_concurrency]
  2. ...
  3. lock_path = /var/lib/cinder/tmp
复制代码
完成安装

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

  1. # systemctl enable openstack-cinder-volume.service target.service
  2. # systemctl start openstack-cinder-volume.service target.service
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表