ironic部署
2015-12-03 16:18
609 查看
ironic部署过程
通过nova boot启动一个实例,nova api将请求通过消息队列发送nova schedulernova 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 |
配置组件步骤:(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[/code]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 -y4. 配置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] host_ip=0.0.0.0 port=6385 [conductor] api_url=http://172.30.83.12:6385 sync_power_state_interval=60 [console] terminal_cert_dir=/tmp/ca [keystone_authtoken] #auth_host=172.30.82.11 auth_uri=http://172.30.83.11:5000/v2.0/ identity_uri = http://controller:35357/ admin_user=ironic admin_password=ironic admin_tenant_name=service [database] connection = mysql+pymysql://ironic:ironic@172.30.82.11/ironic?charset=utf8 [neutron] url=http://172.30.83.11:9696 [glance] glance_host=172.30.83.11 [oslo_messaging_rabbit] rabbit_host = controller rabbit_userid = openstack rabbit_password = openstack rabbit_virtual_host=/ [oslo_policy] policy_file=/etc/ironic/policy.json [pxe] pxe_append_params = nofb nomodeset vga=normal console=tty0 console=ttyS0,115200n8 tftp_server=172.30.83.12 tftp_root=/tftpboot5. 初始化数据库表
ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema6. 重启BareMetal服务
service ironic-api restart service ironic-conductor restart7. 配置Compute使用BareMetal服务(controller and ironic)
1)在控制节点和计算节点的nova.conf配置文件中添加一下配置项[default] compute_driver=nova.virt.ironic.IronicDriver firewall_driver=nova.virt.firewall.NoopFirewallDriver scheduler_host_manager=nova.scheduler.ironic_host_manager.IronicHostManager ram_allocation_ratio=1.0 reserved_host_memory_mb=0 compute_manager=ironic.nova.compute.manager.ClusteredComputeManager scheduler_use_baremetal_filters=True scheduler_tracks_instance_changes=False [ironic] admin_username=ironic admin_password=ironic admin_url=http://controller:35357/v2.0 admin_tenant_name=service api_endpoint=http://172.30.82.12:6385/v1
2)重启nova-scheduler服务和nova-compute服务service nova-scheduler restart service nova-compute restart8. 配置BareMetal与Networking服务交互(controller)
创建网络neutron net-create ext_net --shared --provider:network_type flat --provider:physical_network physical-net neutron subnet-create ext_net 172.30.81.0/24 --name ext-subnet --ip-version=4 --gateway=172.30.81.1 --allocation-pool start=172.30.81.50,end=172.30.81.250 --enable-dhcp neutron subnet-create ext_net 172.30.65.0/24 --name ext-subnet-65 --ip-version=4 --gateway=172.30.65.1 --allocation-pool start=172.30.65.50,end=172.30.65.1009. 配置镜像(controller)
1)制作用户镜像和部署镜像disk-image-create ubuntu baremetal dhcp-all-interfaces -o user-image ramdisk-image-create ubuntu deploy-ironic -o deploy-image
2)上传部署镜像glance image-create --name deploy-kernel --visibility public --disk-format aki --container-format bare < deploy-image.vmlinuz glance image-create --name deploy-initrd --visibility public --disk-format ari --container-format bare < deploy-image.initrd
3)上传用户镜像(非dd安装方式)glance image-create --name my-kernel --visibility public --disk-format aki --container-format bare < my-image.vmlinuz glance image-create --name my-image.initrd --visibility public --disk-format ari --container-format bare < my-image.initrd glance image-create --name my-image --visibility public --disk-format qcow2 --container-format bare --property kernel_id=$MY_VMLINUZ_UUID --property ramdisk_id=$MY_INITRD_UUID < user-image.qcow2(dd方式安装)glance image-create --name my-whole-disk-image --visibility public --disk-format qcow2 --container-format bare < my-whole-disk-image.qcow2
4)dd镜像制作
创建镜像
预装机器操作:fdisk df dd if=/dev/sda conv=sync,noerror bs=8M count=5000 | nc 172.30.65.21 8888 glance机器: nc -l 8888 > whole-disk-image.img10. 创建flavor(controller)
nova flavor-create baremetal <id> $RAM_MB $DISK_GB $CPU nova flavor-key my-baremetal-flavor set cpu_arch=$ARCH11. PXE和IMPI设置(ironic)
1)配置tftp服务apt-get install tftpd-hpa syslinux-common syslinux -y mkdir -p /tftpboot配置tftp配置文件/etc/default/tftpd-hpaTFTP_USERNAME="tftp" TFTP_DIRECTORY="/tftpboot" TFTP_ADDRESS="172.30.83.12:69" TFTP_OPTIONS="-l -s -c" cp /usr/lib/syslinux/pxelinux.0 /tftpboot cp /usr/lib/syslinux/chain.c32 /tftpboot echo 're ^(/tftpboot/) /tftpboot/\2' > /tftpboot/map-file echo 're ^/tftpboot/ /tftpboot/' >> /tftpboot/map-file echo 're ^(^/) /tftpboot/\1' >> /tftpboot/map-file echo 're ^([^/]) /tftpboot/\1' >> /tftpboot/map-file chown -R ironic /tftpboot
2)配置impitoolapt-get install ipmitool -y ipmitool -I lanplus -H <ip-address> -U <username> -P <password> chassis power status service ironic-conductor restart12. 配置baremetal控制台访问
apt-get install shellinabox -y apt-get install openssl -y mkdir -p /tmp/ca cd /tmp/ca openssl genrsa -des3 -out xyq.key 1024 openssl req -new -key xyq.key -out xyq.csr cp xyq.key xyq.key.org openssl rsa -in xyq.key.org -out xyq.key openssl x509 -req -days 3650 -in xyq.csr -signkey xyq.key -out xyq.crt cat xyq.crt xyq.key > certificate.pem13. 向BareMetal服务注册节点
1)注册节点ironic node-create -d pxe_ipmitool -i ipmi_address=<ipmi_address> -i ipmi_username=<ipmi_user> -i ipmi_password=<ipmi_password> -i ipmi_priv_level=OPERATOR -i deploy_kernel=$DEPLOY_VMLINUZ_UUID -i deploy_ramdisk=$DEPLOY_INITRD_UUID -p cpus=$CPU -p memory_mb=$RAM_MB -p local_gb=$DISK_GB -p cpu_arch=$ARCH
2) 显示节点信息ironic node-show <node-uuid>
3)为节点添加端口ironic port-create -n $NODE_UUID -a $MAC_ADDRESS
4)配置节点控制台访问ironic node-update $NODE_UUID add driver_info/ipmi_terminal_port=9000 ironic node-set-console-mode $NODE_UUID true
5)配置节点从本地启动ironic node-update <node-uuid> add properties/capabilities="boot_option:local" nova flavor-key baremetal set capabilities:boot_option="local"
6)验证节点ironic node-validate <node-uuid>
相关文章推荐
- 什么是OpenStack 开源的云计算管理平台项目
- openstack(juno版)使用rsyslog转发日志
- OpenStack Murano Dashboard(Kilo)安装
- Openstack Murano(Kilo) 网络排错
- Openstack Murano(kilo)二次开发之添加Volume
- Openstack Horizon(kilo)二次开发之匿名访问View
- Ubuntu源码安装Openstack(一)
- Ubuntu源码安装Openstack(二)
- 仿OpenStack开发云计算管理软件”--第1周:熟悉开发环境
- 【原创】OpenStack Swift源码分析(二)ring文件的生成
- 【原创】Swift服务启动架构分析
- 【原创】OpenStack Swift源码分析(三)proxy服务启动
- 【原创】OpenStack Swift源码分析(四)proxy服务响应
- 【原创】OpenStack Swift源码分析(五)keystone鉴权
- Swift中的一致性哈希算法分析
- 【原创】OpenStack Swift源码分析(六)object服务
- 【原创】OpenStack Swift源码分析(七)Replication服务
- 【原创】OpenStack Swift源码分析(八)Updater && Auditor服务
- Swift中映射与冗余
- 【翻译】Nova系统架构