티스토리 뷰

Cloud/Private Cloud

openstack instance build stuck

jacobbaek Jacob_baek 2021. 2. 24. 21:17

현상

Kollan-ansible을 통해 배포된 openstack환경에서 VM 생성 및 Snapshot 생성 등 몇몇 VM control시에 stuck 현상이 발생

분석결과

VM이 동작되는 host에 접근하여 docker ps 명령으로 동작되는 container를 확인해보면

root@compute003:~# docker ps
CONTAINER ID   IMAGE                                                              COMMAND                  CREATED       STATUS                  PORTS     NAMES
dafe08adbdc8   deploy001:5000/kolla/ubuntu-source-fluentd:11.0.0                  "dumb-init --single-…"   5 hours ago   Up 5 hours                        fluentd
629af796954b   deploy001:5000/kolla/ubuntu-source-neutron-metadata-agent:11.0.0   "dumb-init --single-…"   2 days ago    Up 2 days (healthy)               neutron_ovn_metadata_agent
306c5fd81474   deploy001:5000/kolla/ubuntu-source-ovn-controller:11.0.0           "dumb-init --single-…"   2 days ago    Up 2 days                         ovn_controller
297be9d3ba8f   deploy001:5000/kolla/ubuntu-source-openvswitch-vswitchd:11.0.0     "dumb-init --single-…"   2 days ago    Up 2 days                         openvswitch_vswitchd
884c03bd17d4   deploy001:5000/kolla/ubuntu-source-openvswitch-db-server:11.0.0    "dumb-init --single-…"   2 days ago    Up 2 days                         openvswitch_db
fb4b0aac61f1   deploy001:5000/kolla/ubuntu-source-nova-compute:11.0.0             "dumb-init --single-…"   2 days ago    Up 2 days (healthy)               nova_compute
23f56102428d   deploy001:5000/kolla/ubuntu-source-nova-libvirt:11.0.0             "dumb-init --single-…"   2 days ago    Up 2 days (unhealthy)             nova_libvirt
2f5db426dac6   deploy001:5000/kolla/ubuntu-source-nova-ssh:11.0.0                 "dumb-init --single-…"   2 days ago    Up 2 days (healthy)               nova_ssh
d4e13e44ab9a   deploy001:5000/kolla/ubuntu-source-cron:11.0.0                     "dumb-init --single-…"   2 days ago    Up 5 hours                        cron
90a08073733f   deploy001:5000/kolla/ubuntu-source-kolla-toolbox:11.0.0            "dumb-init --single-…"   2 days ago    Up 5 hours                        kolla_toolbox

위와 깉이 nova-libivrt의 경우 unhealthy라는 상태정보를 확인할수 있고
실제 해당 container로 접근해서 process list를 확인해보면

root      679872  679866  0 14:57 ?        00:00:00 virsh version --daemon
root      680011   42365  0 14:58 ?        00:00:00 /bin/sh -c virsh version --daemon
root      680016  680011  0 14:58 ?        00:00:00 virsh version --daemon
root      680154   42365  0 14:59 ?        00:00:00 /bin/sh -c virsh version --daemon
root      680161  680154  0 14:59 ?        00:00:00 virsh version --daemon
root      680300   42365  0 15:00 ?        00:00:00 /bin/sh -c virsh version --daemon
root      680306  680300  0 15:00 ?        00:00:00 virsh version --daemon
root      680443   42365  0 15:01 ?        00:00:00 /bin/sh -c virsh version --daemon
root      680449  680443  0 15:01 ?        00:00:00 virsh version --daemon
root      680580   42365  0 15:02 ?        00:00:00 /bin/sh -c virsh version --daemon
root      680586  680580  0 15:02 ?        00:00:00 virsh version --daemon
root      680722   42365  0 15:03 ?        00:00:00 /bin/sh -c virsh version --daemon
root      680728  680722  0 15:03 ?        00:00:00 virsh version --daemon
root      680870   42365  0 15:04 ?        00:00:00 /bin/sh -c virsh version --daemon
root      680878  680870  0 15:04 ?        00:00:00 virsh version --daemon
root      681012   42365  0 15:05 ?        00:00:00 /bin/sh -c virsh version --daemon
root      681018  681012  0 15:05 ?        00:00:00 virsh version --daemon
root      681154   42365  0 15:06 ?        00:00:00 /bin/sh -c virsh version --daemon
root      681160  681154  0 15:06 ?        00:00:00 virsh version --daemon

위와 같이 다수의 virsh version --daemon 명령이 stuck된 상태로 남아 있는걸 확인할수 있다.
문제 당시에 약 2500여개의 명령이 남아 있었다.

(nova-libvirt)[root@compute001 /]# ps -ef | grep version | wc -l
2553

실제 container의 동작을 확인해보니 아래와 같이 healthcheck 항목이 추가되었고 이명령으로 인해 발생되었다.

root@compute003:~# docker inspect nova_libvirt
...
    "Healthcheck": {
        "Test": [
            "CMD-SHELL",
            "virsh version --daemon"
        ],
        "Interval": 30000000000,
        "Timeout": 30000000000,
        "StartPeriod": 50000000000,
        "Retries": 3
    },
...

해결방법

우선 globals.yml 내에 아래와 같이 healthcheck을 no로 두고 재배포하면 이슈는 해결된다.

## healthcheck (new feature)
enable_container_healthchecks: "no"

healthcheck을 그대로 두고 싶다면 virsh -v 와 같은 가벼운 명령을 넣으면 될것으로 보인다.
해당 명령으로 확인해보지는 않았으나 daemon 형태로 동작시킬만큼 무거운 작업이 아니기에 간단한 명령이라면 stuck 현상이 발생되지 않을것으로 보이며 interval도 좀 늘리는것을 추천한다.

참고사이트

아래 릴리즈 노트에 나온것과 같이 healthcheck 기능이 들어갔음.

'Cloud > Private Cloud' 카테고리의 다른 글

cURL with OpenStack  (0) 2021.04.09
openstack instance build stuck  (0) 2021.02.24
kolla-ansible with elasticsearch  (0) 2021.02.23
Packer on OpenStack  (0) 2021.02.19
gophercloud sdk  (0) 2021.02.08
prometheus alertmanager workflow  (0) 2020.12.28
댓글
댓글쓰기 폼