クラウドストレージサーバーを自動的に休止状態にするにはどうすればよいですか?


13

Ubuntu 16.04 ltsとNextCloud / OwnCloudを実行するクラウドストレージデータセンターがあり、24時間年中無休で利用する必要はなく、電源管理ソリューションが必要です。サーバーは、Dell PowerEdge 1950 Gen IIおよびDell PowerEdge 2950 Gen IIです。

全体の目的

Hibernateクラウドストレージサーバーは、たとえば20分間のアイドル時間を過ぎ、データセンターだけで年間6272.09キロの二酸化炭素を削減するためにWOLで冬眠を解除し、詳細なエネルギー監査を通じてメトリックを達成しました。

無効な解決策を試した

風景

オンプレミス/ cronジョブのランドスケープは、スケジュールされた起動とシャットダウンのみを提供するため、達成可能なものには効果がありません。

パワーナップ

powernapが進むべき道のようですが、サービスはUbuntu 16.04で開始されていません

XXXXXXX〜$ sudoサービスのパワーナップステータス
●powernap.service-PowerNap
   ロード済み:ロード済み(/lib/systemd/system/powernap.service;無効、ベンダープリセット
   アクティブ:非アクティブ(デッド)

ponwernapは、Ubuntu 16.04では使用できなくなったnetwork.serviceなどの減価償却サービスを使用しているようです

達成可能な目標

Wake on LAN(WOL)

このリンクの手動設定に従うことにより、WOLを有効にすることは簡単です。またはpowewakeを使用して

サーバーの休止状態

これまで、サーバーを休止状態にしていたのはsudo systemctl hibernatesudo systemctl hibernate-sleep

  1. powernap-枯渇した依存関係を削除するためにバグレポートを提出しています
  2. systemctl-どこかにつながる可能性があります
  3. pm-utils-どこかにつながる可能性があります

ハードウェアのアップグレード

Dell 1950 Gen IIデュアルXeon E5335のCPUとXeon X5365 CPUをアップグレードしました。X5365は、電源管理を有効にし、BIOSから電源管理を設定します。正直なところ、X5365はCPUあたり70ワットをE5335より多く消費するため、このようなアップグレードには賛成しませんでしたが、休止テストに賛成しました。

アップデート1

現時点でpm-utilswol、nicの設定から離れる唯一の方法です。現在、アイドル時間のAC設定の電源フックを作成するための最適な構成を検討しています。

推奨事項をお願いします。


1
Ask Ubuntuへようこそ。質問は何ですか?もっと具体的にしてください。
以下による:madmike

アイドル時間を過ぎたHibernateクラウドサーバーは、WOLによってそのように休止状態になります。追加の詳細は、作業シナリオの例を示すことです。
ファブ

1
あなたのつまずきのブロックが何であるかを私はまったく理解できませんでした。うまくいかないことや、理解するのに特に必要なことは何ですか?
ザンナ

3
休止状態は非実用的ではありませんか?RAMサイズとディスクの読み取り/書き込み速度に応じて、休止状態と再開には数分かかることがあります。その間、リクエストはどのように処理されますか?ユーザーはそれだけ長く待ちたいですか?単にサスペンドすることは、俊敏性を維持しながら電力を節約するためのより良い妥協案です。また、サーバーを仮想化し、1台の強力なマシンまたはクラスターでホストすることで、パーツの一時停止/再開を可能にし、他のサーバーの負荷を分散することも、電力の節約に役立ちます。ただし、推測するだけで大​​規模なサーバーシステムの経験はありません。
バイトコマンダー

1
私はByte Commanderに同意します。データセンター運用の実際の経験を持つ人々からの意見については、おそらくサーバー障害について尋ねるべきです。
デビッドフォースター

回答:


0

15分ごとに、またはsystemdタイマーを使用してcronjobで実行できる小さなスクリプトを作成しました。

#/bin/bash

NActiveUsers=$(who -q | awk -F'#' '{printf $2}' | awk -F'=' '{printf $2}')
AvgLoad15Min=$(cat /proc/loadavg | awk -F' ' '{print $3}')

ActiveUsersThresh=2
AvgLoadThresh=0.15

if [ "$NActiveUsers" -lt "$ActiveUsersThresh" ]
then
    LoadBelowThresh=$(echo $AvgLoad15Min'<'$AvgLoadThresh | bc -l)
    if [ "$LoadBelowThresh" -eq 1 ]
    then
        systemctl hibernate
    fi
fi

最初に、システムにログインしているユーザーの数と最後の15分間の平均負荷を取得します。を使用して、アイドル状態の平均システム負荷を見つけることができるはずcat /proc/loadavgです。3番目の浮動小数点数は、過去15分間の平均を示します。この値は、変数に設定されたしきい値を定義するのに役立ちますAvgLoadThresh。これには確かにチューニングが必要です。定義できるもう1つのことは、ログインが許可されるユーザーの数と、システムがとにかく休止状態になることです。これはで設定されActiveUsersThreshます。メンテナンスなどを行っているときにシステムが常に休止状態にならないようにするためです。

よりインテリジェントなチェックを考え出すことができると思うので、それを最初の単純なアプローチと考えてください。たとえば、自分のクラウドインストールでどのデータベースまたはウェブサーバーが使用されているかわかりませんが、休止状態コマンドの前にそれらを正常に停止しようとすると、誰も突然接続を失うことはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.