なりせなるてず

技術ブログにしたい

ネットワーク素人が、さくらクラウドで負荷分散構築した時のメモ4【Fileサーバー編】

前回のネットワーク素人が、さくらクラウドで負荷分散構築した時のメモ3【DBサーバー編】 - なりせなるてずからひき続きです。
今回で最終回です。

前回までの構成で以下のようになりました。
f:id:ichiy:20140509143327p:plain


今回はファイルサーバを構築します。

NFSとは

NFSとはWindowsで言うところの共有フォルダです。
Sambaとか、あとはデフォルトのグループ機能とかみたいなもんですね。

元々1台のサーバで運営してた頃はwebもDBもファイルも全部1台だったので気にしなくてよかったのですが、Webサーバーを複数にしたので例えば画像をアップロードするとロードバランサで振り分けられた方のWebサーバのみにしか画像は存在しない事になります。
それでは画像がある方のWebサーバに接続された時しか画像が表示されてないのでNFSの出番です。

NFSサーバに複数のwebサーバからアクセスすれば問題ありません。

rsyncで同期すればいいんじゃね?とか思ってたんですが、お互いがMasterになるのでちゃんと同期出来ないみたいです。
Nix::WebLab : lsyncd の双方向同期はヤメておけ!
実はNFSを導入前に試そうと思ったんですが、上記の記事見てガクブルしたので辞めました。

Fileサーバーの設定

NFSのインストール

さくらクラウドのコントロールパネルで当該サーバを選び、コンソールを開き次を入力します。

# yum -y install nfs-utils

インストールはこれだけです。簡単!

接続先の変更

もうyumを使わないので、ローカルネットワークに接続先を変更します。
当該サーバの電源操作からシャットダウンし、NICの接続先をローカル用のスイッチに変更します。
前回同様なのではしょります。

共有するディレクトリを作る
# mkdir -p /export/kyoyu

/exportディレクトリはNFSの共有用のディレクトリらしいです。
Windowsユーザーに教えるLinuxの常識(2):各ディレクトリの役割を知ろう(ルートディレクトリ編) (1/2) - @IT
「kyoyu」の部分は好きな名前にしてください

オーナーとグループの変更
# chown -R nfsnobody:nfsnobody /export
NFSの設定
# vi /etc/exports

設定ファイルを開いたら以下を書き込みます

/export/kyoyu 192.168.0.0/28(rw,all_spuash,sync) 

「/export/kyoyu」ディレクトリを192.168.0.0/28のIPアドレス帯域のユーザーに読み書き可能にし、読み書きするユーザーを「nfsnobody」にすると言った意味になります。
rwが読み書き可能
all_spuashがユーザーをnfsnobodyにする。上でディレクトリのオーナーをnfsnobodyに変更したのはこのためです。
syncは遅延書き込みを無効にします。

ポートの固定

NFSで使用するポートの固定をします

# vi /etc/sysconfig/nfs

設定ファイルを開いたら*PORT=数字となってる部分のコメントを解除します


NFSの起動

NFSはrpcbindが必要なので起動します

# /etc/rc.d/init.d/rpcbind start

nfs、nfslockを起動します

# /etc/rc.d/init.d/nfslock start
# /etc/rc.d/init.d/nfs start

自動起動するように設定します

# chkconfig rpcbind on
# chkconfig nfslock on
# chkconfig nfs on


FIleサーバー側の設定は以上です。

クライアント側の設定

今回はWebからのみFileサーバーにアクセスするので以下の設定をwebサーバに行います

rpcbindのインストール
# yum install rpcbind
iptablesの設定
# vim /etc/sysconfig/iptables  

以下を貼り付け

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 32765:32768 -j ACCEPT  
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT  
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT  
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 747 -j ACCEPT  
rpcbindの起動
# /etc/init.d/rpcbind start
rpcbindの自動起動設定
# chkconfig rpcbind on
マウント用ディレクトリの作成
# mkdir /home/mount

ディレクトリの場所は任意です

マウントする
# mount -t nfs 192.168.0.10:/export/kyoyu /home/mount

IPアドレスはFileサーバーのIPアドレスにしてください。



確認

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda3              97G   20G   72G  22% /
tmpfs                 1.9G     0  1.9G   0% /dev/shm
/dev/vda1              98M   52M   41M  57% /boot
192.168.0.10:/export/kyoyu
                       97G  4.5G   88G   5% /home/mount

マウントされた!(∩´∀`)∩ワーイ

あとは画像とかWebサーバー間で共有が必要なファイルのパスをマウント先にしてやることで読み書きが出来ます!


参考にしたサイト
はじめての自宅サーバ構築 - Fedora/CentOS - ファイルサーバの構築(nfs)
[CentOS6] NFSサーバ構築 - OSSでLinuxサーバ構築


最終回のまとめ

今回で、一番初めに貼った画像と同じ構成になりました。
f:id:ichiy:20140425121049p:plain

ここまで構成するのに勉強+調査+構築で5日もかかりました。
そもそもLinux触りだして1年半のペーペーに任せるべきことでは無いと思うのですが、僕と同じような境遇のプログラマーの皆さんの参考になればと思います。