Keepalived untuk lebih dari 20 alamat virtual

12

Saya telah menyiapkan keepalived pada dua mesin Debian untuk ketersediaan tinggi, tetapi saya telah mengalami jumlah IP virtual maksimum yang dapat saya tetapkan untuk komputer saya vrrp_instance. Bagaimana cara saya mengkonfigurasi dan gagal lebih dari 20+ IP virtual?

Ini adalah, sangat sederhana, pengaturan:

LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 -  10.200.85.200

Setiap mesin juga menjalankan Apache (nantinya Nginx) yang mengikat pada IP virtual untuk pemutusan sertifikat klien SSL dan proksi ke webserver backend. Alasan saya membutuhkan begitu banyak VIP adalah ketidakmampuan untuk menggunakan VirtualHost di HTTPS.

Ini adalah keepalived.conf saya:

vrrp_script chk_apache2 {
        script "killall -0 apache2"
        interval 2
        weight 2
}

vrrp_instance VI_1 {
        interface eth0
        state MASTER
        virtual_router_id 51
        priority 101
        virtual_ipaddress {
            10.200.85.100
            .
            . all the way to
            .
            10.200.85.200
}

Konfigurasi yang identik ada di mesin CADANGAN, dan berfungsi dengan baik, tetapi hanya sampai IP ke-20.

Saya telah menemukan HOWTO yang membahas masalah ini. Pada dasarnya, mereka menyarankan hanya memiliki satu VIP dan merutekan semua lalu lintas "melalui" IP yang satu ini, dan "semua akan baik-baik saja". Apakah ini pendekatan yang baik? Saya menjalankan firewall pfSense di depan mesin.

Kutipan dari tautan di atas:

ip route add $VNET/N via $VIP

or

route add $VNET netmask w.x.y.z gw $VIP

Terima kasih sebelumnya.

EDIT:

@ David Schwartz mengatakan masuk akal untuk menambahkan rute, jadi saya mencoba menambahkan rute statis ke firewall pfSense, tapi itu tidak berhasil seperti yang saya harapkan.

Rute pfSense:

Interface:            LAN
Destination network:  10.200.85.200/32 (virtual IP)
Gateway:              10.200.85.100    (floating virtual IP)
Description:          Route to VIP .100

Saya juga memastikan saya telah mengaktifkan penerusan paket pada host saya:

$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1

Apakah saya melakukan ini salah? Saya juga menghapus semua VIP dari keepalived.conf sehingga hanya gagal lebih dari 10.200.85.100.

cvaldemar
sumber
Saya pikir pendekatan itu masuk akal.
David Schwartz
... atau akankah saya membuat vrrp_inances tambahan masing-masing dengan blok 20 IP? Saya mungkin bisa mengelompokkan situs HTTPS yang dihosting dengan cara tertentu sehingga memberikan beberapa makna tambahan.
cvaldemar
Jaringan tujuan harus terdiri dari 20+ IP, bukan IP tunggal.
David Schwartz

Jawaban:

14

Solusi paling sederhana tanpa mengubah arsitektur Anda saat ini adalah dengan menggunakan virtual_ipaddress_excluded . Sebagai contoh

vrrp_instance VI_1 {
    interface eth0
    state MASTER
    virtual_router_id 51
    priority 101

    virtual_ipaddress {
        10.200.85.100
    }

    virtual_ipaddress_excluded {
        10.200.85.101
        . all the way to
        10.200.85.200
    }
}

virtual_ipaddress_excluded berisi daftar alamat IP yang disimpan akan muncul naik turun di server, namun mereka tidak termasuk dalam paket VRRP itu sendiri sehingga mereka tidak masuk dalam batas 20 alamat IP.

Dalam konfigurasi saya, saya ingin mengalokasikan IP khusus untuk virtual_ipaddress . yaitu salah satu yang disertakan dalam paket VRRP dan meletakkan semua yang lain di virtual_ipaddress_excluded . Ini adalah ide yang bagus karena Anda tidak ingin harus mengubah IP utama hanya karena seorang pelanggan pergi.

Johnf
sumber
Luar biasa. Saya melakukan ini alih-alih beberapa contoh vrrp. Anda juga membuat saya membaca dokumentasi yang disimpan. Terima kasih!
cvaldemar