ironic部署过程
- 通过nova boot启动一个实例,nova api将请求通过消息队列发送nova scheduler
- nova scheduler应用过滤器找到一个合适的计算节点,nova scheduler使用额外参数匹配一个物理节点,例如‘cpu_arch’, ‘baremetal:deploy_kernel_id’, baremetal:deploy_ramdisk_id’
- nova compute manager调用driver.spawn产生一个实例,此实例包含所有信息,如image和networking。
- ironic conductor从数据库获取匹配物理节点的信息,并将其标记为使用。
- ironic conductor从glance下载镜像。
- 虚拟网卡被接入neutron网络,neutron api更新dhcp支持pxe/tftp选项
- nova ironic通过ironic api产生一个部署请求给ironic conductor
- pxe driver准备好tftp bootloader
- ipmi driver通过命令设置远程节点从网络启动,并且将其开机。
- 物理节点通过DHCP/PXE启动内存文件系统。pxe driver通过iscsi拷贝镜像数据到本地,将镜像dd到本地磁盘,关闭iscsi连接。ironic conductor将pxe config标志设置已部署成功。
- IPMI启动裸金属节点。
部署环境
硬件环境:3台服务器(32 cores + 500G ssd + 128G ram + 2*10G NICs),一台交换机
操作系统:ubuntu 14.04
网络 | 角色 | 计算机名称 | ip地址 |
---|---|---|---|
mgmt | 控制器 | controller | 172.30.82.11 |
计算 | ironic | 172.30.82.12 | |
public | 控制器 | controller | 172.30.83.11 |
计算 | ironic | 172.30.83.12 |
进行下面配置之前,请先配置好Identity、Image、Compute和Networing服务(Liberty)
配置组件步骤:(compute节点上配置)
1. 为Bare Metal服务配置Identity认证
- 1)创建bare metal服务用户
openstack user create --password-prompt ironic
openstack role add --project service --user ironic admin
- 2)向Identity注册Bare Metal服务
openstack service create --name ironic --description "Openstack Bare Metal service" baremetal
- 3)向Identity注册服务访问端点
openstack endpoint create --region RegionOne baremetal public http://172.30.83.12:6385
openstack endpoint create --region RegionOne baremetal internal http://172.30.82.12:6385
openstack endpoint create --region RegionOne baremetal admin http://172.30.82.12:6385
2. 设置数据库
mysql -u root -p
create database ironic character set utf8;
grant all privileges on ironic.* to 'ironic'@'localhost' identified by 'ironic';
grant all privileges on ironic.* to 'ironic'@'%' identified by 'ironic';
3. 安装Bare Metal服务组件
apt-get install ironic-api ironic-conductor python-ironicclient -y
4. 配置Bare Metal服务,vi /etc/ironic/ironic.conf
[DEFAULT]
debug=true
verbose=true
log_dir=/var/log/ironic
rabbit_host=172.30.82.11
auth_strategy=keystone
notification_driver = messaging
send_sensor_data = true
send_sensor_data_types=Temperature,Fan,Voltage
enabled_drivers=pxe_ipmitool
log_file=/var/log/ironic/api.log
my_ip=172.30.82.12
[api]