GNU/Linux >> Belajar Linux >  >> Linux

Kedua server berjalan keepalived menjadi master dan memiliki Virtual IP yang sama

Solusi 1:

Paket tidak melewati antar mesin pada antarmuka em1 (menyebabkan skenario otak terbelah seperti yang dinyatakan Mike).

  • periksa firewall Anda untuk memastikan paket tidak tertangkap
  • periksa jaringan Anda untuk memastikan em1 adalah jaringan yang sama di kedua mesin

Berikut ini contoh tampilan salah satu paket:

Frame 2: 54 bytes on wire (432 bits), 54 bytes captured (432 bits)
    Arrival Time: Jun  1, 2013 03:39:50.709520000 UTC
    Epoch Time: 1370057990.709520000 seconds
    [Time delta from previous captured frame: 0.000970000 seconds]
    [Time delta from previous displayed frame: 0.000970000 seconds]
    [Time since reference or first frame: 0.000970000 seconds]
    Frame Number: 2
    Frame Length: 54 bytes (432 bits)
    Capture Length: 54 bytes (432 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ip:vrrp]
Ethernet II, Src: 00:25:90:83:b0:07 (00:25:90:83:b0:07), Dst: 01:00:5e:00:00:12 (01:00:5e:00:00:12)
    Destination: 01:00:5e:00:00:12 (01:00:5e:00:00:12)
        Address: 01:00:5e:00:00:12 (01:00:5e:00:00:12)
        .... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Source: 00:25:90:83:b0:07 (00:25:90:83:b0:07)
        Address: 00:25:90:83:b0:07 (00:25:90:83:b0:07)
        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    Type: IP (0x0800)
Internet Protocol Version 4, Src: 10.0.10.11 (10.0.10.11), Dst: 224.0.0.18 (224.0.0.18)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
    Total Length: 40
    Identification: 0x8711 (34577)
    Flags: 0x00
        0... .... = Reserved bit: Not set
        .0.. .... = Don't fragment: Not set
        ..0. .... = More fragments: Not set
    Fragment offset: 0
    Time to live: 255
    Protocol: VRRP (112)
    Header checksum: 0x4037 [correct]
        [Good: True]
        [Bad: False]
    Source: 10.0.10.11 (10.0.10.11)
    Destination: 224.0.0.18 (224.0.0.18)
Virtual Router Redundancy Protocol
    Version 2, Packet type 1 (Advertisement)
        0010 .... = VRRP protocol version: 2
        .... 0001 = VRRP packet type: Advertisement (1)
    Virtual Rtr ID: 254
    Priority: 151 (Non-default backup priority)
    Addr Count: 1
    Auth Type: No Authentication (0)
    Adver Int: 1
    Checksum: 0x3c01 [correct]
    IP Address: 10.0.0.254 (10.0.0.254)

Solusi 2:

Untuk kasus saya, saya harus mengizinkan lalu lintas multicast melalui firewall ke 224.0.0.18 , untuk ufw:

ufw allow from 224.0.0.18
ufw allow to 224.0.0.18

Ini membantu saya.

Solusi 3:

Dalam kasus saya, untuk CentOS/RHEL 8 saya hanya perlu mengizinkan aturan kaya firewall untuk protokol vrrp untuk menyelesaikan masalah otak terpisah Keepalived ini di mana kedua server menyimpan alamat IP VIP. Saya harus menambahkan flag kernel sysctl untuk mengizinkan HAProxy mengikat ke IP VIP nonlokal.

Untuk sysctl, tambahkan net.ipv4.ip_nonlocal_bind = 1 di /etc/sysctl.conf file lalu lakukan sysctl -p untuk memuat ulang konfigurasi sysctl. Saya memerlukan ini BUKAN untuk skenario otak terbelah Keepalived tetapi untuk memiliki HAProxy mengikat ke alamat IP-nya sendiri untuk statistik (mis:ikat 192.168.0.10:1492/stats) dan ikat ke alamat VIP (IP virtual) untuk web penyeimbang beban lalu lintas (mengikat 192.168.0.34:80 dan mengikat 192.168.0.34:443). Jika tidak, layanan HAProxy gagal memulai dengan menyatakan tidak dapat mengikat ke port 80 dan 443 hanya dengan alamat IP VIP. Saya melakukan ini untuk menghindari pengikatan *:80 dan pengikatan *:443. Juga, terasa seperti no-brainer tetapi mudah diabaikan, periksa untuk melihat apakah Anda telah mengizinkan port yang Anda gunakan untuk statistik melalui firewall jika Anda tidak dapat membuka halaman statistik.

Untuk firewall, jalankan perintah berikut:

# firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
# firewall-cmd --reload

Saya menemukan flag ini dan informasi lainnya langsung dari dokumentasi RedHat untuk HAProxy dan Keepalived:

Referensi firewall:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/s1-lvs-connect-vsa

Referensi flag pengikat nonlokal (ini digunakan untuk HAProxy karena saya tidak menggunakan Keepalived untuk penyeimbangan muatan):https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/load_balancer_administration/s1-initial -setup-forwarding-vsa

Just HAProxy FYI:Jika HAProxy masih gagal mengikat ke port, Anda mungkin ingin melihat SELinux yang baik memblokirnya. Bagi saya, pada CentOS 8 saya harus melakukan semanage port -a -t http_port_t -p tcp 1492 untuk halaman statistik HAProxy saya.


Linux
  1. Linux – Mengapa Linux Menampilkan Memori Lebih Banyak Dan Lebih Sedikit Daripada Yang Saya Instal Secara Fisik?

  2. Dapatkan Waktu Pengguna Dan Kernel Dari Proses yang Berjalan?

  3. Periksa Proses Jika Sama Sedang Berjalan?

  1. Menjalankan dua server SSH

  2. Pengguna apa yang harus menjalankan apache dan PHP? Izin apa yang harus dimiliki file /var/www?

  3. Mengapa Linux harus memiliki `/dev/cdrom` dan `/media/cdrom`?

  1. Menjalankan Script Dengan “. ” Dan Dengan “sumber”?

  2. Perbedaan Antara Aplikasi Gtk Dan Qt?

  3. Linux – Apakah Pengguna Harus Masuk Untuk Menjalankan Proses Dan Menjadi Pemiliknya?