이제 StarlingX를 운용하기 위해 필요한 설정들을 할 차례입니다.

이 설정들을 해줘야 네트워크 설정 및 OpenStack과 k8s를 이용하는데 필요한 설정들을 할 수 있습니다.

 

가장 먼저 설정을 위해 인증을 받아야합니다.

source /etc/platform/openrc

해당 명령어를 통해 keystone admin 인증을 받습니다.

인증이 적용된 화면

admin인증이 적용되면 위의 사진과 같이 사용자 계정 이름에 괄호로 keystone_admin이 생깁니다.

 

다음은 OAM 인터페이스 네트워크를 위한 설정을 합니다.

OAM_IF=<OAM-PORT>
system host-if-modify controller-0 $OAM_IF -c platform
system interface-network-assign controller-0 $OAM_IF oam

(1)번 글에서 말했듯이 StarlingX는 OAM과 data 2개의 랜 포트를 필요로 하고있습니다.

2개의 랜 포트중 원하는 OAM 네트워크로 사용할 포트를 매 윗줄의 <OAM-PORT> 부분에 넣고 그대로 입력합니다.

 

성공적으로 입력이 되었다면 다음과 같은 화면이 출력됩니다.

system host-if-modify controller-0 $OAM_IF -c platform
system interface-network-assign controller-0 $OAM_IF oam

NTP 서버의 network time과 동기화를 위해 다음 명령어를 입력합니다.

system ntp-modify ntpservers=0.pool.ntp.org,1.pool.ntp.org

 

이제 남은 포트인 DATA 포트를 이용을 위한 설정을 할 차례입니다.

 

공식 홈페이지에서 이 단계는 OpenStack에만 필요한 단계임 k8s의 경우 SRIOV를 이용할 경우만 필요하다고 적혀있습니다.

 

저는 OpenStack을 이용해야 하므로 이 단계를 진행합니다. 그러나 필요하지 않은 부분도 있어서 진행하지 않은 부분도 있습니다. 차례대로 적으면서 말씀드리겠습니다.

 

system host-label-assign controller-0 sriovdp=enabled

k8s에서 SRIOV를 사용할 경우 위의 명령어를 입력하시면 됩니다.

저는 SRIOV를 사용하지 않아서 입력하지 않았습니다.

 

system host-memory-modify controller-0 0 -1G 100
system host-memory-modify controller-0 1 -1G 100

container에서 DPDK를 실행할 경우 위의 명령어를 입력하시면 됩니다.

DPDK도 사용하지 않아서 입력하지 않았습니다.

 

DATA0IF=<DATA-0-PORT>
DATA1IF=<DATA-1-PORT>
export COMPUTE=controller-0
PHYSNET0='physnet0'
PHYSNET1='physnet1'
SPL=/tmp/tmp-system-port-list
SPIL=/tmp/tmp-system-host-if-list
system host-port-list ${COMPUTE} --nowrap > ${SPL}
system host-if-list -a ${COMPUTE} --nowrap > ${SPIL}
DATA0PCIADDR=$(cat $SPL | grep $DATA0IF |awk '{print $8}')
DATA1PCIADDR=$(cat $SPL | grep $DATA1IF |awk '{print $8}')
DATA0PORTUUID=$(cat $SPL | grep ${DATA0PCIADDR} | awk '{print $2}')
DATA1PORTUUID=$(cat $SPL | grep ${DATA1PCIADDR} | awk '{print $2}')
DATA0PORTNAME=$(cat $SPL | grep ${DATA0PCIADDR} | awk '{print $4}')
DATA1PORTNAME=$(cat  $SPL | grep ${DATA1PCIADDR} | awk '{print $4}')
DATA0IFUUID=$(cat $SPIL | awk -v DATA0PORTNAME=$DATA0PORTNAME '($12 ~ DATA0PORTNAME) {print $2}')
DATA1IFUUID=$(cat $SPIL | awk -v DATA1PORTNAME=$DATA1PORTNAME '($12 ~ DATA1PORTNAME) {print $2}')

system datanetwork-add ${PHYSNET0} vlan
system datanetwork-add ${PHYSNET1} vlan

system host-if-modify -m 1500 -n data0 -c data ${COMPUTE} ${DATA0IFUUID}
system host-if-modify -m 1500 -n data1 -c data ${COMPUTE} ${DATA1IFUUID}
system interface-datanetwork-assign ${COMPUTE} ${DATA0IFUUID} ${PHYSNET0}
system interface-datanetwork-assign ${COMPUTE} ${DATA1IFUUID} ${PHYSNET1}

이 명령은 OpenStack을 사용한다면 입력해야하는 명령어입니다.

그러나 (1)에서 말씀드렸듯이 포트는 2개가 필요하다고 명시되어 있는데 위 명령어를 보면 OAM을 제외하고도 2개가 더 필요해보입니다.

혹시나 싶어서 <DATA-0-PORT>과 <DATA-1-PORT>에 같은 포트를 할당해보았더니 설정이 진행되지 않았습니다.

또한 후에 말씀드리겟지만 저는 OpenStack에서 사용할 network는 vlan이 아닌 flat입니다.

이거에 대한 세부사항을 공식 홈페이지에서 미리 언급해줬으면 좋았을텐데 꽁꽁 숨겨져 있어서 삽질을 많이 했었죠 ㅠㅠ

 

DATA0IF=<DATA-0-PORT>
export COMPUTE=controller-0
PHYSNET0='physnet0'
SPL=/tmp/tmp-system-port-list
SPIL=/tmp/tmp-system-host-if-list
system host-port-list ${COMPUTE} --nowrap > ${SPL}
system host-if-list -a ${COMPUTE} --nowrap > ${SPIL}
DATA0PCIADDR=$(cat $SPL | grep $DATA0IF |awk '{print $8}')
DATA0PORTUUID=$(cat $SPL | grep ${DATA0PCIADDR} | awk '{print $2}')
DATA0PORTNAME=$(cat $SPL | grep ${DATA0PCIADDR} | awk '{print $4}')
DATA0IFUUID=$(cat $SPIL | awk -v DATA0PORTNAME=$DATA0PORTNAME '($12 ~ DATA0PORTNAME) {print $2}')

system datanetwork-add phy-flat flat 
system host-if-modify -m 1500 -n data0 -c data ${COMPUTE} ${DATA0IFUUID} 
system interface-datanetwork-assign ${COMPUTE} ${DATA0IFUUID} phy-flat 

그래서 위와 같이 위의 명령어에서  DATA-1-PORT관련 명령어를 제외한 1개의 데이터 포트로만 그리고 vlan이 아닌 flat네트워크로 설정 진행을 했습니다.

대부분의 명령어가 별 다른 출력은 없습니다.

OSD를 CEPH을 위해 추가합니다.

echo ">>> Add OSDs to primary tier"
system host-disk-list controller-0
system host-disk-list controller-0 | awk '/\/dev\/sdb/{print $2}' | xargs -i system host-stor-add controller-0 {}
system host-stor-list controller-0

그리고 OpenStack을 위해 세부 설정을 합니다.

system host-label-assign controller-0 openstack-control-plane=enabled
system host-label-assign controller-0 openstack-compute-node=enabled
system host-label-assign controller-0 openvswitch=enabled
system host-label-assign controller-0 sriov=enabled

위와 같이 입력을 하면 되나 저처럼 SRIOV를 사용 안한다면 4번째 명령으는 제외하시면 됩니다.

system modify --vswitch_type none
system modify --vswitch_type ovs-dpdk
system host-cpu-modify -f vswitch -p0 1 controller-0

위 명령어중 DPDK를 사용하지 않으신다면 1번째 명령어만 입력하셔서 OVS를 설정합니다.

 

다음은 OpenStack의 NOVA Partiotion 설정입니다.

이 부분은 제가 실수했던 부분이라 강조드리고 싶습니다.

 

export COMPUTE=controller-0

echo ">>> Getting root disk info"
ROOT_DISK=$(system host-show ${COMPUTE} | grep rootfs | awk '{print $4}')
ROOT_DISK_UUID=$(system host-disk-list ${COMPUTE} --nowrap | grep ${ROOT_DISK} | awk '{print $2}')
echo "Root disk: $ROOT_DISK, UUID: $ROOT_DISK_UUID"

echo ">>>> Configuring nova-local"
NOVA_SIZE=34
NOVA_PARTITION=$(system host-disk-partition-add -t lvm_phys_vol ${COMPUTE} ${ROOT_DISK_UUID} ${NOVA_SIZE})
NOVA_PARTITION_UUID=$(echo ${NOVA_PARTITION} | grep -ow "| uuid | [a-z0-9\-]* |" | awk '{print $4}')
system host-lvg-add ${COMPUTE} nova-local
system host-pv-add ${COMPUTE} nova-local ${NOVA_PARTITION_UUID}
sleep 2

이 명령을 보시면 NOVA에서 Partiotion의 사이즈를 설정하는걸 볼 수 있습니다.

NOVA_SIZE=34로 되어있는데 이러면 OpenStack에서 instance의 총합 로컬 크기를 34GB밖에 못만듭니다..ㅠ

그래서 수정해보려 했더니 이미 설치되어있는 상태에서는 수정할 방법을 찾을 수가 없었습니다.

결국은 포멧하고 다시 설치를 했습니다. 

그러므로 NOVA_SIZE를 본인이 희망하는 적합한 사이즈만큼 할당하시면 됩니다.

이제 설정은 끝났습니다.

마지막으로 unlock을 위해 해당 명령어를 입력해줍니다. 

system host-unlock controller-0

위의 명령어를 입력하면 unlock가 되면서 재부팅이 되는 것을 볼 수 있습니다.

대체로 사양에 따라 5~10분정도의 시간이 걸린다고 적혀있으나 실제로는 무척 오래걸립니다...

 

+ Recent posts