整个 OpenStack 是由控制节点, 计算节点, 网络节点, 存储节点四大部分组成. 上篇博文详细讲述了控制节点服务 controller, 本篇博文将对计算节点部署进行分析, 分为两部分: 控制节点和计算节点都需要设置.
计算节点架构
计算节点包含 Nova,Neutron,Telemeter 三个服务
1) 基础服务
Nova: 提供虚拟机的创建, 运行, 迁移, 快照等各种围绕虚拟机的服务, 并提供 API 与控制节点对接, 由控制节点下发任务
Neutron: 提供计算节点与网络节点之间的通信服务
2) 扩展服务
Telmeter: 提供计算节点的监控代理, 将虚拟机的情况反馈给控制节点, 是 Centimeter 的代理服务
计算节点包含最少两个网络端口
eth0: 与控制节点进行通信, 受控制节点统一调配
eth1: 与网络节点, 存储节点进行通信
实验环境
主机 | 系统 | IP 地址 | 角色 |
---|---|---|---|
controller | CentOS7 | 192.168.37.128 | keystone、ntp、mariadb、rabbitmq、memcached、etcd、apache |
compute | CentOS7 | 192.168.37.130 | nova、ntp |
cinder | CentOS7 | 192.168.37.131 | cinder、ntp |
实验过程
++controller 节点 ++
一, 部署 nova 服务
1, 创建 nova_api, nova, nova_cell0 数据库
- MySQL -u root -p
- CREATE DATABASE nova_api;
- CREATE DATABASE nova;
- CREATE DATABASE nova_cell0;
2, 数据库登录授权
- grant all privileges on nova_api.to 'nova'@'localhost' identified by '123456';
- grant all privileges on nova_api. to 'nova'@'%' identified by '123456';
- grant all privileges on nova.to 'nova'@'localhost' identified by '123456';
- grant all privileges on nova. to 'nova'@'%' identified by '123456';
- grant all privileges on nova_cell0.to 'nova'@'localhost' identified by '123456';
- grant all privileges on nova_cell0. to 'nova'@'%' identified by '123456';
3, 创建 nova 用户
- source ~/admin-openrc
- openstack user create --domain default --password-prompt nova
密码: 123456
4, 添加 admin 用户为 nova 用户
openstack role add --project service --user nova admin
5, 创建 nova 服务端点
openstack service create --name nova --description "OpenStack Compute" compute
6, 创建 compute API 服务端点
- openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1 #public 的 API 端点
- openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1 #internal 的 API 端点
- openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1 #admin 的 API 端点
二, 创建 placement 服务用户 (监控资源)
一个资源提供者可以是一个计算节点, 共享存储池, 或一个 IP 分配池.
placement 服务跟踪每个供应商的库存和使用情况.
例如, 在一个计算节点创建一个实例的可消费资源如计算节点的资源提供者的 CPU 和内存, 磁盘从外部共享存储池资源提供商和 IP 地址从外部 IP 资源提供者.
1, 创建 placement 用户
- openstack user create --domain default --password-prompt placement
- # 密码: 123456
2, 添加 placement 用户为项目服务 admin 角色
openstack role add --project service --user placement admin
3, 创建 Placement API 服务
openstack service create --name placement --description "Placement API" placement
4, 创建 Placement API 服务端点
- openstack endpoint create --region RegionOne placement public http://controller:8778 #public 的 API 端点
- openstack endpoint create --region RegionOne placement internal http://controller:8778 #internal 的 API 端点
- openstack endpoint create --region RegionOne placement admin http://controller:8778 #admin 的 API 端点
三, 进行 nova 相关配置
1, 安装软件包
yum install openstack-nova-API openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-API -y
2, 编辑 nova 配置文件
- VIM /etc/nova/nova.conf
- [DEFAULT]
- #2756 行
- enabled_apis=osapi_compute,metadata #开启 API
- #3156 行
- transport_url=rabbit://openstack:123456@controller #消息队列
- #1291 行
- my_ip=192.168.37.128 #主机 IP
- #1755 行
- use_neutron=true #开启网络组件
- #2417 行
- firewall_driver=nova.virt.firewall.NoopFirewallDriver #防火墙设置
- [api_database]
- #3513 行
- connection=MySQL+pymysql://nova:123456@controller/nova_api
- [database]
- #4637 行
- connection=MySQL+pymysql://nova:123456@controller/nova
- [API]
- #3221 行
- auth_strategy=keystone #授权注册
- [keystone_authtoken] #令牌模块
- #6149 行
- auth_uri=http://controller:5000
- auth_url=http://controller:35357
- #6200 行
- memcached_servers=controller:11211
- #6307 行 : 添加以下行数设置
- auth_type=password
- project_domain_name = default
- user_domain_name = default
- project_name = service
- username = nova
- password = 123456
- [vnc]
- #10292 行
- enabled=true
- #10316 行
- server_listen=$my_ip
- #10329 行
- server_proxyclient_address=$my_ip
- [glance]
- #5342 行
- api_servers=http://controller:9292
- [oslo_concurrency]
- #7920 行
- lock_path=/var/lib/nova/tmp
- [placement]
- #8819 行
- os_region_name=RegionOne
- #8859 行
- auth_type=password
- #8865 行
- auth_url=http://controller:35357/v3
- #8880 行
- project_name=service
- #8886 行
- project_domain_name=Default
- #8906 行
- username=placement
- #8912 行
- user_domain_name=Default
- #8915 行
- password=123456
- # 注意: 配置文件是实时更新的, 行数标注不一定准确, 需仔细对照修改内容. 另外, 修改条目较多, 可通过以下命令进行查看:
- grep -v "#" /etc/nova/nova.conf | grep -v "^$"
3, 由于包错误, 必须启用对 Placement API 的访问, 在文件末尾添加以下内容
- VIM /etc/httpd/conf.d/00-nova-placement-API.conf
- <Directory /usr/bin>
- <IfVersion>= 2.4>
- Require all granted
- </IfVersion>
- <IfVersion <2.4>
- Order allow,deny
- Allow from all
- </IfVersion>
- </Directory>
四, 数据库上的操作
1, 由于修改了 httpd 配置文件, 需重启服务
systemctl restart httpd.service
2, 同步 nova-API 数据库
su -s /bin/sh -c "nova-manage api_db sync" nova
3, 注册 cell0 数据库
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
4, 注册 cell1 cell 数据库
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
5, 同步 nova 数据库
su -s /bin/sh -c "nova-manage db sync" nova
6, 验证 nova, cell0, cell1 数据库是否注册正确
nova-manage cell_v2 list_cells
7, 开启 controller 上所有 nova 服务模块, 设置开机自启动
- systemctl enable openstack-nova-API.service
- systemctl enable openstack-nova-consoleauth.service
- systemctl enable openstack-nova-scheduler.service
- systemctl enable openstack-nova-conductor.service
- systemctl enable openstack-nova-novncproxy.service
- systemctl start openstack-nova-API.service
- systemctl start openstack-nova-consoleauth.service
- systemctl start openstack-nova-scheduler.service
- systemctl start openstack-nova-conductor.service
- systemctl start openstack-nova-novncproxy.service
++compute 节点 ++
1,yum 安装 nova 节点包
yum install openstack-nova-compute -y
2, 修改配置文件
- VIM /etc/nova/nova.conf
- [DEFAULT]
- #1291
- my_ip = 192.168.37.130
- #1755
- use_neutron=true
- #2417
- firewall_driver=nova.virt.firewall.NoopFirewallDriver
- #2756
- enabled_apis = osapi_compute,metadata
- #3156
- transport_url = rabbit://openstack:123456@controller
- [API]
- #3221
- auth_strategy=keystone
- [keystone_authtoken]
- #6148
- auth_uri = http://192.168.37.128:5000
- auth_url = http://controller:35357
- #6199
- memcached_servers=controller:11211
- #6306
- auth_type=password
- project_domain_name=default
- user_domain_name=default
- project_name=service
- username=nova
- password=123456
- [vnc]
- #10291
- enabled=true
- #10315
- server_listen=0.0.0.0
- #10328
- server_proxyclient_address=$my_ip
- #10346
- novncproxy_base_url=http://controller:6080/vnc_auto.html
- [glance]
- #5341
- api_servers=http://controller:9292
- [oslo_concurrency]
- #7919
- lock_path=/var/lib/nova/tmp
- [placement]
- #8818
- os_region_name=RegionOne
- #8858
- auth_type = password
- #8864
- auth_url=http://controller:35357/v3
- #8879
- project_name = service
- #8885
- project_domain_name = Default
- #8911
- user_domain_name = Default
- #8905
- username = placement
- #8914
- password = 123456
- # 注意: 配置文件是实时更新的, 行数标注不一定准确, 模块和 controller 上相同, 需仔细对照修改内容. 另外, 修改条目较多, 可通过以下命令进行查看:
- grep -v "#" /etc/nova/nova.conf | grep -v "^$"
3, 开启相关服务, 设置开机自启动
- systemctl enable libvirtd.service
- systemctl enable openstack-nova-compute.service
- systemctl stop libvirtd
- systemctl start libvirtd
- systemctl enable openstack-nova-compute.service
- systemctl start openstack-nova-compute.service
++controller 节点 ++
1, 验证有几个计算节点在数据库中
- source ~/admin-openrc
- openstack compute service list --service nova-compute
2, 查看计算节点
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
3, 列出计算节点服务
openstack compute service list
4, 列出身份服务中的 API 端点, 验证与身份服务的连接
openstack catalog list
5, 列出镜像
- openstack image list
- +--------------------------------------+--------+--------+
- | ID | Name | Status |
- +--------------------------------------+--------+--------+
- | 204c1831-4abf-481b-80ab-609eb9b06f2d | cirros | active |
- +--------------------------------------+--------+--------+
6, 检查 cells 和 placement API 是否正常
nova-status upgrade check
来源: http://www.bubuko.com/infodetail-2832262.html