LoginSignup
4
6

More than 5 years have passed since last update.

メールサービスの負荷分散

Last updated at Posted at 2017-03-08

概要

ロードバランサーを使って、メールサービスの負荷分散をする。

環境

  • 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

参考資料

ロードバランサー

postfixマルチインスタンス

yum

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6