サーバー再構成しました

先日から取り組んでいたサーバーの再構成を行いました。
仮想PCとOS Xサーバーの組み合わせて構築しました。

仮想PC1 開発支援系

開発支援系のサービスを中心にした仮想PCで構築しました。OSはCentOS 7です。動かしているサービスは次のようなものです。

  • JIRA
  • Confluence
  • Stash
  • Subversion

データのバックアップは、VMwareの仮想フォルダを使って、仮想フォルダにrsyncとpg_dumpを使って、PostgreSQLのダンプデータとJIRAやConfluenceの添付ファイル、Stashのリポジトリデータを定期的にコピーするようにしました。シェルスクリプトを作って、それをCRONで定期実行するようにしました。
Subversionは、古いデータの読み込み用で変更しない形で運用しています。そのため、バックアップの対象から外して、現時点でのダンプデータを別に保存しています。

rsyncでのエラー

VMwareの仮想フォルダにコピーするときのrsyncですが、パーミッションの変更でエラーが出ます。rsyncでは「-a」オプションを使うとことが多いのですが、これを指定するとパーミッション
含めてコピーしますが、これがエラーになっていました。「-a」オプションを使わずに「-rlpt」を使うように変更しました。

VMwareの共有フォルダが見えない

VMwareの共有フォルダですが、設定しても当初はLinux上から見えないようです。ファイルシステムが追加されるので、カーネルが更新されると、VMware toolの再インストールが必要なようです。CentOSをインストール後、yumでアップデートが完了したら、再度、VMware Toolsをインストールしました。Open VMToolではドライバがバンドルされていないようなので、Fusionのメニューから再インストールしました。
その後、仮想PCに設定した共有フォルダが、「/mnt/hgfs」の下に見えるようになりました。

CRONで実行するスクリプト

こんな感じのスクリプトをCRONで動かすようにしました。


#!/bin/sh
# Directory
MIRROR_DIR="/mnt/hgfs/dev_rk_private"
APPDATA_DIR="/var/atlassian/application-data"
# Backup Database
PGDUMP="${MIRROR_DIR}/pgdump"
if [ ! -d ${PGDUMP} ]; then
    mkdir ${PGDUMP}
fi
rm -Rf ${PGDUMP}/jira.dump
rm -Rf ${PGDUMP}/confluence.dump
rm -Rf ${PGDUMP}/stash.dump
/usr/bin/pg_dump -U postgres -Fc jira > ${PGDUMP}/jira.dump
/usr/bin/pg_dump -U postgres -Fc confluence > ${PGDUMP}/confluence.dump
/usr/bin/pg_dump -U postgres -Fc stash > ${PGDUMP}/stash.dump
# Backup JIRA Data
DSTJIRADATA="${MIRROR_DIR}/jira_data"
if [ ! -d ${DSTJIRADATA} ]; then
    mkdir ${DSTJIRADATA}
fi
SRCJIRADATA="${APPDATA_DIR}/jira/data"
rsync -rlpt --delete "${SRCJIRADATA}" "${DSTJIRADATA}/"
# Backup Confluence Data
DSTCONFDATA="${MIRROR_DIR}/confluence_data"
if [ ! -d ${DSTCONFDIR} ]; then
    mkdir ${DSTCONFDIR}
fi
SRCCONFDATA="${APPDATA_DIR}/confluence/attachments"
rsync -rlpt --delete "${SRCCONFDATA}" "${DSTCONFDATA}/"
# Backup Stash Data
DSTSTASHDATA="${MIRROR_DIR}/stash_data"
if [ ! -d ${DSTSTASHDIR} ]; then
    mkdir ${DSTSTASHDIR}
fi
SRCSTASHDATA="${APPDATA_DIR}/stash"
rsync -rlpt --delete "${SRCSTASHDATA}" "${DSTSTASHDATA}/"

仮想PC2 ドキュメント管理

Confluenceに入れないドキュメントや、受け取った仕様書などは、Alfrescoで管理しています。Alfrescoを実行するサーバーも仮想PCに構築しました。OSは開発支援系と同じでCentOS 7です。

OS Xサーバー

OS Xサーバーは、DNSとファイルサーバーを実行するようにしました。仮想PCの共有フォルダに書き出されたファイルのバックアップも担当します。これには、TimeMachineを使うようにしました。ファイルサーバーのバックアップもTimeMachineです。
仮想PCの共有フォルダのバックアップに必要な容量とファイルサーバーのバックアップの必要な容量を合計すると、1.6TBくらいになりました。これをTimeMachineで世代バックアップもするので、大きな容量のディスクが必要になりました。
それと、クライアントのMacのネットワーク経由でのTimeMachineバックアップの保存する領域も必要です。
この領域の作成にはRAID 0で構築しました。バックアップをRAID 0にするのは抵抗感もあったのですが、データ本体は元の場所にも存在しており、重要なものは、外部メディアにもあるという状態なので、多重バックアップされている状態です。それならば、RAID 0で大きなディスクを用意するという運用でも問題がないと考えられるので、容量を優先しました。これで、6TBの保存場所が確保できました。

残っているもの

当面はこれで業務を再開できるので、一旦完了です。しかし、将来に向けて、次の機能を入れた仮想PCを追加予定です。

  • サーバー系のCI
  • iOS・OS X系のCI

現在の仮想PCを動かしているマシンでは心許ないので、もう一台、Mac Miniを追加して、構築です。

再構築は時間確保が大変

やる前から予想はしていましたが、サーバーの再構築はとにかく時間がかかります。クライアントと違って、保存しているデータがとても多いので、別のディスクにコピーするだけでも、数時間単位の作業になります。はじめから、拡張可能な形で設計しておくことが重要だと改めて思いました。

著書紹介

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
-
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn

目次