차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

virtualbmc_vbmc_설정하기 [2019/08/27 08:47] (현재)
koov 만듦
줄 1: 줄 1:
 +====== VirtualBMC (vbmc) 설정하기 ======
 +출처 : https://​x-vps.com/​blog/?​p=16
 +
 +===== VBMC를 통한 TripleO 및 IPMI =====
 +instack을 사용하여 가상 환경에서 TripleO를 테스트 할 때 Ironic이 기본 pxe_ssh 드라이버 대신 IPMI를 사용하여 가상 시스템을 제어하기를 원했습니다.
 +
 +내가 사용한 설정은 매우 간단합니다. Centos 7.2를 설치 한 Triplemetal 시스템 한 대는 TripleO documentation을 사용하여 환경 설정을 진행했습니다 . 글을 쓰는 시점에서 저는 Mitaka와 Newton에서 테스트를 해왔습니다.
 +
 +이미 작동중인 언더 클라우드 VM 설정이 있고 그에 언더 클라우드 소프트웨어를 설치했다고 가정합니다 ( openstack undercloud install ). 
 +또한 필요한 이미지 (overcloud-full,​ ironic-python-agent 등)를 이미 가져 왔습니다. 이제 "​베어 메탈"​가상 머신을 정의하는 instackenv.json을 Ironic으로 가져올 준비가되었습니다.
 +
 +호스트 (하이퍼 바이저-libvirt를 실행중인 베어 메탈 머신과 스택 된 "​베어 메탈"​가상 머신)에서 VirtualBMC를 설치하고 구성합니다.
 +
 + 
 +
 +===== 하이퍼 바이저에서 =====
 +VirtualBMC는 pip install을 통해 가장 잘 설치할 수 있습니다. yum을 통해 pip를 설치할 수 있습니다. 그러나 그것을 복제하고 git 에서 수동으로 설치하도록 선택할 수 있습니다 .
 +<WRAP prewrap>
 +<code bash>
 +$ sudo yum install python-pip -y
 +...
 +$ sudo pip install virtualbmc
 +</​code>​
 +</​WRAP>​
 +
 +주) 필요한 경우 추가로 '​libvirt-devel'​ 패키지를 설치해야 할 수 도 있습니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +$ sudo yum install -y gcc python-devel libvirt-devel
 +</​code>​
 +</​WRAP>​
 +
 +또한 방화벽을 사용하여 iptables를 제어하는 ​​것이 좋습니다. 여전히 설치되어 있지 않은 경우 yum을 사용하여 설치하고 활성화 할 수 있습니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +$ sudo yum install firewalld
 +$ sudo systemctl enable firewalld
 +$ sudo systemctl start firewalld
 +</​code>​
 +</​WRAP>​
 +
 +아이디어는 호스트에 하나의 IP (기본적으로 192.168.122.1)가 있으며 instack VM에서 액세스 할 수 있다는 것입니다. IPMI는 기본적으로 포트 623을 사용합니다. 예를 들어 ipmitool 명령을 실행하면 기본적으로이 포트가 사용됩니다. 그러나 -p 플래그를 제공하고 다른 포트를 지정할 수 있습니다. IP가 비슷하기 때문에 VM마다 다른 포트가 필요합니다 (호스트의 IP 192.168.122.1).
 +
 +vbmc를 통해 제어하려는 가상 머신의 양에 따라 언더 클라우드 VM이 vbmc 데몬에 도달 할 수 있도록 필요한 포트에 대한 액세스를 허용하십시오. 제 경우에는 5 개의 오버 클라우드 가상 머신 (baremetalbrbm_0..4)이있었습니다. 이것은 포트를 할당하기로 선택한 방법입니다.
 +
 +baremetalbrbm_0은 기본 IPMI 포트 623을 가져 ​
 +옵니다. baremetalbrbm_1 포트 624 
 +baremetalbrbm_2 포트 625 
 +baremetalbrbm_3 포트 626 
 +baremetalbrbm_4 포트 627
 +
 +방화벽에서 다음 포트를 허용합니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +$ sudo firewall-cmd --permanent --zone=public --add-port=623-627/​udp
 +$ sudo firewall-cmd --reload
 +</​code>​
 +</​WRAP>​
 +
 +이제 가상 머신 ( "​도메인"​)을 vbmc에 추가 할 수 있습니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +$ sudo vbmc list
 ++-------------+--------+---------+------+
 +| Domain name | Status | Address | Port |
 ++-------------+--------+---------+------+
 ++-------------+--------+---------+------+
 +$ sudo vbmc add baremetalbrbm_0 --username root --password calvin --port 623
 +$ sudo vbmc add baremetalbrbm_1 --username root --password calvin --port 624
 +$ sudo vbmc add baremetalbrbm_2 --username root --password calvin --port 625
 +$ sudo vbmc add baremetalbrbm_3 --username root --password calvin --port 626
 +$ sudo vbmc add baremetalbrbm_4 --username root --password calvin --port 627
 +$ sudo vbmc list
 ++-----------------+--------+---------+------+
 +|   ​Domain name   | Status | Address | Port |
 ++-----------------+--------+---------+------+
 +| baremetalbrbm_0 |  down  |    ::   | 623  |
 +| baremetalbrbm_1 |  down  |    ::   | 624  |
 +| baremetalbrbm_2 |  down  |    ::   | 625  |
 +| baremetalbrbm_3 |  down  |    ::   | 626  |
 +| baremetalbrbm_4 |  down  |    ::   | 627  |
 ++-----------------+--------+---------+------+
 +</​code>​
 +</​WRAP>​
 +
 +그래! 추가했습니다. 이제 시작하면됩니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +$ for i in {0..4};do sudo vbmc start baremetalbrbm_${i};​done
 +2016-12-06 13:​36:​40,​806.806 685 INFO VirtualBMC [-] Virtual BMC for domain baremetalbrbm_0 started
 +2016-12-06 13:​36:​41,​034.034 694 INFO VirtualBMC [-] Virtual BMC for domain baremetalbrbm_1 started
 +2016-12-06 13:​36:​41,​251.251 703 INFO VirtualBMC [-] Virtual BMC for domain baremetalbrbm_2 started
 +2016-12-06 13:​36:​41,​467.467 712 INFO VirtualBMC [-] Virtual BMC for domain baremetalbrbm_3 started
 +2016-12-06 13:​36:​41,​684.684 721 INFO VirtualBMC [-] Virtual BMC for domain baremetalbrbm_4 started
 +</​code>​
 +</​WRAP>​
 +
 +그들이 잘 듣고 있는지 확인합시다 :
 +
 +<WRAP prewrap>
 +<code bash>
 +$ sudo vbmc list
 ++-----------------+---------+---------+------+
 +|   ​Domain name   ​| ​ Status | Address | Port |
 ++-----------------+---------+---------+------+
 +| baremetalbrbm_0 | running |    ::   | 623  |
 +| baremetalbrbm_1 | running |    ::   | 624  |
 +| baremetalbrbm_2 | running |    ::   | 625  |
 +| baremetalbrbm_3 | running |    ::   | 626  |
 +| baremetalbrbm_4 | running |    ::   | 627  |
 ++-----------------+---------+---------+------+
 +
 +$ sudo lsof -Pni:​623-627
 +COMMAND PID USER   ​FD ​  ​TYPE ​ DEVICE SIZE/OFF NODE NAME
 +vbmc    685 root    3u  IPv6 4622045 ​     0t0  UDP *:623
 +vbmc    694 root    3u  IPv6 4622046 ​     0t0  UDP *:624
 +vbmc    703 root    3u  IPv6 4622047 ​     0t0  UDP *:625
 +vbmc    712 root    3u  IPv6 4625461 ​     0t0  UDP *:626
 +vbmc    721 root    3u  IPv6 4616064 ​     0t0  UDP *:627
 +</​code>​
 +</​WRAP> ​
 +
 +Instack VM에서
 +
 +이제 instack vm에 로그인하고 ipmitool을 사용하여 연결을 확인할 수 있습니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +[stack@instack ~]$ ipmitool -I lanplus -U root -P calvin -H 192.168.122.1 power status ​    # defaults to 623
 +Chassis Power is off
 +[stack@instack ~]$ ipmitool -I lanplus -U root -P calvin -H 192.168.122.1 power status -p 627
 +Chassis Power is off
 +</​code>​
 +</​WRAP>​
 +
 +instack.json은 다음과 같아야합니다 ( "​name":​ "bm [0-4]"​속성을 추가하여 나중에 전체 UUID를 복사 / 붙여 넣기하지 않고도 명령을 더 쉽게 실행할 수 있기 때문에 추가했습니다)
 +
 +<WRAP prewrap>
 +<code vim>
 +{
 +  "​nodes":​ [
 +    {
 +      "​mac":​ [
 +        "​00:​3f:​f7:​9f:​2e:​eb"​
 +      ],
 +      "​name":​ "​bm0",​
 +      "​cpu":​ "​2",​
 +      "​memory":​ "​8192",​
 +      "​disk":​ "​42",​
 +      "​arch":​ "​x86_64",​
 +      "​pm_user":​ "​root",​
 +      "​pm_addr":​ "​192.168.122.1",​
 +      "​pm_password":​ "​calvin",​
 +      "​pm_type":​ "​pxe_ipmitool"​
 +    },
 +    {
 +      "​mac":​ [
 +        "​00:​1e:​c1:​2c:​e0:​35"​
 +      ],
 +      "​name":​ "​bm1",​
 +      "​cpu":​ "​2",​
 +      "​memory":​ "​8192",​
 +      "​disk":​ "​42",​
 +      "​arch":​ "​x86_64",​
 +      "​pm_user":​ "​root",​
 +      "​pm_addr":​ "​192.168.122.1",​
 +      "​pm_password":​ "​calvin",​
 +      "​pm_type":​ "​pxe_ipmitool"​
 +    },
 +    {
 +      "​mac":​ [
 +        "​00:​56:​34:​66:​7a:​fc"​
 +      ],
 +      "​name":​ "​bm2",​
 +      "​cpu":​ "​2",​
 +      "​memory":​ "​8192",​
 +      "​disk":​ "​42",​
 +      "​arch":​ "​x86_64",​
 +      "​pm_user":​ "​root",​
 +      "​pm_addr":​ "​192.168.122.1",​
 +      "​pm_password":​ "​calvin",​
 +      "​pm_type":​ "​pxe_ipmitool"​
 +    },
 +    {
 +      "​mac":​ [
 +        "​00:​8a:​c5:​c7:​22:​46"​
 +      ],
 +      "​name":​ "​bm3",​
 +      "​cpu":​ "​2",​
 +      "​memory":​ "​8192",​
 +      "​disk":​ "​42",​
 +      "​arch":​ "​x86_64",​
 +      "​pm_user":​ "​root",​
 +      "​pm_addr":​ "​192.168.122.1",​
 +      "​pm_password":​ "​calvin",​
 +      "​pm_type":​ "​pxe_ipmitool"​
 +    },
 +    {
 +      "​mac":​ [
 +        "​00:​a3:​bd:​79:​54:​b6"​
 +      ],
 +      "​name":​ "​bm4",​
 +      "​cpu":​ "​2",​
 +      "​memory":​ "​8192",​
 +      "​disk":​ "​42",​
 +      "​arch":​ "​x86_64",​
 +      "​pm_user":​ "​root",​
 +      "​pm_addr":​ "​192.168.122.1",​
 +      "​pm_password":​ "​calvin",​
 +      "​pm_type":​ "​pxe_ipmitool"​
 +    }
 +  ]
 +}
 +</​code>​
 +</​WRAP>​
 +
 +이제 instackenv.json (openstack baremetal import instackenv.json )을 가져올 수 있습니다 .
 +
 +그리고 네, 당신은 올바르게 알고 있습니다 – 우리는 여전히 노드 당 포트를 정의하지 않았습니다. 내가 직면 한 문제는 instackenv.json에 "​pm_port"​를 추가 할 수 없다는 것입니다. 노드를 Ironic으로 가져온 후에 이것을 구성해야했습니다.
 +
 +<WRAP prewrap>
 +<code bash>
 +$ ironic node-update bm1 add driver_info/​ipmi_port=624
 +$ ironic node-update bm2 add driver_info/​ipmi_port=625
 +$ ironic node-update bm3 add driver_info/​ipmi_port=626
 +$ ironic node-update bm4 add driver_info/​ipmi_port=627
 +</​code>​
 +</​WRAP>​
 +
 +이것은 노드 bm0을 제외한 모든 노드에 대해 수행되어야합니다 (기본 IPMI 포트 623에서 청취 중이므로 필요하지 않습니다). ​
 +그게 다야! 이제 내부 검사를 실행하고 배포를 진행할 수 있습니다.
 +
 +Ironic이 동일한 IP 주소 (192.168.122.1)로 여러 노드를 부팅해야한다는 사실이 마음에 들지 않았기 때문에 벌크 내부 검사를 실행할 수 없다는 점에주의해야합니다. 하이퍼 바이저의 VirtualBMC에서 우리가“해킹”하고 있는지는 알 수 없습니다. 물론 실제 베어 메탈 환경에서는 동일한 네트워크에서 동일한 IP를 갖는 것이 매우 나쁩니다.
 +
 +편집 : 이미 pxe_ssh에서 멀어지고 기본적으로 virtualbmc와 함께 pxe_ipmi를 사용하는 작업이 있습니다 : 
 +
 +https://​blueprints.launchpad.net/​tripleo/​+spec/​switch-to-virtualbmc
  
  • virtualbmc_vbmc_설정하기.txt
  • 마지막으로 수정됨: 2019/08/27 08:47
  • 저자 koov