$30 off During Our Annual Pro Sale. View Details »

nekko cloudにおけるProxmox VE利用事例

Irumaru
December 11, 2024

nekko cloudにおけるProxmox VE利用事例

Irumaru

December 11, 2024
Tweet

Other Decks in Programming

Transcript

  1. 自己紹介 菊池 兼矢 a.k.a いるまる 技術 • Kubernetes, Proxmox VE

    • Docker, ArgoCD • PHP, Go 所属 • ネットワークコンテンツ研究会 Nekko Cloud Team創設者 • 千葉工業大学 情報ネットワーク学科 学部4年 趣味 • アニメ, 電子工作, 電車の電気設備 GitHub: https://github.com/irumaru 2
  2. 目次 • Nekko Cloud Teamの紹介 • Nekko CloudでのProxmox VE利用事例 •

    最強VM TemplateをAnsibleで構築する • VM作るの大変 • Ansible Playbookで構築 • 工夫した話 • これ公開しました! 3
  3. Nekko CloudでのProxmox VEの利用事例 • サークルメンバーが自由に開発・検証に使える(dev環境) • Kubernetesの検証, VyOSの検証, 一般的な開発機(VSCode RemoteSSH)

    → VMが欲しい → ダッシュボードから簡単にVMを、作って、使って、壊したい 要件(こんなシステムが欲しい!) → Proxmox VEよさそう! 12
  4. Nekko CloudでのProxmox VEの利用事例 • サークル内で使用するサービスを動かせる(prod環境) • Growi, Nextcloud, Keycloak, …

    → 外からのアクセス, 自動デプロイ, ノード障害時の冗長性 → コンテナ化して、VM上のKubernetesで動かしたい 13 要件(こんなシステムが欲しい!) → Proxmox VEよさそう!!
  5. Nekko CloudでのProxmox VEの利用事例 • お金がないので.... • 複数拠点で、負荷(処理、お金、AZ)をサークルメンバーで分散 • 各拠点の物理サーバー台数は減らしたい •

    devとprodで権限を分けて1クラスター内で運用 (誤削除事故防止のため) 14 要件(こんなシステムが欲しい!) → Proxmox VEよさそう!!!
  6. 最強VM TemplateをAnsibleで構築する 工程 作業内容 解決策 VM作成 たくさん入力したり、選択したり… + Cloud-initが動くようにコマンド実行 VM

    Templateの使用 OSインストール IPアドレス・ユーザー名・SSH鍵・ qemu agentインストール Cloud-Initで自動化 VM設定の簡略化 Cloud-init: Linuxシステムの初回起動時に設定を自動化するためのツール。 インスタンスのユーザーデータを元にネットワーク設定やパッケージインストールなどを行う。 VM Template: 仮想マシンの構成を保存したテンプレート。新しいVM作成時にテンプレートを基にクローンを 作成することで、効率的かつ一貫性のあるデプロイが可能。 21
  7. 最強VM TemplateをAnsibleで構築する Ansible Playbookの構成 自動デプロイの内容 1. ci-vendor.yamlをダウンロード 2. ubuntu-cloud-imgをダウンロード 3.

    VMを作成 4. VMにubuntu-cloud-imgを起動ディスクとしてインポート 5. 起動ディスクにdiscard=onオプションを追加 6. 起動ディスクサイズを拡張 2GiB → 32GiB 7. Cloud-initをセットアップ(ci-vendor.yamlの設定等) 8. VMをテンプレートへ変換 初回のみ実行 • ファイアーウォールの有効化 • 22/tcpのみ開放 • qemu-guest-agentのインストール • qemu-guest-agentの有効化 • apt upgradeの実行 29
  8. 計測前の処理内容 ディスク使用量の計測 オプションなし discard=onの場合 VMを作成 VM: 5.3%, Node: 6.16GB VM:

    1.7GB, Node: 14.04GB 2.4GBのファイルをダウンロード VM: 14%, Node: 8.72GB VM: 4.3GB, Node: 16.8GB 2.4GBのファイルを削除 VM: 6%, Node: 8.72GB VM: 1.7GB, Node: 14.04GB 最強VM TemplateをAnsibleで構築する 減る 変化なし 32 Ansible Playbookの構成/discard=onオプション
  9. 最強VM TemplateをAnsibleで構築する Ansible Playbookの構成/discard=onオプション discard=onの場合のファイル削除時の挙動 1. ゲストのファイルシステムがファイルを削除して、ブロックを未使用としてマークする 2. コントローラーがこの情報をストレージに伝える 3.

    ストレージはそれに応じてディスクイメージを縮小する → ゲストでファイルを削除した際、ホストの空き容量を増やせる discard=onオプションなしの場合ファイル削除時の挙動 1. ゲストのファイルシステムがファイルを削除して、ブロックを未使用としてマークする 2. ホスト側はなにもしない → ゲストでファイルを削除しても、ホストの空き容量は増えない https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_hard_disk_discard https://dustymabe.com/2013/06/11/recover-space-from-vm-disk-images-by-using-discardfstrim/34
  10. 最強VM TemplateをAnsibleで構築する Ansible Playbookの構成/discard=onオプション Nekko Cloudでは、discard=onオプションを有効にしています 理由 • SSDを効率的に使いたい •

    SSDの寿命を延ばしたい • テストの結果、データが消える、パフォーマンスが落ちる といった問題が生じない 35
  11. 最強VM TemplateをAnsibleで構築する Ansible Playbookの構成/discard=onオプション 有効にする条件 • discard=onオプションをつける • ストレージがシンプロビジョニングをサポートしている •

    Linux5.0以上のバージョン (一部のOSではSSDエミュレーションを有効化する必要がある) https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_hard_disk_discard 36
  12. 最強VM TemplateをAnsibleで構築する apt upgradeの実行 Q. ci-configでもapt upgradeできるのに なぜci-vendorのshellでapt upgradeするのか? A.

    初回起動時のみ自動でapt upgradeしたい • ci-configは起動時に毎回実行される • apt upgradeをセットアップ後のサーバーに対して自動で行うと 予期せぬことが起こりそう...という恐怖 40
  13. VM Template構築用Ansible PlaybookをOSSで公開中 公開する目的 • より良いVM Template構築ツールを作りたい! • コミュニティへの貢献 VM

    Template構築用Ansible Playbookをオープンソースで公開しました https://github.com/nekko-lab/proxmoxve-cloud-init-vm-template 懇親会での質問, Issue, Pull request お待ちしております!!! (主要メンバーの多数が卒業研究が修羅場のため、返答が遅くなったらごめんなさい ) 42