#概要
ロードバランサーを使って、メールサービスの負荷分散をする。
#環境
- CentOS 6.7
#ロードバランサーの調査
取り扱うレイヤーによって以下の種類がある。
- L4 ・・・ LVS(Linux Virtual Server)など。
- L4-NAT (Network Address Translation)
- L4-DSR (Direct Server Return)
- L7 ・・・ nginxなど、リバースプロキシとも呼ぶ。
PostfixへのSMTPアクセスを分散させることを考える。
nginxはメールプロトコルのプロキシに対応しており、ユーザー認証のロジックを独自で定義することができる。
ここでは、ユーザー認証はPostfix側でSMTP AUTHを使って実施するので、L4(LVM)のロードバランサーを使用する。
#ネットワーク設計
一つのホスト内で擬似的に以下のようなロードバランシングを構築する。
- LVSで587番ポート(submission)と465ポート(SMTPs)をLISTENする。
- Postfixをマルチプルインスタンスモードで2インスタンス起動する。
- L4-NATで以下のようにラウンドロビン(rr)でアクセスを分散させる。
- {global IP}:587 -> 127.0.0.1:8025 or 127.0.0.1:9025
- {global IP}:465 -> 127.0.0.1:8465 or 127.0.0.1:9465
|
| {global IP}:587 (submission)
| {global IP}:465 (SMTPs)
+----------+
--------------------| LVS |---------------------
+----------+
|
127.0.0.1:8025 | 127.0.0.1:9025
127.0.0.1:8465 | 127.0.0.1:9465
+-------------------|-------------------+
+-----|-----+ +-----|-----+
| Postfix 1 | | Postfix 2 |
+-----------+ +-----------+
#LVS (Linux Virtual Server)
##IPフォワーディングを有効化
IPフォワーディングを有効にして、NATを使用できるようにする。
# sysctl.confを修正
$ sudo vi /etc/sysctl.conf
===
net.ipv4.ip_forward = 1
# sysctl.confの設定を有効化
$ sudo sysctl -p
##ipvsadmのインストール
ipvsadmをインストールしたが、ipvsモジュールがインストールされていない模様。
# インストール
$ sudo yum install ipvsadm
# バージョン確認
$ sudo ipvsadm -v
FATAL: Module ip_vs not found.
Can't initialize ipvs: Protocol not available
Are you sure that IP Virtual Server is built in the kernel or as module?
# カーネルモジュールを探す
$ sudo find / -name ip_vs.ko
(なし)
#おまけ
##nginx
nginxでもSMTPのロードバランシングを実現できるが、ユーザー認証をpostfix側でSMTP AUTHを使って実施したかったため、使用しなかった。
###yumのレポジトリURLを追加
$ sudo vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
###パッケージのインストール
$ sudo yum install nginx
$ nginx -v
nginx version: nginx/1.10.3
###httpsの設定
$ sudo vi /etc/nginx/conf.d/default.conf
server {
:
listen 443;
ssl on;
ssl_certificate {cert file path};
ssl_certificate_key {cert key file path};
:
###起動確認
$ sudo /etc/init.d/nginx start
#参考資料
##ロードバランサー
- Webエンジニアが知っておきたいインフラの基本 ~インフラの設計から構成、監視、チューニングまで~
- http://nginx.org/en/linux_packages.html
- https://www.nginx.com/resources/admin-guide/mail-proxy/
- http://www.harumaki.net/2015/04/22/oss-load-balancer_collection/
- http://knowledge.sakura.ad.jp/tech/274/
- https://www.server-world.info/query?os=CentOS_6&p=lvs
- http://dsas.blog.klab.org/archives/50664843.html
##postfixマルチインスタンス
##yum