🌐 Linux Apache 高可用性:Active-Active 二重ノード構成の完全デプロイガイド
単一の Apache サーバーは、障害点(SPOF)や性能の限界が発生しやすいという課題があります。 本記事では、2 台の Apache が同時に稼働する Active-Active 高可用性構成を Linux 上で構築する方法を、 負荷分散、ヘルスチェック、仮想 IP(VIP)、フェイルオーバー、コンテンツ同期まで含めて詳細に解説します。
📌 1. Active-Active とは?
Active-Active は複数ノードが同時にリクエストを処理する構成を指し、以下の利点があります:
- ⚡ パフォーマンス向上(負荷を分散)
- 🛡️ 高可用性(片方がダウンしてもサービス継続)
- 📈 スケーラビリティ(水平スケールが容易)
構成要素:
1. Apache — Web サーバーノード
2. HAProxy / Nginx — 負荷分散
3. Keepalived — VRRP + 仮想 IP + フェイルオーバー
4. rsync / Unison / GlusterFS — Web コンテンツ同期
📡 2. 全体アーキテクチャ
+----------------------------+
| VIP 192.168.1.200 |
| (Keepalived) |
+-------------+--------------+
|
+-------+--------+
| Load Balancer |
| (HAProxy/Nginx)|
+-------+--------+
|
+----------------+----------------+
| |
+----+-----------+ +----------+----+
| Apache Node A | | Apache Node B |
| 192.168.1.10 | | 192.168.1.11 |
+----------------+ +----------------+
🛠 3. Apache のインストール(両ノード)
# Rocky Linux / CentOS
sudo dnf install httpd -y
# Ubuntu / Debian
sudo apt install apache2 -y
sudo systemctl enable --now httpd
テスト用のページを作成(後でロードバランサーの動作確認に使用):
echo "Node A Web" | sudo tee /var/www/html/index.html
echo "Node B Web" | sudo tee /var/www/html/index.html
🔁 4. Web コンテンツ同期方法
方法 A:rsync(簡潔・片方向)
*/1 * * * * rsync -az /var/www/html/ root@192.168.1.11:/var/www/html/
方法 B:Unison(推奨・双方向)
複数人で更新する環境に最適。
方法 C:GlusterFS(エンタープライズ向け)
リアルタイムでレプリケーションされるストレージ。
⚖️ 5. HAProxy / Nginx による負荷分散
方法 A:HAProxy(最も推奨)
sudo dnf install haproxy -y
/etc/haproxy/haproxy.cfg
frontend http-in
bind *:80
default_backend apache-backend
backend apache-backend
balance roundrobin
mode http
option httpchk
server web1 192.168.1.10:80 check
server web2 192.168.1.11:80 check
方法 B:Nginx を LB として使用
upstream apache_cluster {
server 192.168.1.10;
server 192.168.1.11;
}
server {
listen 80;
location / {
proxy_pass http://apache_cluster;
}
}
🏷 6. Keepalived + VIP フェイルオーバー
Keepalived は VRRP を用いて仮想 IP を提供し、 負荷分散層(LB)の冗長化を行うための必須コンポーネントです。
インストール
sudo dnf install keepalived -y
LB1(MASTER)設定
/etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 120
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.200
}
}
LB2(BACKUP)
state BACKUP
priority 100
起動
sudo systemctl enable --now keepalived
🧪 7. Active-Active 動作確認
while true; do curl -s http://192.168.1.200 | grep Node; sleep 1; done
以下のように交互に表示されれば成功:
Node A Web
Node B Web
Node A Web
Node B Web
📦 8. 障害テスト(必須)
sudo systemctl stop httpd # Node A を停止
curl http://192.168.1.200
結果:サービスは途切れず、Node B の応答が継続。
📘 まとめ
HAProxy、Apache、Keepalived による Active-Active 構成は、 高可用性、負荷分散、拡張性を同時に実現できる強力なアーキテクチャです。 API、企業 Web サイト、高トラフィック環境に最適で、必要に応じて Kubernetes や CephFS、 Redis セッション共有などの上位ソリューションへ発展させることも可能です。
🔗 関連記事
- Linux Firewall 統合:firewalld / iptables / nftables
- OpenVPN + PKI クライアントルーティングガイド
- Linux モニタリングツール:top, htop, glances, nmon, dstat
- Linux NFS 完全ガイド
— WWFandy・システム&ネットワークノート
沒有留言: