๐ 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・ใทในใใ &ใใใใฏใผใฏใใผใ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ