久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      OpenStack Ironic實(shí)現(xiàn)裸機(jī)部署

      實(shí)習(xí)將近一個(gè)月了,期間不斷努力,終于算是把OpenStack Ironic項(xiàng)目實(shí)現(xiàn)裸機(jī)部署的過程理解了一遍,并在小規(guī)模集群上成功實(shí)踐。整理一些這段時(shí)間工作的內(nèi)容,就算是一個(gè)階段性的小項(xiàng)目總結(jié)了。

      Ironic

      Ironic是OpenStack的一個(gè)子項(xiàng)目,用于實(shí)現(xiàn)在云里像管理虛擬機(jī)一樣管理裸機(jī)。

      Ironic在OpenStack中的概念架構(gòu)圖如下

      OpenStack Ironic實(shí)現(xiàn)裸機(jī)部署

      其中Bare Metal就是我們要控制的物理機(jī)了,Neutron為其提供網(wǎng)絡(luò)服務(wù),Cinder提供塊存儲(chǔ)服務(wù),Glance則提供裸機(jī)部署時(shí)的鏡像緩存服務(wù),在部署過程中,我們的Ironic模塊要和Neutron,Nova,Glance,Keystone這些核心的OpenStack項(xiàng)目配合,才能完美實(shí)現(xiàn)裸機(jī)部署的過程。

      裸機(jī)部署過程中用到的一些核心的技術(shù)

      (PXE) 預(yù)引導(dǎo)執(zhí)行環(huán)境,PXE是英特爾和微軟開發(fā)的Wired for Management(WfM)規(guī)范的一部分。PXE使系統(tǒng)的BIOS和網(wǎng)絡(luò)接口卡(NIC)能夠從網(wǎng)絡(luò)引導(dǎo)計(jì)算機(jī)而不是磁盤。引導(dǎo)是系統(tǒng)將OS加載到本地存儲(chǔ)器的過程,以便處理器可以執(zhí)行該過程。允許系統(tǒng)通過網(wǎng)絡(luò)引導(dǎo)這種功能簡(jiǎn)化了管理員和服務(wù)器部署和服務(wù)器的管理。
       動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP) DHCP是用于英特網(wǎng)協(xié)議(IP)網(wǎng)絡(luò)的標(biāo)準(zhǔn)化網(wǎng)絡(luò)協(xié)議,用于動(dòng)態(tài)分配網(wǎng)絡(luò)配置參數(shù),例如接口和服務(wù)的IP地址。使用PXE,BIOS使用DHCP獲取網(wǎng)絡(luò)接口的IP地址,并找到存儲(chǔ)網(wǎng)絡(luò)引導(dǎo)程序(NBP)的服務(wù)器。
       網(wǎng)絡(luò)引導(dǎo)程序(NBP) NBP等同于GRUB(Grand Unified Bootloader)或 LILO(Linux LOader) – 傳統(tǒng)上用于本地引導(dǎo)的加載器。與硬件驅(qū)動(dòng)器環(huán)境中的引導(dǎo)程序一樣,NBP負(fù)責(zé)將OS那個(gè)加載到內(nèi)存中,以便可以通過網(wǎng)絡(luò)引導(dǎo)操作系統(tǒng)。
       普通文件傳輸協(xié)議(TFTP) TFTP是一種簡(jiǎn)單的文件傳輸協(xié)議,通常用于在本地環(huán)境中的計(jì)算機(jī)之間自動(dòng)傳輸配置或引導(dǎo)文件。在PXE環(huán)境中,TFTP用于使用來自DHCP服務(wù)器的信息通過網(wǎng)絡(luò)下載NBP。
       智能平臺(tái)管理接口(IPMI) IPMI是系統(tǒng)管理員用于計(jì)算機(jī)系統(tǒng)的帶外管理和監(jiān)視其操作的標(biāo)準(zhǔn)化計(jì)算機(jī)系統(tǒng)接口。這是一種通過僅使用于硬件而不是操作系統(tǒng)的網(wǎng)絡(luò)連接來管理可能無響應(yīng)或斷電的系統(tǒng)的方法。

      Ironic裸機(jī)部署的過程

      OpenStack Ironic實(shí)現(xiàn)裸機(jī)部署

      核心流程分析
       1、引導(dǎo)實(shí)例請(qǐng)求通過 Nova API 進(jìn)入,通過消息隊(duì)列進(jìn)入 Nova 調(diào)度程序。
        2、Nova Scheduler 應(yīng)用過濾器并查找符合條件的虛擬機(jī)監(jiān)控nova調(diào)度程序,還使用flavor的extra_specs(例如 cpu_arch)來匹配目標(biāo)物理節(jié)點(diǎn)。
        3、Nova compute 管理選中hypervisor的資源聲明。
        4、Nova compute 管理器根據(jù) nova引導(dǎo)請(qǐng)求中網(wǎng)絡(luò)接口在Networking服務(wù)中創(chuàng)建(未綁定)租戶虛擬接口(VIF)。這里需要注意的是,端口的MAC將隨機(jī)生成,并且當(dāng)VIF連接到某個(gè)節(jié)點(diǎn)以對(duì)應(yīng)于節(jié)點(diǎn)網(wǎng)絡(luò)接口卡時(shí)MAC將更新。
        5、nova compute創(chuàng)建一個(gè) spawn 任務(wù),它包含所有信息,例如從哪個(gè)鏡像引導(dǎo)等。它從Nova compute的virt層調(diào)用 driver.spawn。在spawn過程中,virt驅(qū)動(dòng)程序執(zhí)行以下操作: 更新目標(biāo)ironic節(jié)點(diǎn)的deploy鏡像,實(shí)例UUID,請(qǐng)求的功能和各種flavor屬性。通過調(diào)用ironic API 驗(yàn)證節(jié)點(diǎn)的電源和部署的接口。將之前創(chuàng)建的VIF附加到節(jié)點(diǎn)。每個(gè)neutron port 可以被附加到任何ironic port和port group,port groups 比 ports有更高的優(yōu)先級(jí)。在Ironic這邊,這個(gè)工作時(shí)由 network interface做的。
        6、Nova 的 ironic驅(qū)動(dòng)程序通過 Ironic API 向服務(wù)裸機(jī)節(jié)點(diǎn)的 Ironic conductor 發(fā)出部署請(qǐng)求。
        7、配置虛擬接口,Neutron API更新DHCP端口以設(shè)置 PXE/TFTP選項(xiàng)。在使用neutron網(wǎng)絡(luò)接口的情況下,ironic在網(wǎng)絡(luò)服務(wù)中創(chuàng)建單獨(dú)的配置端口,在 flat 網(wǎng)絡(luò)接口的情況下,nova創(chuàng)建的端口用于配置和部署實(shí)例網(wǎng)絡(luò)。
        8、Ironic節(jié)點(diǎn)的啟動(dòng)接口準(zhǔn)備PXE配置和緩存 deploy kernel和 ramdisk。
        9、Ironic 節(jié)點(diǎn)通過 Management interfacec發(fā)出命令來啟動(dòng)節(jié)點(diǎn)的網(wǎng)絡(luò)引導(dǎo)。
        10、Ironic 節(jié)點(diǎn)的 Deploy Interface 緩存實(shí)例鏡像(在 iSCSI 部署接口的情況下),緩存kernel和ramdisk,在netboot的時(shí)候需要它。
        11、Ironic節(jié)點(diǎn)的Power Interface 指示節(jié)點(diǎn)的電源接口通電。
        12、節(jié)點(diǎn)引導(dǎo)部署ramdisk
        13、根據(jù)確切的驅(qū)動(dòng)程序需求,conductor 將通過iSCSI復(fù)制鏡像到物理節(jié)點(diǎn)。
        14、節(jié)點(diǎn)的引導(dǎo)接口將 pxe config切換為引用實(shí)例鏡像,要求 ramdisk agent 軟關(guān)閉節(jié)點(diǎn)電源,如果ramdisk agent 軟關(guān)閉電源失敗,則通過IPMI/BMS呼叫關(guān)機(jī)裸機(jī)節(jié)點(diǎn)電源。
        15、部署接口會(huì)觸發(fā)網(wǎng)絡(luò)接口,以便在創(chuàng)建時(shí)刪除配置端口,并將租戶端口綁定到節(jié)點(diǎn)。然后給節(jié)點(diǎn)上電。
        16、裸機(jī)節(jié)點(diǎn)的 provisioning state更新為active狀態(tài)。
       
      部署實(shí)踐

      安裝好Ubuntu server 16.04系統(tǒng)作為裸機(jī)部署的控制節(jié)點(diǎn)
       配置網(wǎng)絡(luò)

         auto eth0
      iface eth0 inet static
          gateway 192.168.0.253
          address 192.168.0.50/24
          mtu 1500

      #neutron
      auto eth1
      iface eth1 inet manual
      up ip link set dev eth1 promisc on
      up ip link set dev eth1 up
      down ip link set dev eth1 down
      down ip link set dev eth1 promisc off

      eth0 做為 API_NET 接口,提供 OpenStack 的管理網(wǎng)絡(luò),我們給它分配一個(gè)靜態(tài)IP,這里的地址需要和你的實(shí)際網(wǎng)絡(luò)環(huán)境一致。

      eth1 做為 EXT_NET 接口,提供 OpenStack 的 neutron 網(wǎng)絡(luò),這里我們啟動(dòng)網(wǎng)口但是不對(duì)它進(jìn)行IP配置。

      安裝kolla環(huán)境,部署OpenStack with Ironic
      更新apt源,安裝依賴

      sudo apt-get update
      sudo apt-get upgrade
      sudo apt-get install python-jinja2 python-pip libssl-dev -fy

      配置 pip 加速,使用阿里云 pip 源

      mkdir ~/.pip
      tee ~/.pip/pip.conf <<-‘EOF’
      [global]
      trusted-host =  mirrors.aliyun.com
      index-url = https://mirrors.aliyun.com/pypi/simple
      EOF

      安裝 kolla,kolla-ansible,python-openstackclient

      sudo pip install –upgrade pip
      sudo pip install ansible
      sudo pip install kolla-ansible==4.0.3
      sudo pip install python-openstackclient

      Kolla部署Ironic配置

      sudo cp -r /usr/local/share/kolla-ansible/etc_examples/kolla /etc/kolla

      sudo vim /etc/kolla/global.yml

      # 關(guān)鍵配置修改
      # Valid options are [ CentOS, Oraclelinux, ubuntu ]
      kolla_base_distro: “centos”

      # Valid options are [ binary, source ]
      kolla_install_type: “binary”

      # Valid option is Docker repository tag
      openstack_release: “4.0.0”

      # api_net 的地址
      kolla_internal_vip_address: “192.168.0.50”
      network_interface: “eth0”
      neutron_external_interface: “eth1”
      neutron_plugin_agent: “openvswitch”
      kolla_enable_tls_external: “no”
      ironic_cleaning_network: “public1”
      ironic_dnsmasq_dhcp_range: “192.168.8.1,192.168.8.5”
      enable_ironic: “yes”
      enable_haproxy: “no”

        Ironic 相關(guān)配置

         # 啟用內(nèi)核支持模塊,刪除open-iscsi

      sudo modprobe configfs
      sudo apt-get remove open-iscsi

      sudo mkdir -p /etc/kolla/config/ironic
      cd /etc/kolla/config/ironic

      # 下載和存儲(chǔ)ironic部署時(shí)引導(dǎo)鏡像
      sudo wget http://otcloud-gateway.bj.intel.com/deployment-img/ironic-agent.kernel
      sudo wget http://otcloud-gateway.bj.intel.com/deployment-img/ironic-agent.initramfs

      sudo mv ironic.conf /etc/kolla/config/ironic.conf

      #ironic.conf的內(nèi)容
      [DEFAULT]

      enabled_drivers=pxe_ipmitool

      [conductor]
      automated_clean=false
      # pxe 尋找tftp服務(wù)器是通過這個(gè)地址找的,如果不配置,pxe將無法從tftp服務(wù)拿到鏡像,從而超時(shí)失敗
      [pxe]
      tftp_server=192.168.1.50

      kolla快速部署環(huán)境

         # 生成密碼
      kolla-genpwd

      # 初始化環(huán)境,安裝一些基礎(chǔ)依賴如 docker
      sudo kolla-ansible
      -i /usr/local/share/kolla-ansible/ansible/inventory/all-in-one
      bootstrap-servers

      # 配置dockerhub加速,我們用國內(nèi)的阿里云源加速
      sudo tee /etc/docker/daemon.json <<-‘EOF’
      {
      “registry-mirrors”:  [“https://ao6wb0ej.mirror.aliyuncs.com”]
      }
      EOF
      # 配置完后重啟docker
      sudo systemctl daemon-reload
      sudo  service docker restart

      # 拉取鏡像
      sudo kolla-ansible pull

      # 預(yù)檢查
      sudo kolla-ansible prechecks
      -i /usr/local/share/kolla-ansible/ansible/inventory/all-in-one
      # 部署
      sudo kolla-ansible deploy
      -i /usr/local/share/kolla-ansible/ansible/inventory/all-in-one
      # 生成部署環(huán)境文件,/etc/kolla/admin-openrc.sh 里面有重要的系統(tǒng)初始化配置
      sudo kolla-ansible post-deploy

      配置br-ex

         # 配置 eth1 即neutron對(duì)應(yīng)的網(wǎng)卡所在的網(wǎng)絡(luò)環(huán)境
      auto br-ex
      iface br-ex inet static
      address 192.168.1.50
      netmask 255.255.255.0
      gateway 192.168.1.253
      dns-nameserver 192.168.1.253
      # 注釋掉 eth1 原來的配置

      Ironic 初始環(huán)境 SetUp

         #!/bin/bash

      # ironic 管理網(wǎng)段
      EXT_NET_CIDR=’192.168.1.0/24′
      EXT_NET_RANGE=’start=192.168.1.20,end=192.168.1.100′
      EXT_NET_GATEWAY=’192.168.1.253′
      EXT_NET_CIDR_DNS=’192.168.1.253′

      # ironic init setup
      # create ironic manage network
      openstack network create –provider-physical-network physnet1
          –provider-network-type flat public1

      openstack subnet create 
          –allocation-pool ${EXT_NET_RANGE} –network public1
          –subnet-range ${EXT_NET_CIDR} –gateway ${EXT_NET_GATEWAY}  –dns-nameserver ${EXT_NET_CIDR_DNS} — public1-subnet

      # 上傳部署的引導(dǎo)鏡像
      openstack image create –disk-format aki –container-format aki –public
        –file /etc/kolla/config/ironic/ironic-agent.kernel deploy-vmlinuz
      openstack image create –disk-format ari –container-format ari –public
        –file /etc/kolla/config/ironic/ironic-agent.initramfs deploy-initrd

         
      使用diskimage-builder制作ubuntu部署鏡像

      sudo pip install diskimage-builder
      sudo apt install -y qemu-utils
      disk-image-create ubuntu baremetal dhcp-all-interfaces -o my-image

         
        將制作的用戶鏡像上傳到 glance

         glance image-create –name my-kernel –visibility public
        –disk-format aki –container-format aki < my-image.vmlinuz

      glance image-create –name my-image.initrd –visibility public
        –disk-format ari –container-format ari < my-image.initrd

      MY_VMLINUZ_UUID=$(glance image-list|grep my-kernel|awk -F “| ” ‘{print $2}’)
      MY_INITRD_UUID=$(glance image-list|grep my-image.initrd|awk -F “| ” ‘{print $2}’)

      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 < my-image.qcow2

        生成ssh-key,以便免密鑰登錄實(shí)例
         
         # 生成密鑰對(duì)
      if [ ! -f ~/.ssh/id_rsa.pub ]; then
          echo Generating ssh key.
          ssh-keygen -t rsa -f ~/.ssh/id_rsa
      fi

      if [ -r ~/.ssh/id_rsa.pub ]; then
          echo Configuring nova public key and quotas.
          openstack keypair create –public-key ~/.ssh/id_rsa.pub mykey
      fi

         
        注冊(cè)BareMetal節(jié)點(diǎn),啟動(dòng)部署裸機(jī)的操作系統(tǒng)

         source server_ipmi

      # 物理裸機(jī)的配置,可小不可大于實(shí)際值

      RAM=65536
      DISK=800
      VCPUS=32
      HOST_CPU_ARCH=x86_64
      export IRONIC_API_VERSION=1.20

      DEPLOY_VMLINUZ_UUID=$(glance image-list|grep deploy-vmlinuz|awk -F “| ” ‘{print $2}’)
      DEPLOY_INITRD_UUID=$(glance image-list|grep deploy-initrd|awk -F “| ” ‘{print $2}’)

      # node1 創(chuàng)建 flavor
      nova flavor-create ai-bm-node1 1 ${RAM} ${DISK} ${VCPUS}
      nova flavor-key ai-bm-node1 set cpu_arch=x86_64
      nova flavor-key ai-bm-node1 set resources:CUSTOM_BAREMETAL_NODE1_AI=1
      nova flavor-key ai-bm-node1 set resources:VCPU=0
      nova flavor-key ai-bm-node1 set resources:MEMORY_MB=0
      nova flavor-key ai-bm-node1 set resources:DISK_GB=0

      # 創(chuàng)建 node
      ironic node-create -d pxe_ipmitool  -n node1
      NODE1_UUID=$(ironic node-list|grep node1|awk -F “| ” ‘{print $2}’)

      # 設(shè)置 node 的 ipmi信息
      ironic node-update $NODE1_UUID add  driver_info/ipmi_username=$s1_ipmi_username 
      driver_info/ipmi_password=$s1_ipmi_password  driver_info/ipmi_address=$s1_ipmi_address
      driver_info/ipmi_terminal_port=623

      # 設(shè)置 node 的引導(dǎo)鏡像信息
      ironic node-update $NODE1_UUID add driver_info/deploy_kernel=$DEPLOY_VMLINUZ_UUID
          driver_info/deploy_ramdisk=$DEPLOY_INITRD_UUID
      # 設(shè)置 node 的基本配置信息
      ironic node-update $NODE1_UUID add properties/cpus=${VCPUS}  properties/memory_mb=${RAM}
       properties/local_gb=${DISK} properties/cpu_arch=${HOST_CPU_ARCH}

      # 設(shè)置 node 的resource-class,方面node判斷部署到哪個(gè)裸機(jī)節(jié)點(diǎn)
      openstack –os-baremetal-api-version 1.21 baremetal node set $NODE1_UUID
        –resource-class  CUSTOM_BAREMETAL_NODE1_AI
      # 設(shè)置 啟動(dòng)網(wǎng)口的 MAC 地址,即 node 的 port
      ironic port-create -n $NODE1_UUID -a $s1_nic_mac_address

      # 設(shè)置 node狀態(tài)為 provide
      ironic –ironic-api-version 1.20 node-set-provision-state $NODE1_UUID manage
      ironic –ironic-api-version 1.20 node-set-provision-state $NODE1_UUID provide

      # 啟動(dòng)部署
      openstack server create –image my-image –flavor ai-bm-node1
       –key-name mykey –network public1  node1

      本文涉及到的所有腳本可以到Linux公社資源站下載,詳細(xì)部署可參考這套腳本

      ——————————————分割線——————————————

      免費(fèi)下載地址在 http://linux.linuxidc.com/

      用戶名與密碼都是www.linuxidc.com

      具體下載目錄在 /2018年資料/9月/30日/OpenStack Ironic實(shí)現(xiàn)裸機(jī)部署/

      下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

      ——————————————分割線——————————————

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)