[ 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 状态,服务正常。

本文作者:hukey

本文链接:https://www.cnblogs.com/hukey/p/8047417.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   hukey  阅读(2397)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 彩虹 Jay
彩虹 - Jay
00:00 / 00:00
An audio error has occurred.

彩虹 + 轨迹 (Live) - 周杰伦 (Jay Chou)

彩虹

词:周杰伦

曲:周杰伦

哪里有彩虹告诉我

哪里有彩虹告诉我

能不能把我的愿望还给我

能不能把我的愿望还给我

为什么天这么安静

为什么天这么安静

所有的云都跑到我这里

有没有口罩一个给我

有没有口罩一个给我

释怀说了太多就成真不了

释怀说了太多就成真不了

也许时间是一种解药

也许时间是一种解药

也是我现在正服下的毒药

也是我现在正服下的毒药

看不见你的笑 我怎么睡得着

看不见你的笑 我怎么睡得着

你的声音这么近我却抱不到

你的声音这么近我却抱不到

没有地球太阳还是会绕

没有地球太阳还是会绕

没有理由我也能自己走

没有理由我也能自己走

你要离开 我知道很简单

你要离开 我知道很简单

你说依赖 是我们的阻碍

你说依赖 是我们的阻碍

就算放开 但能不能别没收我的爱

就算放开 但能不能别没收我的爱

当作我最后才明白

当作我最后才明白

看不见你的笑 要我怎么睡得着

看不见你的笑 要我怎么睡得着

你的声音这么近我却抱不到

没有地球太阳还是会绕 会绕

没有理由我也能自己走掉

释怀说了太多就成真不了

也许时间是一种解药 解药

也是我现在正服下的毒药

轨迹

词:黄俊郎

曲:周杰伦

我会发着呆然后忘记你

接着紧紧闭上眼

想着哪一天 会有人代替

想着哪一天 会有人代替

让我不再想念你

我会发着呆 然后微微笑

我会发着呆 然后微微笑

接着紧紧闭上眼

又想了一遍 你温柔的脸

又想了一遍 你温柔的脸

在我忘记之前