Express5800/53Xg を手に入れたので、色々配置替え中

以前自宅での仮想環境用に調達した HA800 。

そもそも、新しく機材を調達しようと思ったのは、 Mac mini や LIFEBOOK で動かしていた VirtualBox による実験環境を集約。これにより、 LIFEBOOK を用途的に浮かすことが出来れば、家族が使っている調子の悪い ThinkPad をそれで置き換えられるな、というのが発端。
そこになんともタイミング良く、今回入手した HA8000 がヤフオクに出品された、というわけ…。

[From HA8000の中古を手に入れるなど - Soukaku's HENA-CHOKO Blog]

使っているとなんだかんだで、欲が出てくるというか、Hyper Threading 有効な CPU 欲しくなってきたもんで、ヤフオクで X3440 より上のやつをチェックをマメにしてたんですけど、出物があってもお小遣い的なタイミングと合わなかったりして、購入までは至らず。

んで、ヤフオク検索しててふと見つけたのが、 Xeon E3 シリーズを搭載した Express5800 のワークステーション。
X3470 とか X3480 が 1 万近い値段で出品されているのと、そう変わらない値段で出品されているものもチラホラあったし、「CPU 単体で買うよりもコスパ的にもいいな…」ということで、ターゲットを変更。メモリが 32 GB までいける E3-1275 v2 搭載の Express5800/53Xi を第一候補、メモリ 16GB までで E3-1280 搭載の Express5800/53Xg を第二候補としてウォッチしてたんですが、第一候補は出品台数も少なかったこともあったのか、スルスルと入札額が上がっててしまい、あっという間に予算オーバしてしまったので断念。

一方、第二候補の方は複数台出品されてたのと第一候補狙いの人が多かったのもあったのか、入札終了時刻キリギリまで入札者がいないのがあったので、終了間際に入札して、無事確保した次第。(他の人と競ることもなかったのは、ラッキーだった。)

HTTP/2 が、いつの間にか無効状態になっていまして…

ふと気がつくと、以前 HTTP/2 対応に設定した Apache2 が HTTP/2 でのアクセスが出来ないようなってて、「設定書き換えたわけではないんだけどな〜」と思いつつ、ログをチェックして HTTP/2 が効かなくなってる時期を特定。
その前後でパッケージのアップデートしてないかチェックしたら、Apache2 のパッケージをアップデートしていたのが判ったので、一旦 2.4.27 から 2.4.25 にダウングレードしてみたら、何の問題もなく HTTP/2 でアクセスが出来るように…。

バクだったら、レポートしといたほうがいいよな、と考えつつ、こんな

tweet しておいたら、以下のような情報を教えていただいた。

早速、チェックしてみたら

*) COMPATIBILITY: mod_http2: Disable and give warning when using Prefork.
The server will continue to run, but HTTP/2 will no longer be negotiated.
[Stefan Eissing]

[From CHANGES_2.4.27]

これがまさに、ビンゴ、ってことで、慌てて Apache2 を mpm_prefork を使わない構成に変更した次第。

Debian "stretch" と VirtualBox の EFIモード

もうリリースから、2 ヶ月ほどになりますが、 "stretch" こと Debian GNU/Linux 9 がリリースされておりました。

さて、前のバージョンで、 VirtualBox の仮想マシンをEFI 有効にして Debian のインストールをすると、モードによってはインストール直後にブートローダを設定してあげないと正しく起動させることができなくなってしまった件ですが、 stretch では対策されたようで、特に何の対策をしなくても良くなったようですネ。

そもそも、VirtualBox の場合、 EFI を有効化した仮想マシンの NVRAM にインストールした OS (この場合は、Debian )が用意する EFI 用のブートローダの在り処が記録されないという不具合?があるようで、 NVRAM にブートローダ情報がない場合に強制的に読みに行く場所に指定した名前でブートローダを置けば解消する、と。

[From VirtualBoxのEFI有効な仮想マシンにインストールしたLinuxを一発で起動する - Soukaku's HENA-CHOKO Blog]

自分で VirtualBox 上に EFI を有効にした仮想マシンを用意して、インストールしてみましたが、インストール完了後に再起動、一旦仮想マシンを電源 OFF にして立ち上げ、とやっても特に問題なく起動できました。

"Rspamd 1.6.0 has been released" ということなので

あまり周りで使っているという話を聞かない、 Rspamd ですが、1.6 のリリースがアナウンスされておりました。

Today, we release the new major version 1.6.0 of Rspamd. The most significant change in this version is the addition of Milter protocol support in Rspamd.

[From Rspamd 1.6.0 has been released]

実際は、アナウンスよりも先に、パッケージがアップデートされたので気がついたんですけど。

で、 1.6 から、rmilter の利用が非推奨(使えないわけではないが)となり、その代わりに Rspamd Proxy を利用して、 MTA との milter 接続を行うように変更されています。

The introduction of this feature also finally obsoletes the Rmilter project in honor of the new integration method.

[From Rspamd 1.6.0 has been released]

ということで、設定を一部変更してみた。

Rspamd 側は、 /etc/rspamd/local.d/worker-proxy.inc を、次のように。

milter = yes;	# enable milter mode
timeout = 120s;

#upstream "local" {
# default = yes;
# self_scan = yes;
#}

upstream "scan" {
default = yes;
hosts = "round-robin:127.0.0.1:11333:10";
# compression = yes;
}

この場合だと、ローカルで稼働する Rspamd でスキャンするようになってます。 "hosts" に Rspamd の稼働するサーバを複数羅列すると負荷分散が出来るようですが、自分のとこはそこまでは必要ないので、その設定はしてないです。
で、 Rspamd 自身を再起動して、正しく起動できれば、OK。

rspamd の Web UIの URLを 書き換える

さて、前回の落穂拾いです。

ところが、実際 Apache に対して設定してみたのだけど 500 Internel Server Error が出て上手く行かなかったので、結局 rspamd 側の設定でポート開放して、 iptables でアクセス元を絞る形に。

[From rspamd の Web GUI にアクセスしてみる - Soukaku's HENA-CHOKO Blog]

rspamd の Web UI の書き換え、 FAQ 通りに設定したのに上手く行かなかったといういうのは、前回書いた通り。

/var/log/apache2/error.log を眺めると、

[Thu Apr 27 16:18:59.762601 2017] [proxy:warn] [pid 14798] [client xxx.xxx.xxx.xxx:55948] AH01144: No protocol handler was valid for the URL /rspamd/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

と出力されているので、改めてその内容でクグってみたところ、

こんなエラーが出た.Pを指定したのにapacheにproxyに関するモジュールが入っていなかったのが原因の様だった.proxy,proxy_httpをロードするようにしたら解決した.

[From mod_rewriteによるURLの書きかえ - yuu_nkjm blog(2014-04-13)]

と書かれているサイトがあったので、早速 mod_proxy 関連のモジュールを有効にしてみることに。

rspamd の Web GUI にアクセスしてみる

rspamd をアップデートしたことで、使えるようなった機能があるので、いろいろと試してみよう

アップデートだけで結構な分量になってしまったので、フィルタについては別エントリーにて。バージョン上がったことで追加された機能もあるようなので、そのあたりの話もおいおい書いてきたいですね〜。

[From rspamd と rmilter をアップデート - Soukaku's HENA-CHOKO Blog]

ということで、まずは Web GUI から

Web GUI を有効にしてみる

と言っても、実際のところデフォルトの設定の状態でも、Web GUI は待受ポート 11334 で起動していて、下のような形で待ち受けしています。ただ、そのままでは localhost からの接続要求しか受け付けてくれないので、外部からも見れるように設定を変える必要があるというわけです。

root@vps2:~# lsof -i:11334
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rspamd 13943 root 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13943 root 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13945 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13945 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13946 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13946 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13948 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13948 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)
rspamd 13949 _rspamd 9u IPv4 905829 0t0 TCP localhost:11334 (LISTEN)
rspamd 13949 _rspamd 10u IPv6 905830 0t0 TCP localhost:11334 (LISTEN)

手っ取り早いのは、 rspamd 自身が待ち受けしている 11334/tcp を localhost 以外からアクセスできるよう設定することなんだけど、それはそれで芸がないし、無制限にアクセスを許可するのもよろしくないので、rspam の FAQ の中にある WebUI questions の部分に記述されている httpd からリダイレクトさせる方法で。

ところが、実際 Apache に対して設定してみたのだけど 500 Internel Server Error が出て上手く行かなかったので、結局 rspamd 側の設定でポート開放して、 iptables でアクセス元を絞る形に。

rspamd と rmilter をアップデート

ここ 2 年半ぐらい、rspamd を使い続けているサーバ、動作上特に不満があるわけでもなかったのだけど、

以前、インストールメモをエントリーとしてあげていた、 rspamdrmilter の組み合わせ、なかなか調子良く動作してくれている。

[From rspamd + rmiter の組み合わせに、ClamAV を連携させてみた - Soukaku's HENA-CHOKO Blog]

2週間ほど前から、そのサーバが受信・配送したメールに Spam がチラホラ紛れ込んでくるようになったので、「こりゃ自前でフィルタ書かんと駄目かな~」と思いつつ、公式サイトをチェックしてしてみたら…。

Rspamd is also available in some versions of Debian and Ubuntu. However, we are looking for an active maintainer for rspamd in these ‘official’ repos, as now rspamd is terribly outdated there.

Please DO NOT use those packages, as they are no longer supported.

[From Downloads]

「パッケージ、アップデートされねぇなぁ、 sid なのに…」とは感じてたんですけどね、「メンテナ探してるんだけど、 Debian/Ubuntu の公式サイトで配布してるのは古いんで使わないでね。」という状況だったはつゆ知らず…。

ということでフィルタを書く前に、公式サイトに書いてある手順を元に、最新バージョンの rspamd / rmilter にアップデートしてみた。

ということで、以下作業手順とログ

まず、現時点で、インストール済みのバージョンは、以下の通り。

root@vps2:~# dpkg -l rspamd rmilter
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==================-==============-==============-=========================================
hi rmilter 1.6.3 amd64 Another sendmail milter for different mai hi rspamd 0.9.9+b1 amd64 Rapid spam filtering system

公式サイトで見ると、 rspamd は 1.4.4 、rmilter は 1.10 が最新のようなので、随分とバージョンが上がってますね…。

ansible のお試しがてら、 Raspberry に Python MPI 環境を作ってみる

サーバを同一用途で複数台用意してある環境って、仕事関係ではフツーにある環境なわけですが、それらの設定変更となると、同じ手順を台数分だけ繰り返し。なるべく作業者のレベルに左右されないような手順を用意したとしても、稀に手順ミスってトラブルなんてことも起きちゃうわけですよ。
作業者しても、出来る限り楽したいですし、定型化可能な作業だったら、コマンド一発で対象全台に設定適用したり、必要なファイルを配布したり出来れば、余計な手順やミス発生のリスクも減らせて、万々歳。

というわけで、オープンソース界隈でも「構成管理ツール」と言われるものが、いくつか開発されているんですが、その中でも ansible が、最近はお薦めらしので、ちょっといじってみようかと思った次第。

Ansible seamlessly unites workflow orchestration with configuration management, provisioning, and application deployment in one easy-to-use and deploy platform.

[From Ansible Use Cases]

Ansible(アンシブル)は、レッドハットが開発するオープンソースの構成管理ツールである。構成管理に加え、オーケストレーションやソフトウェアデプロイメントの機能を持つ。

[From Ansible (ソフトウェア) - Wikipedia]

同じようなツールだと、 Chef や Puppet と言うものもあるようですが、

  • エージェントレスで、管理したい側へは ssh 接続出来れば良い

と、利用するまでの敷居が低い、というのもお薦めのポイントになっているようです。

とりあえず、ラズパイ Cluster (モドキ)を構成してみる準備

まずは構成

今のところ、Raspberry Pi3 は1台しかないので、それを管理対象に。それと別に管理サーバとして Debian sid を仮想マシンで準備して、ここに ansible をインストール、という非常にミニマムな構成です。

ansibleのテスト環境

図にも書いてある通り、ホントは何台も並べて、クラスタリングしたいんですけどね…。

これに関してはどっちかというと、親である自分のほうが複数台並べて Rasp Pi クラスタ組んでみたいという気持ちのほうが大きかったりしますけど、息子もプログラミング自体には興味があるようなので、作ったクラスタで一緒に遊ぶってのも出来るなぁ、とかとか。

[From 子供に PC を渡そうと思ってるんですけどね - Soukaku's HENA-CHOKO Blog]

ま、 ansible に慣れることが目的なので、このまま進めます。

HA8000の中古を手に入れるなど

ヤフオクも上手く立ち回れば、かなりの掘り出し物を手にすることが出来るわけですが、今回はホント上手くいったということで、HA8000/TS10 AK1 という日立の IA サーバの中古を入手することに成功しました。

2010 年後半に出たモデルですが、Xeon X3430 が載ってて、それに LSI Logic の MegaRAID SAS 2108 が載って RAID も組めるぜ〜、というのが、送料込みで 3,000 円以内で手に入ったんだから、これはもう小躍りするほかないという状況。あと、出品者側の説明にはなかった SCSI I/F と DAT72 ドライブが載ってたというオマケも付きましたし…。(ただ、媒体の容量的には DAT72 、微妙なんだよねぇ…。)

ここ二週ほど、ちまちまと動作の確認をしていたんですが、DVD-ROM ドライブが動作不良でメディアを認識出来ない状態だったこと以外は、特に問題なし。
USB - SATA 変換ケーブル経由で繋いだスーパードライブ使えば、OS インストールできるし、何故か余らせてた ECC 付き の DDR3 DIMM も難なく認識してくれたし、HDD もこれまた手持ちの SATA の 1TB のものをホットスワップベイに挿して問題なく認識してくれたので、手持ちのコマで通常利用可能な状態まで持っていけたというのも、(お財布的に)かなり助かったなぁ、と…。

この先、どうするか、ですが

そもそも、新しく機材を調達しようと思ったのは、 Mac mini や LIFEBOOK で動かしていた VirtualBox による実験環境を集約。これにより、 LIFEBOOK を用途的に浮かすことが出来れば、家族が使っている調子の悪い ThinkPad をそれで置き換えられるな、というのが発端。
そこになんともタイミング良く、今回入手した HA8000 がヤフオクに出品された、というわけ…。

結局、GoogleAnalyticsプラグインが悪さしていたようで

MySQL から MariaDB にリプレースしたら MovableType のダッシュボードにアクセスできなかった件、実際には管理画面だけでなく、ブログ内の記事検索なんかもうまく動かないという状況だったわけですが…。

"GoogleAnalytics::Provider" に対応する Perl モジュールは存在しているので、内部的に何か不整合があって、うまくアクセスできないという状況の模様。

MovableType と MariaDB の組み合わせでエラー? - Soukaku's HENA-CHOKO Blog

復旧させるために色々試行錯誤。仮想マシン上に Debian sid インストール。そこにトラブっているのとほぼ同等の環境準備して、新規に MovableType インストールしてみたり、テスト環境と本番の間で DB のエクスポート/インポート繰り返してみたり、とやっていたわけですが…。
ふと「MovableType を今とは別のディレクトリにインストールして、テンプレート類はコピー、設定ファイルの PATH だけ書き換えてみたら動くかも?」と思いついて、実際にやってみたところ、管理画面へのログイン成功!