NginxをKeepAliveで冗長化~さらにロードバランスでTomcatを負荷分散~

中山テック 代表の中山です。

さて、VMWareでやりたいことの集大成。

Keepaliveで冗長構成&VIPでの入り口作成⇒Nginxで受ける⇒主・副のtomcatにロードバランス。

と言ったことを実装したいと思います。

※Nginxの設定はこちらのブログで実装済みです

では早速やっていきましょう!

※Tomcat構築にあたりこちらのページを参考にさせて頂きました







  • VMware × CentOS関連索引

実装自体はpgpoolNginxのDigest認証に比べたらかなり楽な作業です。

Tomcatのインストール⇒管理ページのインストール⇒8080ポート開放⇒Tomcatスタートの流れ位だからです。

下記の手順で実現可能です。

yum -y install tomcat
yum -y install tomcat-webapps
firewall-cmd --permanent --zone=public --add-port=8080/tcp
systemctl enable tomcat
systemctl start tomcat

OK、問題なしです!

tomcat × eclipse(Windows側)

お次はTomcatで動作可能な形式「war」ファイルの作成に移ります。

Eclipseという開発ソフトを使って作成します。

まずはウインドウ⇒ビューの表示⇒サーバーを選択して上記画面を出します。

そしてリンクをクリック。

※既にTomcatを落としている場合は飛ばしてください

まず何も入っていないので「ダウンロードしてインストール」でtomcatを導入しました(面倒くさいし

そしてダウンロードしたフォルダを指定。

サーバを選択したらこんな感じの画面に遷移します。

起動はしておりませんので緑のボタンでスタートさせます。

OK!



  • システム開発関連記事

動的 Web プロジェクト

まずはWEB上で動かすためのプログラムを組み込みます。

と言ってもindex.htmlでプライマリかセカンダリを区別したいためですが・・・

index.htmlはwebapp配下に置きます。

そして通信確認

WAR作成

簡単な内容ですが、作り終えたら拡張子「war」形式のファイルを作成します。

※プロジェクトを右クリック⇒エクスポート⇒エクスポートで実現可能

これはtomcatがWEBページとして展開可能な内容となっております。

作ったアプリを右側に移動
これで「http://localhost:8080/test-ntechでアクセス可能
プロジェクト右クリック⇒エクスポート⇒WARファイルで簡単作成
WARは配置したら展開してくれます。tomcatの起動もお忘れなく

KeepAlive

片系が落ちても、もう片方で賄う。つまり、フェイルオーバーを実現可能です。

他VIPの払い出しも可能で、設定したらTomcat構成のアプリはVIP向けにHTTP通信を行います。

yum -y install keepalived

続いて、confファイルの設定を行います。

まずは主系

vi /etc/keepalived/keepalived.conf

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 192.168.230.132 # 自身のIP(主系)
    unicast_peer {
        192.168.230.133 # KeepAlive対象はNginx(副系)
    }
    virtual_ipaddress {
      192.158.230.50/24
    }
}

VIPは空いてるIPなら何でもOK。

今回は末尾50のIPアドレスを設定します。

続いて副系

! Configuration File for keepalived

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 192.168.230.133 # 自身のIP(福系)
    unicast_peer {
        192.168.230.132 # KeepAlive対象はNginx(主系)
    }
    virtual_ipaddress {
      192.168.230.50
    }
}

デフォルトだと/var/log/messagesにログ出力されてしまいますので、/var/log/keepalivedに出るよう設定しましょう。

このサイトがわかりやすいのでご参照くださいませ。

全ての設定が完了したら例のごとく自動実行&スタート

systemctl enable keepalived
systemctl start keepalived

★「ip a」で対象ネットワークIFに下記VIPが指定されていればOK

inet 192.168.230.50/32 scope global ens33

Nginxロードバランス設定

主系、副系のnginx.confファイルを修正します。

※upstreamはserverの外に、proxy_passはhtml形式で

server_nameは送り元のIPアドレス。

localhostも設定可能で、今回はVIP経由でのアクセスになるので指定します。

upstream my_upstream {
  server 192.168.230.130:8080; # APIサーバ(主系)Active
  server 192.168.230.131:8080; # APIサーバ(副系)Active
} # server外に記載



~~~中略(以降server内)~~~


server_name  192.168.230.50;

location / {
    proxy_pass http://my_roadbalance;
}

(2024/2/24 追記)

http通信できない場合の設定は「firewall-cmd」を使用します。

firewall-cmd --zone=public --add-service=http --permanent

★--permanentを付けない場合は再起動後リセットされるので注意

検証

まずはSECONDARYサーバの画面が表示

PRIMARYサーバの画面も表示!問題なし!

※毎回交互に出るわけではないので注意してください



まとめ

実現しました!

さて、長かったVMWareとCentOSにサーバを構築するシリーズ、いかがでしたでしょうか。

原理さえわかってしまえばそんなに難しくないのですが、いかんせん手順の多い事多い事・・・

流石に疲れたのでもうやらない(笑

ですが、もし構築作業されている方がいて、手助けになった!と思って頂けたら幸いです。

設定値はこちらから


  • VMware × CentOS関連索引

※中山テックに掲載しているゲーム画像の著作権、商標権、その他知的財産権は、当該コンテンツの提供元に帰属します


おすすめの記事