フェイルオーバークラスタ環境の構築の学習

　こんにちは。
　せっかく残業代を稼いだのに
　・4月に控えるバイクと車の税金
　・計画性もなしに一人暮らしを始めた
　・友人の結婚祝い
　…などの理由によりで一瞬でお金が溶けていき、今月分の給料がほぼ残っていおらず無一文のこまっちゃんです。
　とりあえずべっこう飴と白湯で生活したいと思います。


　さて、くだらない近況報告はさておき、私は今回のウェブテクデー(会社で用意してくれたお勉強の時間)で「Windows Server2016 におけるWSFC構築の学習」を行いました。

　構築をする内容の記事はいくらでもあるので、今回は組んでみた感想や学習内容を書いていこうかと思います。(構築の参考にはならないので注意してください)

#Windows Server2016 におけるWSFC構築の学習
　WSFCは、私が会社に入社して一番初めに会社のトレーナーに教えてもらった技術で、案件入りする前に一度自分で構築してみたいな～と軽い気持ちでお題を決めました。
　学習の時間では、結局Windows Server 2016を使った時間はほぼなく、大半をLinuxに費やすことになり、結局のところWSFC構成を組むことはなくなりました。
　理由は記事の途中で分かることになるので、暇つぶし程度に読んでいただけると幸いです。

##WSFC構成で組んでみる
**WSFCって何？**
・Microsoft社のサーバ向けOS、Windows Serverの機能の一つ。
・複数のサーバを束ねるクラスタリングを実現するもの。
・複数のコンピュータを一台のコンピュータのように統合的に運用し、どれか一台が欠けても稼働し続けることができるようにする。

　らしい。つまり冗長化構成ですね。

　何となくの概要を理解することができたので、構築して目と手で覚えていくスタイルで。
　が、構築途中に問題が発生。

**Windows Serverの構築を断念**
「メモリ足りなくね？」

　個人のPCのメモリは8GBであり会社のPCとあまりスペックは変わらないのだが、Windows Serverで構築する際には最低でもホストに4GBは欲しい。
　また、2GBずつを各ゲストに割り当てるとしても、おぞましいほどインストールに時間がかかる。ゲストであることを隠蔽してさらにHyper-Vを動かすとなると間違いなくスペックが足りないのだ。最低でも20GB程度は欲しいところであった。
　やはりサーバ構築の世界では長期的にサーバを動かせるようにある程度高スペックが求められることも学びつつ、こういう考え方がきちんとできるようになるとサーバの見積りもできるようになるんだろうなと考えることができた。

　残念ながらここでWindows Serverでの構築を断念。。。
　ファイルサーバ程度なら低スペックでも構築可能であるが、今回はどうしてもフェイルオーバークラスタリングを組みたい。

　仕方なくフェイルオーバークラスタが可能である「Linux-HA」で構築を行う事にした。

#Linux-HAでフェイルオーバーしたい
　幸いにも個人のPCだったため、会社のWi-Fiの面倒なプロキシ設定などを気にせずに気軽にyumコマンドを使用できる。
　しかしここでも問題が発生。。。

「構築の関連の記事、古いのばかりだ」

　フェイルオーバークラスタリングなどと最新の技術っぽい名前をしているが実はそんなに新しくない技術。一番わかりやすい記事の内容がRedHat系 5.5を使用した構築だった。
　今後RedHat系 5.5で構築することなんて絶対ないだろう(ありました)と思ったりもしたが、ここはCentOS 7でなんとか構築することに。調べながら構築することも学習の一部ですしね。

**基本的なLinux-HAを学習する上で基本となる構成**
　・サービスを提供する「アクティブサーバ」
　・予備機として待機している「スタンバイサーバ」
　の２台で構成される「アクティブ／スタンバイ」型のHA環境。

　基本的なサーバといっても考えることはたくさんあるらしいので、軽く列挙してみます。
　・ハードウェア障害を何処まで想定するか
　・制御するソフトウェアは何が必要か（適用範囲）
　・監視するソフトウェアの監視項目
　・データの共有はどうするか
　・障害発生から、サービス切り替えまでの所要時間（希望時間）
　・予期せぬ障害により系が切り替わらなかったときの対処

　最低でも以上の事は考慮した上で、HA環境を設計しなくてはいけないらしい。
　上記の項目について考慮した上で基本的なHA環境を設計するとなんとなく次のような感じに。

　・電源落ちたらフェイルオーバー
　・カーネルパニックとかマシンがおかしくなったらフェイルオーバー
　・ソフトウェアはとりあえずPIDのチェックだけにしてPIDが認識できなかったら再起動
　・ソフトウェアの再起動が不可能な状態だったらフェイルオーバー
　・データの共有はDRBDを使ってネットワークミラーリング
　・障害発生からサービス切り替え実行までの時間はとりあえず今回はサービスが切り替わらない程の問題が発生したら手動で対応

　深く追求していくときりがないので、有る程度の所で落としどころを見つけて設計しないと
　**障害に対して敏感すぎる構成**　や　**監視することがサーバに負荷をかけて障害を起こす**
という、「健康のためなら死んでも良い」的な構成になってしまうらしい。
サーバ障害発生時のダウン時間を短くしようとしすぎて、少しでも負荷がかかるとそれに反応してフェイルオーバーしてしまう環境である。Linux-HA自体が障害点になってしまわないように考慮して設計する必要がある。

　けっして万能なものではないらしい。

##というわけで構築を終えました。
**構築内容**
・クラスタ関連のソフトウェアのインストール
・Heartbeatの設定（ha.cf、authkeysの編集）
・クラスタに参加するサーバ（ノード）の名前の登録
・相互監視に使うインターフェースの指定
・相互監視に使うポートの設定
・監視パケットを送信する間隔、クラスタリソース管理ツールの使用の設定
・相互監視通信で使用する認証キーの設定
・メタデータの作成
・初期同期
・仮想IPアドレスの設定
・DRBDをマウント
・DRBDの設定
・Pacemakerの設定
・起動順序の設定
・クラスタ環境の確認

　いや、そこをカットするのかよと思うかもしれませんが、すみません、構築ログを普通に自分で削除してしまっていました。ここからは苦労したことや感想になります。

・何より時間がかかる。
　今回は設計の内容はサイトを参考に何も考えずに構築したが、これは自分で考えて構築すると非常に時間がかかる。考えることは多い。

・yumインストールが出来なくなる事件
　クラスタ構成なので2台の仮想サーバに設定をしたわけだが、1台なぜかネットワークにつながらない。原因はHyper-Vだったがまさか割り当てるスイッチを間違えるとは思わなかった。こういうケアレスミスは極力減らしていきたいですね。

・WinSCPは非常におすすめのソフト
　何も考えずにゲストにホストからファイル転送を行うことが出来る。思考停止していても平気なのでおすすめ。
　https://forest.watch.impress.co.jp/library/software/winscp/

・CentOS 5 と同じように 7 では構築できない。
　これは今回の構築に限らないが、特にyum関連の設定は同じように構築できない。cpコマンドで専用ディレクトリにコピーすることすら苦労することになる。

　結局のところ、サーバを構築しただけなので大した成果になりませんでしたが、私的には基本的な知識や構築の知識を得ることが出来たため上出来です。
　もう少し時間があれば構築途中の画像などを記事にまとめておきたいところでしたが、今は目の前の案件をこなし経験を積みたいと思います。
　もしまたウェブテクデーの時間を使えるくらいの余裕ができたら今度は構築手順やアレンジを加えられるようにしてみたいと思います。
　以上がウェブテクデーの作業報告です。ありがとうございました！
　
**参考サイト**
http://e-words.jp/w/%E3%83%95%E3%82%A7%E3%83%BC%E3%83%AB%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0.html

https://linux-ha.osdn.jp/wp/archives/1338

https://qiita.com/tukiyo3/items/24eec798393cac3cdca3

https://ja.wikipedia.org/wiki/Linux-HA