็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐ŸŒ Linux Apache ้ซ˜ๅฏ็”จๆ€ง:Active-Active ไบŒ้‡ใƒŽใƒผใƒ‰ๆง‹ๆˆใฎๅฎŒๅ…จใƒ‡ใƒ—ใƒญใ‚คใ‚ฌใ‚คใƒ‰

    ๐ŸŒ 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 ใ‚ปใƒƒใ‚ทใƒงใƒณๅ…ฑๆœ‰ใชใฉใฎไธŠไฝใ‚ฝใƒชใƒฅใƒผใ‚ทใƒงใƒณใธ็™บๅฑ•ใ•ใ›ใ‚‹ใ“ใจใ‚‚ๅฏ่ƒฝใงใ™。


    ๐Ÿ”— ้–ข้€ฃ่จ˜ไบ‹

    — WWFandy・ใ‚ทใ‚นใƒ†ใƒ &ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใƒŽใƒผใƒˆ

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš