2022年4月21日 星期四

IPMI 電源控制架設,透過虛擬機的方式實現IPMI

環境CentOS 8 Stream + Linux KVM Libvirtd

用於Cluster的Fence功能或是OpenStack的電源控制,透過Libvirtd功能控制VM主機的開/關機


1.KVM實體機列出並找到所有要被Fence的節點的Domain Name
*KVM實體機的IP例如是10.1.2.1/24
  #virsh list --all
     Id   Name      State
    -------------------------
     1    power     running
     8    servera   running
     10   serverb   running

*於KVM實體機新增一張空橋接例如名稱為br4,並且在br4上設定一組IP例如10.1.8.1/24
    #nmcli con add con-name br4 ipv4.method manual ipv4.addresses 10.1.8.1/24 \
     type bridge ifname br4 autoconnect yes

*新增專門用來Fence的網卡,在virt-manager上新增

在Power的VM主機上新增一張網卡,指定橋接的網卡是br4
在servera的VM主機上新增一張網卡,指定橋接的網卡是br4
在serverb的VM主機上新增一張網卡,指定橋接的網卡是br4

*在Power虛擬機

  *Install Openstack repo
       #yum -y install centos-release-openstack-xena

  *Install virtualbmc
       #yum install -y python3-virtualbmc

  *啟動virtualbmc
       #systemctl enable --now virtualbmc

  *列出所有ipmi的device
        #vbmc list

  *設定專門用來Fence的網段EX 10.1.8.X/24
   *在Power Server上的網卡設定10.1.8.6/24及10.1.8.7/24的IP(一張網卡同時bind 2個IP)
       ex:網卡名稱enp8s0
        #nmcli con add con-name enp8s0 ifname enp8s0 ipv4.method manual \
          ipv4.addresses 10.1.8.6/24 autoconnect yes type ethernet
        #nmcli con add con-name enp8s0 +ipv4.addresses 10.1.8.7/24
       #nmcil con down enp8s0 ; nmlic con u enp8s0

  *與KVM實體機交換SSH金鑰
      #ssh-keygen -q -N ""
      #ssh-copy-id root@10.1.2.1

*建立ipmi Device(ipmi預設的Port是623設定時可不加)
   重點在於Power server VM主機要與KVM實體機的libirtd連線portocol是qemu+ssh://
      #vbmc add servera --username admin --address 10.1.8.6 \
        --password redhat --port 623 --libvirt-uri qemu+ssh://root@192.168.1.104/system
      #vbmc add serverb --username admin --address 10.1.8.7 \
        --password redhat --port 623 --libvirt-uri qemu+ssh://root@192.168.1.104/system

    #vbmc list
    +-------------+---------+----------+------+
    | Domain name | Status  | Address  | Port |
    +-------------+---------+----------+------+
    | servera     | down    | 10.1.8.6 |  623 |
    | serverb     | down    | 10.1.8.7 |  623 |
    +-------------+---------+----------+------+

    #vbmc start servera
    #vbmc start serverb
    #vbmc list
    +-------------+---------+----------+------+
    | Domain name | Status  | Address  | Port |
    +-------------+---------+----------+------+
    | servera     | running | 10.1.8.6 |  623 |
    | serverb     | running | 10.1.8.7 |  623 |
    +-------------+---------+----------+------+

*防火牆開放623/tcp及623/udp Port
    #firewall-cmd --add-port=623/{tcp,udp}
    #firewall-cmd --add-port=623/{tcp,udp} --permanent


*測試On Nodes
  測試On servera or serverb
      #ipmitool -I lanplus -H 10.1.8.6 -U admin -P redhat power status
           Chassis Power is on

      #ipmitool -I lanplus -H 10.1.8.7 -U admin -P redhat power status
           Chassis Power is on

   On servera reboot serverb
      #ipmitool -I lanplus -H 10.1.8.7 -U admin -P redhat power reset
           Chassis Power Control: Reset

參考資料
   Server-World:https://er-world.info/en/note?os=CentOS_Stream_8&p=kvm&f=14