(タイトルは嘘)LXDコンテナのストレージファイルシステムがちょいちょい壊れるッポイ

LXDコンテナで GitLab を動かしているが、ちょいちょいストレージ応答が固まってしまう。

本日も GitLab の sidekick、redis が重くなってしまい応答が無くなるという事が起きた。これはちょいちょい週1くらいの頻度で起きている問題で、毎日のバックアップに起因していると思われるのだが、どうにか回避出来ないものか...。

  • 問題箇所かもしれないところ(上から怪しい順)
    • sidekiq
    • redis
    • puma

GitLab を動かしている環境について

GitLab の構成については公式ドキュメントのチャートがある。全然ワカランくらいに多くのミドルウェアで構成されている。で、宅サバでは GitLab Omnibus のEE版で構築している。

docs.gitlab.com

宅サバ環境は、こちら図のようにLXDコンテナにGitLab環境をインストールしている。

2台の Ubuntu VM 上で LXDコンテナ環境を用意しているが、これらはクラスタ化はしておらず独立させていて、スクリプトでイメージバックアップは取っているという状態。

f:id:nginoza:20201230130052j:plain

事象の発生状況

ある時、気付くとGitLabのウェブUIの応答が無くなっていて、それに気付いてGitLabマシンにSSHするとSSHに対する応答も無いという状態になる。

  • LXDホスト上で top コマンドをみた時の状況

    • ディスクIOでのロックがかかっているように見える...
    • f:id:nginoza:20201230130756p:plain
  • 疑ったこと(順に...

    1. GitLab omnibus 内のバグ
      • でも、これ調べるの面倒くさ過ぎだろ...
    2. コンテナバックアップ時の失敗
      • とりあえずバックアップ止めれば発生しないか確かめられる。
    3. btrfsストレージのファイルシステム破損
      • GitLab専用のコンテナストレージを分けて作れば他のコンテナの影響を切り分けられる。
    4. Windows 10 が勝手に再起動している問題
      • 物理マシンだと初期設定のシャットダウンは実はスリープしてるだけだったので、仮想マシンのイメージファイルが破損する事があった。無効化することで解消している。

問題の切り分けとして試したこと

Windows の「高速シャットダウン」の無効化

バックアップスクリプトの停止

ストレージイメージを複数にしてコンテナを移動

  • 疑義ポイント
    • btrfs のファイルシステム破損というメッセージも過去に出たことがあったので、コンテナの競合か何かでファイルシステムが破損している事を疑った。
    • LXDホストのローカルストレージ上にbtrfs 等のイメージファイルを持たせて、コンテナ用のストレージとして使用する。

一時的な解決

現状: 何の役にも立たない結論(過去時点)

  • バックアップスクリプトの停止
    • lxc コマンドで stop && copy && start をしているところのどこかで転けてしまっていそうである。
    • GitLabコンテナが完全に停止していない状態で再startしているとかなのかなぁ?と妄想している。
    • バックアップ処理を止めると、GitLabコンテナが固まることは起きていないように見える...。

現状その2: 何の役にも立たない結論(現時点)

  • GitLab omnibus のアップグレード
    • バックアップを停止してから暫く経って、ウェブUIを操作中にGitLabが固まる事が起きている。
    • 以前と異なるのは、我慢して待っていれば自然復旧するという点にある。
      • 固まった時の簡易な様子としては CPU Load Ave. 30以上、io wait 96% といういつもの状態になる。
      • 15分ほど放置すると、CPU Load Ave. は通常通りの 1.0 以下に下がってくる。こうなるとウェブUIの操作もスムーズに出来るように戻ってしまう。
    • この問題も深追いすると面倒そうなので、GitLabのアップデートが降ってくるまで放置することにした。
      • GitLab 13.6.2(?)だったかな、では再現せずに安定している。

ランダム架電によるテレアポ

ランダム架電によるセールスアポイントを違法出来ないか?

パスワード管理ツールについて

パスワード管理ツール

  • どんなのがあるのか?
    • 1Password
    • LastPass
    • Dashlane
    • Bitwarden
    • Keeper
    • RoboForm
    • Password Manager
    • TrustLogin
    • Griffas
    • D-PLAMS
    • OneLogin
    • CloudLink

使い方

パスワードの共有

  • Dashlane の場合
    • パスワードを自分以外の誰かと共有することが出来る。
    • メールアドレスで共有相手を指定して共有することが出来る。
    • 共有相手には、Dashlane内に格納している項目単位で共有することが出来る。
    • 共有相手には、Dashlaneからの招待メールが届き、Dashlaneアカウントの作成を促される。
    • Dashlane の利用規約とプライバシーポリシーを許諾してアカウントを作成する。
    • 問題点
      • 共有相手にもDashlaneアカウントを作成してもらう必要がある。
      • 他組織のセキュリティーポリシー次第では利用してもらえない。
      • クラウドサービスを利用してもらう事になるので、それなりのハードルの高さ。
      • 正常なUX経路にアカウント削除が存在しない。

うっかりオープンしているDockerホスト(port:2375-2376)を狙った攻撃

DockerホストのリモートAPIポートが開いているホストを探しています

RakutenモバイルのSIM再発行手数料が無料になったので iPhone SE に eSIMを移してみました

Rakuten UN-LIMIT 1年間無料 12/1 am8:59まで

  • network.mobile.rakuten.co.jp
    • 楽天ポイント8,000ポイント還元(但し、条件あり) / 合わせて端末を買うと最大20,000ポイント還元
      • 回線のみの契約でも 8,000ポイント還元を受けられるので、iPhone 11以降を持っているなら eSIM にRakuten回線を付けておいて損は無いでしょう。
      • 楽天モバイルは SIM再発行手数料が無料になったので、物理SIMからeSIMに移したり、eSIMの端末移行も気軽に出来るようになりました(以前は eSIMの再アクティベーションに 3,000円の手数料が必要だったため、eSIMを使うメリットとほぼありませんでした)。

iPhone SE に Rakuten UN-LIMIT eSIM を登録する

Ryzen 7 4700U のノートPC が 7万840円!!?

Lenovo Ryzen 7、SSD 512GB の 2-in-1 ノートPCが7万円!!??

LenovoショップのFAQが姑息すぎる

Lenovoショップで注文をキャンセルしようとしても、キャンセル方法を案内しているページにたどり着けない仕組みになっている。

QNAPのネットワーク設定をしくじって、再セットアップした話

QNAPの初期化する羽目になりました

背景・経緯

  1. TBS-453AというQNAPの中でもちょっと風変わりなNASを使っていました。
    • kakaku.com
    • 4ベイNASというスペックはごく普通のNASですが、2016年発売にして M.2 SATA SSD しか搭載できないという変な機種でした。
  2. 仮想ネットワークを作ることが出来るので、この機能を使って複数ブリッジを構成して仮想ネットワークを構成していました。
  3. 更にネットワークのセキュリティ設定で、NAS機能を使用できるインターフェースを制限していた。
    • 接続元IPaddr
    • 使用できるサービス(Samba,NFSなど)
    • 使用可能なインターフェース
  4. で、ネットワークセキュリティをしっかり設定していた所為で、うっかり間違えで二度とアクセス出来なくなってしまった...。
    • 管理用インターフェースをブリッジで作っていて、かつ DHCPでアドレスをもらうようにしていた。
    • lxc, docker のブリッジを仮想スイッチ(ブリッジ) 接続してしまった。
    • 内部DHCPがそのまま生きていたので、監理インターフェースがコンテナ用の内部DHCPで割り当てられてしまって、外部ホストからアクセス出来ない...。
    • ネットワークセキュリティでアクセス元アドレスを指定していたので、コンテナ用アドレスではアクセス出来ない...。
    • 詰んだ...。

初期化方法

  • 初期化方法
    • アレやコレ
  • 初期化されるのは何か?
  • 消えないものは何か?
    • ストレージ構成
      • ストレージの状態は初期化しても消えないので、物理ディスクをマウント位置も変えずに戻せばデータは消さずに済みます。

QNAPの初期設定(基本機能編)

  • ネットワーク設定
  • セキュリティー設定
    • コントロールパネル -> システム -> セキュリティ
      • アクセス制限といわゆる Fail2Ban 的な機能の設定。
      • QNAP コントロールパネル セキュリティ機能
        セキュリティ(IPアクセス保護、アカウントアクセス保護)
    • コントロールパネル -> 権限設定 -> ユーザー
      • デフォルトの admin 以外のユーザーアカウントを作成して使用する。
      • QNAPコントロールパネル ユーザー作成機能
        コントロールパネル 権限設定 ユーザーの作成
    • コントロールパネル -> ネットワークとファイルサービス -> ネットワークアクセス
      • サービスバインディングで、インターフェースに紐付けるNASサービスを制限する。
      • 仮想ネットワーク(ブリッジ)の設定を間違ってしまうと、また管理画面にアクセス出来なくなるという諸刃の剣。
      • ネットワークアクセス設定 複数NICがある機種ではNICにひも付けるサービスを制限出来る
        ネットワークアクセス設定 インターフェースにひも付けるサービスを制限する
    • コントロールパネル -> ネットワークとファイルサービス -> Win/Mac/NFS
      • ネットワークファイルシステムのサービスを選択する。
      • 提供したいサービスだけを明示的に有効化する。
      • AFP と NFS は無効にします。
    • コントロールパネル -> ネットワークとファイルサービス -> Telnet/SSH
      • Telnet は無効化します。
        • 他にも、 SNMPFTP、TFTP などのレガシーサービス、レガシープロトコルも無効化します。
    • 「アクセス許可の編集」ボタンでリモートシェルログイン出来るユーザーを指定する。
      • 普段 ssh に使用するのは admin 以外にします。adminは復旧時などの非常用途として残しておく。
    • コントロールパネル -> アプリケーション
      • syslogサーバー以外は無効化してしまいます。
    • 通知センター
      • f:id:nginoza:20201113141058p:plain
        QNAP 通知センター
  • ストレージ設定
    • ストレージプールの作成
      • Qtier を構成するかどうかを選ぶ。
        • SSDとHDDの混成の場合は、ティアリングするかどうか検討する必要があるが、TBS-453A は M.2 SATA-SSD のみなのでティアリングは必要ない。
      • RAID構成を選ぶ。
      • 容量アラートしきい値を設定する。
    • ボリュームの作成
      • 一つ目のボリュームはシステム用にも使われる(QNAPアプリ等)ので、自分用のデータとは別のOS用途として作っておく(自分の場合はシンプロビジョニングで64GBにしている)。
      • 二つ目以降をデータ用途して作成する。
        • データ用途には「暗号化」を有効にする。 パスワードは保存でも構わない。

番外: QNAPの利用規約とプライバシーポリシー

番外: QNAPの脆弱性情報