![NginxをKeepAliveで冗長化~さらにロードバランスでTomcatを負荷分散~](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-thumb7.jpg)
中山テック 代表の中山です。
さて、VMWareでやりたいことの集大成。
Keepaliveで冗長構成&VIPでの入り口作成⇒Nginxで受ける⇒主・副のtomcatにロードバランス。
と言ったことを実装したいと思います。
※Nginxの設定はこちらのブログで実装済みです
では早速やっていきましょう!
※Tomcat構築にあたりこちらのページを参考にさせて頂きました
目次
tomcat構築(CentOS側)
実装自体はpgpoolやNginxの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
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-36-1024x494.jpg)
OK、問題なしです!
tomcat × eclipse(Windows側)
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-37-1024x660.jpg)
お次はTomcatで動作可能な形式「war」ファイルの作成に移ります。
Eclipseという開発ソフトを使って作成します。
まずはウインドウ⇒ビューの表示⇒サーバーを選択して上記画面を出します。
そしてリンクをクリック。
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-38.jpg)
※既にTomcatを落としている場合は飛ばしてください
まず何も入っていないので「ダウンロードしてインストール」でtomcatを導入しました(面倒くさいし
そしてダウンロードしたフォルダを指定。
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-39.jpg)
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-40-1024x419.jpg)
サーバを選択したらこんな感じの画面に遷移します。
起動はしておりませんので緑のボタンでスタートさせます。
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-41-1024x571.jpg)
OK!
動的 Web プロジェクト
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-42-1024x619.jpg)
まずはWEB上で動かすためのプログラムを組み込みます。
と言ってもindex.htmlでプライマリかセカンダリを区別したいためですが・・・
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-43-1024x458.jpg)
index.htmlはwebapp配下に置きます。
そして通信確認
WAR作成
簡単な内容ですが、作り終えたら拡張子「war」形式のファイルを作成します。
※プロジェクトを右クリック⇒エクスポート⇒エクスポートで実現可能
これはtomcatがWEBページとして展開可能な内容となっております。
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-44.jpg)
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-45.jpg)
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-47-1024x583.jpg)
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-46.jpg)
KeepAlive
片系が落ちても、もう片方で賄う。つまり、フェイルオーバーを実現可能です。
他VIPの払い出しも可能で、設定したらTomcat構成のアプリはVIP向けにHTTP通信を行います。
yum -y install keepalived
続いて、confファイルの設定を行います。
まずは主系
※【追記】unicast_peerに自分のIPを入れてましたが、これは1対1での定義なので対向のIPのみをいれましょう!advert_int秒ごとにエラーが出てしまいます
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を付けない場合は再起動後リセットされるので注意
検証
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-48-1024x538.jpg)
まずはSECONDARYサーバの画面が表示
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-49-1024x538.jpg)
PRIMARYサーバの画面も表示!問題なし!
※毎回交互に出るわけではないので注意してください
まとめ
![](https://nakayama-tech.com/wp-content/uploads/2024/02/blog-20240217-50-1024x837.jpg)