zoukankan      html  css  js  c++  java
  • [ Openstack ] Openstack-Mitaka 高可用之 计算服务(Nova)

     目录

        Openstack-Mitaka 高可用之 概述
        Openstack-Mitaka 高可用之 环境初始化
        Openstack-Mitaka 高可用之 Mariadb-Galera集群部署
        Openstack-Mitaka 高可用之 Rabbitmq-server 集群部署
        Openstack-Mitaka 高可用之 memcache
        Openstack-Mitaka 高可用之 Pacemaker+corosync+pcs高可用集群
        Openstack-Mitaka 高可用之 认证服务(keystone)
        OpenStack-Mitaka 高可用之 镜像服务(glance)
        Openstack-Mitaka 高可用之 计算服务(Nova)
        Openstack-Mitaka 高可用之 网络服务(Neutron)
        Openstack-Mitaka 高可用之 Dashboard
        Openstack-Mitaka 高可用之 启动一个实例
        Openstack-Mitaka 高可用之 测试

     简介

      使用Openstack计算服务来托管和管理云计算系统。Openstack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由python实现。

      Openstack计算组件请求Openstack Identitiy服务进行认证;请求Openstack Image服务提供磁盘镜像;为Openstack dashboard提供用户和管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定。Openstack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。


        Openstack计算服务由下列组件所构成:
        (1) nova-api 服务:
            接收和响应来自最终用户的计算API请求。此服务支持Openstack计算服务API,例如启动一个实例。
        (2)nova-api-metadata 服务
            接受来自虚拟机发送的元数据请求。
        (3)nova-compute 服务
            一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例,例如:
                XenServer 的 XenAPI
                KVM或QEMU的libvirt
                过程是蛮复杂的。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后到数据库中更新它的状态。
        (4)nova-scheduler 服务
            拿到一个来自队列请求虚拟机实例,然后决定那台物理计算节点来运行它。简单的说,该服务通过算法来决定在哪个计算节点来启动虚拟机。
        (5)nova-cert 模块
            Nova-network worker守护进程
                从队列中接受网络任务,并操作网络。执行任务。例如创建网桥的接口或者改变iptables的规则。该功能应该被网络服务neutron取代。
            Nova-consoleauth 守护进程
                授权控制台代理所提供的用户令牌。
            Nova-novncproxy 守护进程
                提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。
            队列
                一个守护进程间传递消息的组件。前面部署的rabbitmq-server
            SQL数据库
                存储构建时和运行时的状态,为云基础设施,包括有:
                    可用实例类型
                    使用中的实例
                    可用网络
                    项目
                理论上,OpenStack计算可以支持任何和SQL-Alchemy所支持的后端数据库,通常使用SQLite3来做测试可开发工作,MySQL和PostgreSQL 作生产环境。

     安装并配置控制节点

    在安装和配置compute服务前,必须创建数据库服务的凭据以及API endpoints

    [root@controller1 ~]# mysql -ugalera -pgalera -h 192.168.0.10
    MariaDB [(none)]> CREATE DATABASE nova_api;
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [(none)]> CREATE DATABASE nova;
    Query OK, 1 row affected (0.01 sec)
    
    MariaDB [(none)]> grant all privileges on nova_api.* to 'nova'@'%' identified by 'nova';
    Query OK, 0 rows affected (0.00 sec)
    
    MariaDB [(none)]> grant all privileges on nova_api.* to 'nova'@'localhost' identified by 'nova';
    Query OK, 0 rows affected (0.01 sec)
    
    MariaDB [(none)]> grant all privileges on nova.* to 'nova'@'%' identified by 'nova';
    Query OK, 0 rows affected (0.01 sec)
    
    MariaDB [(none)]> grant all privileges on nova.* to 'nova'@'localhost' identified by 'nova';
    Query OK, 0 rows affected (0.01 sec)
    
    MariaDB [(none)]> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    创建nova用户

    [root@controller1 ~]# . admin-openrc
    [root@controller1 ~]# openstack user create --domain default   --password-prompt nova    #密码为 nova
    [root@controller1 ~]# openstack role add --project service --user nova admin

    创建nova服务实体

    [root@controller1 ~]# openstack service create --name nova   --description "OpenStack Compute" compute

    创建compute服务API端点

    [root@controller1 ~]# openstack endpoint create --region RegionOne   compute public http://controller:8774/v2.1/%(tenant_id)s
    [root@controller1 ~]# openstack endpoint create --region RegionOne   compute internal http://controller:8774/v2.1/%(tenant_id)s
    [root@controller1 ~]# openstack endpoint create --region RegionOne   compute admin http://controller:8774/v2.1/%(tenant_id)s

    安装并配置组件:

    三个节点都需要安装:

    # yum install openstack-nova-api openstack-nova-conductor 
      openstack-nova-console openstack-nova-novncproxy 
      openstack-nova-scheduler
    
    
    [root@controller1 ~]# vim /etc/nova/nova.conf
    
    以下部分是整个配置文件需要修改的地方:
    
    [DEFAULT]
    enabled_apis = osapi_compute,metadata
    transport_url = rabbit://openstack:openstack@controller1:5672,openstack:openstack@controller2:5672,openstack:openstack@controller3:5672
    auth_strategy = keystone
    my_ip = 192.168.0.11
    use_neutron = True
    firewall_driver = nova.virt.firewall.NoopFirewallDriver
    osapi_compute_listen=192.168.0.11
    metadata_listen=192.168.0.11
    metadata_listen=192.168.0.11
    
    [api_database]
    connection = mysql+pymysql://nova:nova@controller/nova_api
    …
    [database]
    connection = mysql+pymysql://nova:nova@controller/nova
    …
    [glance]
    api_servers = http://controller:9292
    …
    [keystone_authtoken]
    auth_uri = http://controller:5000
    auth_url = http://controller:35357
    memcached_servers = controller1:11211,controller2:11211,controller3:11211
    auth_type = password
    project_domain_name = Default
    user_domain_name = Default
    project_name = service
    username = nova
    password = nova
    …
    [oslo_concurrency]
    lock_path = /var/lib/nova/tmp
    …
    [vnc]
    vncserver_listen = $my_ip
    vncserver_proxyclient_address = $my_ip
    
    拷贝到其他controller节点,注意修改my_ip 选项
    [root@controller1 nova]# scp nova.conf controller2:/etc/nova/
    nova.conf                                                                                                                  100%  284KB 283.8KB/s   00:00    
    [root@controller1 nova]# scp nova.conf controller3:/etc/nova/
    nova.conf                                                                                                                  100%  284KB 283.8KB/s   00:00

    拷贝到其他controller节点注意修改蓝色ip地址

    同步数据库,忽略任何不推荐的信息

    [root@controller1 ~]# su -s /bin/sh -c "nova-manage api_db sync" nova
    [root@controller1 ~]# su -s /bin/sh -c "nova-manage db sync" nova
    WARNING: cell0 mapping not found - not syncing cell0.
    /usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release.')
      result = self._query(query)
    /usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.')
      result = self._query(query)

    Nova 一共有五个服务需要启动,建议一个一个启动,对照着日志查看是否存在报错。

    [root@controller1 ~]# systemctl restart  openstack-nova-consoleauth.service
    [root@controller1 ~]# systemctl start  openstack-nova-scheduler.service
    [root@controller1 ~]# systemctl start   openstack-nova-conductor.service
    [root@controller1 ~]# systemctl start   openstack-nova-novncproxy.service
    
    [root@controller1 ~]# systemctl enable openstack-nova-api.service   openstack-nova-consoleauth.service openstack-nova-scheduler.service   openstack-nova-conductor.service openstack-nova-novncproxy.service
    [root@controller1 ~]# systemctl status  openstack-nova-api.service   openstack-nova-consoleauth.service openstack-nova-scheduler.service   openstack-nova-conductor.service openstack-nova-novncproxy.service | grep active | wc -l 
    5

    Controller1  5个nova服务启动成功,然后拷贝nova.conf 到 controller2 controller3 启动服务,注意监听到本地。

     安装和配置计算节点

    注意:经过测试发现,使用Mitaka版本安装计算节点Mitaka源中的qemu-kvm和libvirt包存在BUG。
    从这里开始,需要配置计算节点,计算节点为一台新的主机。

    首先用本地yum源安装

    yum install qemu-kvm libvirt* -y

    然后在配置openstack本地源安装:

    yum install openstack-nova-compute python-crypto -y

    编辑/etc/nova/nova.conf 如下:

    [DEFAULT]
    transport_url = rabbit://openstack:openstack@controller1,openstack:openstack@controller2,openstack:openstack@controller3
    auth_strategy = keystone
    my_ip = 192.168.0.31
    use_neutron = True
    firewall_driver = nova.virt.firewall.NoopFirewallDriver
    …
    [glance]
    api_servers = http://controller:9292
    …
    [keystone_authtoken]
    auth_uri = http://controller:5000
    auth_url = http://controller:35357
    memcached_servers = controller1:11211,controller2:11211,controller3:11211
    auth_type = password
    project_domain_name = default
    user_domain_name = default
    project_name = service
    username = nova
    password = nova
    …
    [vnc]
    enabled = True
    vncserver_listen = 0.0.0.0
    vncserver_proxyclient_address = $my_ip
    novncproxy_base_url = http://192.168.0.10:6080/vnc_auto.html        # 这里要写ip地址不能写主机名,因为是客户端调用。

    查看主机是否支持虚拟化的硬件加速

    [root@compute1 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
    2

    启动计算节点服务

    [root@compute1 ~]# systemctl enable libvirtd.service openstack-nova-compute.service
    [root@compute1 ~]# systemctl start libvirtd.service openstack-nova-compute.service

    注意:在配置计算服务的时候,请先保持各节点之间时间同步,否则某些服务会down掉。

    在任意controller节点上执行:

    [root@controller1 ~]# . admin-openrc
    [root@controller1 ~]# nova service-list

     三个controller节点和一个compute节点服务都为 up 状态,服务正常。

  • 相关阅读:
    组合数取模的题……
    对组合数取模
    n!(n的阶乘)
    八、元素绑定
    七、Application类
    RC振荡电路
    运算放大器工作原理
    No
    合并查询结果
    连接查询
  • 原文地址:https://www.cnblogs.com/hukey/p/8047417.html
Copyright © 2011-2022 走看看