CloudStack 4.18をUbuntu 22.04 LTSにインストール: エージェント(KVMホスト)

CloudStack

エージェント(KVMホスト)インストール

aptでエージェントをインストールします。

$ sudo apt install cloudstack-agent
$ sudo vi /etc/cloudstack/agent/agent.properties

agent.propertiesを編集してCPUモードをホストのCPUに合わせます。
パフォーマンスが上がるようですが、複数のエージェントを稼働させる時にVMが異なるCPUで稼働することになります。エージェントを複数使用する場合は要注意。

guest.cpu.mode=host-model

設定終わったらエージェントを再起動。

$ sudo systemctl restart cloudstack-agent.service

次はlibvirtdのボートの設定です。

$ sudo cp /etc/libvirt/libvirtd.conf /etc/libvirt/libvirtd.conf.orig
$ sudo vi /etc/libvirt/libvirtd.conf

下記設定をおこなう。
確認はしていないけど、この設定は手動でやる必要はないかも。(自動で設定される?)

listen_tls = 0
listen_tcp = 0
tls_port = "16514"
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0

次に libvirtd を設定します。

$ sudo vi /etc/default/libvirtd

下記のコメントアウトを外します。

LIBVIRTD_ARGS="--listen"

最後にlibvirtd.serviceを設定してマシンを再起動します。

$ sudo vi /lib/systemd/system/libvirtd.service

下記を追記

Wants=libvirtd-tls.socket
Wants=libvirtd-tcp.socket

デーモンを更新して再起動。

$ sudo systemctl daemon-reload
$ sudo systemctl enable libvirtd-tcp.socket
$ sudo systemctl enable libvirtd-tls.socket
$ sudo systemctl mask libvirtd.socket libvirtd-ro.socket libvirtd-admin.socket libvirtd-tls.socket libvirtd-tcp.socket
$ sudo reboot

マシンを再起動したら、Apparmorを無効化します。

$ sudo ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
$ sudo ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
$ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
$ sudo apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper

エージェントを再起動すればオッケーです。

$ sudo systemctl restart cloudstack-agent

マネジメントサーバー – エージェントサーバー接続用設定

マネジメントサーバーとエージェントサーバーはSSHで接続するため、公開鍵を交換しておきます。(同一サーバーだけど、接続はSSH)

$ sudo cat /var/lib/cloudstack/management/.ssh/id_rsa.pub | sudo tee -a /root/.ssh/authorized_keys

ファイアウォール設定

一応ファイアウォールの設定もしておきます。iptablesを使うので、もし入っていなければインストールします。

$ sudo apt install iptables iptables-persistent

インストールしたら下記コマンドを実行します。
ただ、このあたりは適切に設定できているのか微妙。一旦スキップして、動作確認取れてから改めて設定した方がいいかも。

$ NETWORK=192.168.0.0/20
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p udp --dport 111 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p tcp --dport 111 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p tcp --dport 2049 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p tcp --dport 32803 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p udp --dport 32769 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p tcp --dport 892 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p tcp --dport 875 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p tcp --dport 662 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p tcp --dport 8250 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p tcp --dport 8080 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p tcp --dport 9090 -j ACCEPT
$ sudo iptables -A INPUT -s $NETWORK -m state --state NEW -p tcp --dport 16514 -j ACCEPT

エージェント(KVMホスト)の設定はこれで終わり。
次はマネージメントサーバーの管理画面からの設定です。