中山テック 代表の中山です。
さて、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
OK、問題なしです!
tomcat × eclipse(Windows側)
お次はTomcatで動作可能な形式「war」ファイルの作成に移ります。
Eclipseという開発ソフトを使って作成します。
まずはウインドウ⇒ビューの表示⇒サーバーを選択して上記画面を出します。
そしてリンクをクリック。
※既にTomcatを落としている場合は飛ばしてください
まず何も入っていないので「ダウンロードしてインストール」でtomcatを導入しました(面倒くさいし
そしてダウンロードしたフォルダを指定。
サーバを選択したらこんな感じの画面に遷移します。
起動はしておりませんので緑のボタンでスタートさせます。
OK!
動的 Web プロジェクト
まずはWEB上で動かすためのプログラムを組み込みます。
と言ってもindex.htmlでプライマリかセカンダリを区別したいためですが・・・
index.htmlはwebapp配下に置きます。
そして通信確認
WAR作成
簡単な内容ですが、作り終えたら拡張子「war」形式のファイルを作成します。
※プロジェクトを右クリック⇒エクスポート⇒エクスポートで実現可能
これはtomcatがWEBページとして展開可能な内容となっております。
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を付けない場合は再起動後リセットされるので注意
検証
まずはSECONDARYサーバの画面が表示
PRIMARYサーバの画面も表示!問題なし!
※毎回交互に出るわけではないので注意してください
まとめ
さて、長かったVMWareとCentOSにサーバを構築するシリーズ、いかがでしたでしょうか。
原理さえわかってしまえばそんなに難しくないのですが、いかんせん手順の多い事多い事・・・
流石に疲れたのでもうやらない(笑
ですが、もし構築作業されている方がいて、手助けになった!と思って頂けたら幸いです。