802.3ad file di configuration di incollaggio su un server LTS Ubuntu 16.04

Se utilizzo una configuration manuale nella row di command (seguendo le istruzioni del kernel ), posso configurare correttamente la mia connessione di networking:

# modprobe bonding mode=4 miimon=100 # ifconfig bond0 up # ip link set eno1 master bond0 # ip link set eno2 master bond0 

Per il record, l'interruttore utilizzato è un Cisco Nexus 2248 e non specifico un indirizzo IP perché esiste un ulteriore livello 802.1q (la cui presenza o assenza nel file di configuration non ha alcun impatto sul problema).

Il problema è che non riesco a creare un /etc/network/interfaces corretto per farlo automaticamente all'avvio. C'è molta confusione in linea tra le diverse versioni del pacchetto ifenslave, in particolare la documentazione, e su come evitare le condizioni di gara quando si utilizza ifup. Tutto ciò che ha funzionato con le versioni precedenti di Ubuntu non è più. E non sarei sorpreso se sistemassero le cose ancora più disordinate. Fondamentalmente, qualunque cosa provo, i miei script si bloccano all'avvio e devo aspettare uno o cinque minuti prima che il process di avvio completi.

Questo è il migliore che potrei raggiungere:

 auto lo iface lo inet loopback allow-bond0 eno1 iface eno1 inet manual bond-master bond0 allow-bond0 eno2 iface eno2 inet manual bond-master bond0 auto bond0 iface bond0 inet manual bond-mode 4 bond-slaves eno1 eno2 bond-miimon 100 

Al momento dell'avvio del sistema, il bond0 stacca per un minuto (perché bond0 aspetta che alless uno dei suoi slave venga portto in su, che non succeda mai, quindi si esaurisce), ma poi una volta che il sistema viene avviato, usando ifup eno1 funziona e bond0 inizia a funzionare correttamente.

Se specifico auto eno1 , allora il process di avvio si ferma per cinque minuti, bond0 non viene mai riprodotto correttamente e cerca di usare ifdown eno1 bloccato perché sta aspettando qualche block in /run/network/wherever (non riesco a ricordare file esatto e hanno già riavviato la macchina già spesso), che sembra indicare che sì, ho incontrato una condizione di gara e ifup è bloccato per sempre con eno1.

Qualcuno ha una soluzione di lavoro sull'ultimo Ubuntu?

  • Utilizzo dell'authentication delle chiavi ssh e disabilitazione dell'authentication della password ssh - cosa succede se la chiave privata è stata persa?
  • samba non comincia su ubuntu
  • Come rimuovere il pacchetto da apt-get autoremove "coda"
  • Grub 1.99 predefinito?
  • Qual è la causa di interruzioni LOC elevate?
  • Forza un server senza testa per caricare i driver video per la GPU?
  • Perché non posso installare mongodb 3.0 su Ubuntu 14.04 32bit?
  • Una cache SSD aumenta le performance ZFS native per me?
  • 4 Solutions collect form web for “802.3ad file di configuration di incollaggio su un server LTS Ubuntu 16.04”

    Ho un'installazione funzionante in esecuzione il 16.04 (linux 4.4.0-22) che è molto simile.

    A parte il tasso LACP e l'1G (eno1 +) vs 10G SFP + (eno49 +) la differenza più grande sembra essere l'utilizzo di auto bond0 .

     # /etc/modprobe.d/bonding.conf alias bond0 bonding options bonding mode=4 miimon=100 lacp_rate=1 

    Alcune di queste opzioni possono essere ridondanti.

     # /etc/network/interfaces auto eno49 iface eno49 inet manual bond-master bond0 auto eno50 iface eno50 inet manual bond-master bond0 auto bond0 iface bond0 inet static address 10.0.0.1 netmask 255.255.255.0 bond-slaves eno49 eno50 bond-mode 4 bond-miimon 100 bond-lacp-rate 1 

    Non vedere le bancarelle durante l'avvio. Fare un systemctl restart networking una breve attesa di pochi secondi, ma nient'altro.

     $ systemd-analyze Startup finished in 2.344s (kernel) + 1.658s (userspace) = 4.002s 

    Ho anche una configuration di legame di lavoro il 16.04, e la mia configuration funziona bene su Ubuntu dal 12.04, invariata.

    La mia soluzione è praticamente la stessa di quella da @timss ma non ho mai dovuto confondere con /etc/modprobe.d/bonding.conf e ci sono alcuni dettagli che ho trovato necessari nel tempo che ho incluso qui sotto e commenterò fine.

    Di seguito, ho interfacce eth2-et5 legato su bond0

     auto eth2 iface eth2 inet manual bond-master bond0 auto eth3 iface eth3 inet manual bond-master bond0 auto eth4 iface eth4 inet manual bond-master bond0 auto eth5 iface eth5 inet manual bond-master bond0 auto bond0 iface bond0 inet manual hwaddress ether 00:00:00:00:00:00 <= ADD MAC of one of the bonded interfaces here bond-slaves eth2 eth3 eth4 eth5 bond-miimon 100 bond-mode 802.3ad bond-lacp-rate 1 xmit_hash_policy layer3+4 

    Commenti:

    1. "hwaddress ether": ho notato che quando si legano le interfacce, l'indirizzo MAC dell'interface collegata sarà uguale all'indirizzo MAC di una delle interfacce collegate, ma può cambiare each volta che il sistema viene riavviato. Ritengo utile per i server avere un indirizzo MAC noto, quindi qui l'ho impostato sul MAC di una delle interfacce in un modo che sarà permanente.
    2. "xmit_hash_policy": leggere i documenti relativi a questa opzione, può avere un impatto molto significativo sulle performance dell'interface legata.

    È necessario consentire al sistema di portre l'interface di legame anche quando le porte slave non sono pronte per ottenerla configurata per tutto il tempo, "bond-slaves none" lo fa. Esempio di configuration corretto:

     allow-hotplug eno1 iface eno1 inet manual bond-master bond0 allow-hotplug eno2 iface eno2 inet manual bond-master bond0 auto bond0 iface bond0 inet manual bond-mode 802.3ad bond-miimon 100 bond-lacp-rate fast bond-slaves none bond-xmit_hash_policy layer2+3 

    Ho trovato un brutto hack per cui non mi piacerebbe avere alcun credito, ma spero che aiuterà le persone a iniziare e fare cose più importnti in attesa di una corretta risposta / correzione:

     auto bond0 iface bond0 inet manual pre-up modprobe bonding mode=4 miimon=100 pre-up ifconfig bond0 up pre-up ip link set eno1 master bond0 pre-up ip link set eno2 master bond0 up /bin/true down /bin/true post-down ip link set eno2 nomaster post-down ip link set eno1 nomaster post-down ifconfig bond0 down post-down rmmod bonding 

    Si tratta piuttosto di sovraccaricare tutti gli script ifup. Ci sono messaggi di errore visualizzati quando si fa ifdown bond0 ma da design ifdown continua a eseguire gli script restanti e il sistema finisce pulito (è ansible passare attraverso ifup / ifdown), quindi non mi sento costretto a risolvere questo problema.

    Inoltre, poiché gli schiavi sono curati nello script del master, non c'è bisogno di dichiararli nel file di configuration.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.