💻

apache cloudstackのコンソールプロキシを治す
May 11, 2021February 19, 2024
#Develop#Cloudstack

apache cloudstack のコンソールプロキシが動かなくなった。 以前から利用できなくなっていたのだが、一部インスタンスが動かなくなり VNC 接続などでターミナルを確認する必要があったので調査して応急処置はできた。

環境

  • ApacheCloudstack 4.8
  • サーバー 3 台構成
  • KVM を利用

状況

  • 正常なインスタンスは立上り通信可能
  • 動かなくなったインスタンスは ping は通るが SSH 不能
  • systemvm は 2 台どちらも running だが Agensstatus が Disconnect
    • Console proxy VM
    • Secondary Storage VM

ConsoleProxyVM の再起動

手始めに ConsoleProxyVM を再起動してみた。 cloudstack の管理画面に管理者権限でログイン Home -> Infrastructure -> System VMs Console Proxy VM のインスタンスをクリック reboot system VM をクリックして再起動した。

image-20210513233846856

再起動では解決しなかった。

Console Proxy VM の再作成

既にある VM がおかしい状態に陥っている可能性があったので Console Proxy VM の再作成を行った。 再起動とほぼ同様の手順で cloudstack の管理画面に管理者権限でログイン Home -> Infrastructure -> System VMs Console Proxy VM のインスタンスをクリック destroy system VM をクリックして VM を削除した。

SystemVM は削除されると必要に応じて再作成されてくる。 vm 名の通し番号が 1 上がる、IP 等の情報が設定している範囲でランダムに置き換わる。 再作成後、running になったが情況に変化がなかった。

Console Proxy VM へのログイン方法と Console Proxy VM の構成

Console Proxy VM にログインして原因を調査した。

console Proxy VM へのログイン Link Local IP Addressは管理画面から確認できる。

ssh -i /var/lib/cloudstack/management/.ssh/id_rsa -p 3922 <Link Local IP Address>

Console Proxy VM は以下の構成でした。

  • CPU 1 コア
  • メモリ 1GB
  • OS debian 7.9

起動時に動くものたち

# chkconfig |grep on$
acpid                   on
bootlogs                on
bootmisc.sh             on
checkfs.sh              on
checkroot-bootclean.sh  on
checkroot.sh            on
cloud-early-config      on
cron                    on
hostname.sh             on
hwclock.sh              on
iptables-persistent     on
ipvsadm                 on
irqbalance              on
kbd                     on
keyboard-setup          on
killprocs               on
kmod                    on
motd                    on
mountall-bootclean.sh   on
mountall.sh             on
mountdevsubfs.sh        on
mountkernfs.sh          on
mountnfs-bootclean.sh   on
mountnfs.sh             on
mtab.sh                 on
networking              on
ntp                     on
open-vm-tools           on
postinit                on
pppd-dns                on
procps                  on
rc.local                on
rmnologin               on
rpcbind                 on
rsync                   on
rsyslog                 on
setkey                  on
ssh                     on
sudo                    on
sysstat                 on
udev                    on
udev-mtab               on
urandom                 on
xe-linux-distribution   on

cloud-early-config が Console Proxy VM の中身と思われる。

Console Proxy VM の Port80 の LISTEN の成功と表示崩れ

cloud-early-config の起動で java が port80 を LISTEN し始めました。

/etc/init.d/cloud-early-config start

しかし画像や JS が 404 になり表示崩れしてしまい利用することができませんでした。

Console Proxy VM の表示崩れの修正

java は動いているためドキュメントルートの場所が違うのかと、github のコードを読んだり、VM 内の config を調べたがそれらしいものは見つからない。

苦し紛れにいろいろ調べていると

ls -l /proc/<javapid>|grep cwd
lrwxrwxrwx  1 root root 0 May 12 05:33 cwd -> /usr/local/cloud/systemvm (deleted)

実行したディレクトリが消えてる状態でした。 しかし、/usr/local/cloud/systemvm 以下にはファイルやディレクトリがちゃんと存在しました。

実験してみると

/etc/init.d/cloud-early-config start

これを実行した直後はディレクトリが消えていて ディレクトリ遷移すると復活しているようでした。

/etc/init.d/cloud-early-config がディレクトリを消しているため /usr/local/cloud/systemvm 直下の js,css,images が読み込めず表示崩れが起きていたようです。

/etc/init.d/cloud-early-config の中身を読んでみたところ、私には複雑ですぐに問題箇所がわかりませんでした。 時間を置いて解読したいと思います。

応急処置として chattr でディレクトリこと書き込み禁止にしてみました

chattr +i /usr/local/cloud/systemvm/images
chattr +i /usr/local/cloud/systemvm/js
chattr +i /usr/local/cloud/systemvm/css
pkill -9 <javapid>
/etc/init.d/cloud start
/etc/init.d/cloud-early-config start

cloud-early-config start した際に images js css が削除できない旨のエラーが出て console の表示崩れが解消しました。

原因ではなかったが試してみたこと&調べたこと

時間のずれ

host と systemVM の時間がずれているとうまくいかないそうなので調査しました。わたしの場合には時間のずれはありませんでしたが timezone がずれていたので揃えました。

HOST 		Tue May 11 21:08:44 JST 2021
SYSTEM VM 	Tue May 11 12:09:08 UTC 2021
in the systemvm
cp /usr/share/zoneinfo/Japan /etc/localtime

SSL 証明書の問題

わたしの環境は SSL を利用していないので関係なかったのですが、 cloudstack で利用していた証明書(realhostip.com)が 2014 年に切れておりその影響で繋がらない場合があるそうです。 cloudstack 4.3 以上の場合はデフォルトで SSL 無効になっているようです。

証明書を利用している場合には管理パネルから下記の設定をすると SSL を無効にできるようです。

Home -> Global Settings

secstorage.encrypt.copy  "false"
consoleproxy.url.domain  空

本番環境で SSL 接続を off にすることは推奨されていません。ご注意ください。

参考

https://cwiki.apache.org/confluence/display/CLOUDSTACK/View+Console+and+Console+Proxy+Troubleshooting

Cannot open console: ConsoleProxyServlet NullPointerException · Issue #3164 · apache/cloudstack

ISSUE TYPE Bug Report COMPONENT NAME Console proxy CLOUDSTACK VERSION 4.11.2.0 CONFIGURATION N/A OS / ENVIRONMENT CentOS 7.6.1810 SUMMARY I've upgraded CloudStack from version 4.9.3.1 to ver. 4.11....

GitHub

Cannot open console: ConsoleProxyServlet NullPointerException · Issue #3164 · apache/cloudstack

おしまい



sakakinox

Written by sakakinox
Server enginier

Copyright © sakakinox.net 2021-2024.