オンプレのFessサーバをAWSに移行した際のメモです。
#Fessについて
公式サイト
https://fess.codelibs.org/ja/
「Fess (フェス) は「5 分で簡単に構築可能な全文検索サーバー」です。 Java 実行環境があればどの OS でも実行可能です。 Fess は Apache ライセンスで提供され、無料 (フリーソフト) でご利用いただけます。」
↓ 実際の検索画面は以下のような形です。
#移行前構成
- 社内のサーバ室にてオンプレ運用
- OSはwindows 7
- ローカルに保管したhtml(約60万ファイル)を検索
- SSL化未対応
- 日次で新しい検索対象ファイルをwebからダウンロードし、webクロールを実施
- 同じくオンプレのファイルサーバに日次でバックアップするタスクを起動
閉じたネットワーク内でしか使わないのであまり管理されていませんでした。
- AWSにWindows Server2019のEC2を立て、Fessをインストールする
- EIP付与
- ALB+ACMでSSL化する
- セキュリティグループで社内のグローバルIPからのみアクセスを受け付ける
- 頻繁に使うサーバではないので、CloudFormationのEC2 Schedulerを使って稼働時間以外は停止させて節約する
- CloudWatchでALBの死活監視を行い、lambdaからSNS経由でslack通知させる
- Fessのクロールに関する設定は現行踏襲
ユーザの使い勝手が変わらないようにという要件に沿って構成。
#移行概要
-
EC2構築
当初はt2.microで作成したのですが、以下の理由で後でt2.largeに変更しました。
- クロールが一日かかっても終わらない。(変更後は30分ほどに改善)
- 検索結果が表示されるのに非常に時間がかかる。(30秒→1秒に改善) -
Fessのインストール
EC2が完成したら、Fessをインストールします。
https://fess.codelibs.org/ja/quick-start.html#fess- ブラウザからインストールする時にはInternet Explorerセキュリティ強化をオフにする必要があります。
- Javaのインストール
- 公式サイトに従って最新版をインストールします。
https://www.oracle.com/java/technologies/javase-downloads.html
- 公式サイトに従って最新版をインストールします。
- インストールしたJavaのパスを環境変数を登録します。
3.Fess起動
- WindowsのECのパーソナルFW(Windows Defender)を開けないと、外部からfessとしてアクセス出来ませんでした。fessで利用するポート(デフォルト:8080)の穴あけをする必要あります。
4.Fessの設定
5.SSL化
SSL化するには固定ドメインが必要なので、取得済みのドメインからサブドメインを登録して利用します。
-
Route53登録
fess用のサブドメインを登録します。
レジストラ側のネームサーバの内容をRoute53側に登録します。
※画像はムームードメインのものです。
-
ACMからの証明書発行
ACMでパブリック証明書のリクエストを行い、取得したサブドメインを追加します。
サブドメインがACMに登録されたら、証明書をALBに登録してFessとしてアクセスが可能になります。
#移行時に困った点
-
構築当初はクロールに要する時間がとても長いので気をつける
-
実際の検索に時間がかかる時
- EC2のインスタンスタイプの変更で解消。
-
検索対象となるファイルの移行
- 最初は現行サーバのDBを移行しようと思ったのですが、現行に影響を与えないという移行方針から、対象となるファイルを手動でコピーしました。Mac上で
rsync
などのコピーコマンドを実行しましたが、どうしてもコピー中にエラーが生じる(新旧で検索結果の件数が異なる)ので何度も繰り返すこととなりました。
- 最初は現行サーバのDBを移行しようと思ったのですが、現行に影響を与えないという移行方針から、対象となるファイルを手動でコピーしました。Mac上で
#今後の課題
全体の構成をterraformで管理しようと思います。