在高可用,多線路及系統(tǒng)維護的特殊情況下,我們通常會通過”ip addr ” 這一命令來添加一個隱形IP在相應的設備上,但是當我們在一個設備上添加多個ip的時候逼争,刪除某個IP的時候尤其要注意,下面通過幾個實例來說明劝赔,如下
root@localhost ~]# ip addr add 10.1.1.230/24 dev eth0
[root@localhost ~]# ip addr add 10.1.1.231/24 dev eth0
[root@localhost ~]# ip addr show
1: lo: mtu 16436 qdisc noqueue
? ? link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
? ? inet 127.0.0.1/8 scope host lo
? ? inet6 ::1/128 scope host
? ? ? valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
? ? link/ether 00:19:b9:ef:44:8b brd ff:ff:ff:ff:ff:ff
? ? inet 172.16.0.230/24 brd 172.16.0.255 scope global eth0
? ? inet 10.1.1.230/24 scope global eth0
? ? inet 10.1.1.231/24 scope global secondary eth0
? ? inet6 fe80::219:b9ff:feef:448b/64 scope link
? ? ? valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop qlen 1000
? ? link/ether 00:19:b9:ef:44:8d brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop
? ? link/sit 0.0.0.0 brd 0.0.0.0
當刪除10.1.1.230時誓焦,10.1.1.231 同時被刪除,如下
[root@localhost ~]# ip addr del 10.1.1.230/24 dev eth0
[root@localhost ~]# ip addr show
1: lo: mtu 16436 qdisc noqueue
? ? link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
? ? inet 127.0.0.1/8 scope host lo
? ? inet6 ::1/128 scope host
? ? ? valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
? ? link/ether 00:19:b9:ef:44:8b brd ff:ff:ff:ff:ff:ff
? ? inet 172.16.0.230/24 brd 172.16.0.255 scope global eth0
? ? inet6 fe80::219:b9ff:feef:448b/64 scope link
? ? ? valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop qlen 1000
? ? link/ether 00:19:b9:ef:44:8d brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop
? ? link/sit 0.0.0.0 brd 0.0.0.0
[root@localhost ~]# ip addr add 10.1.1.230/24 dev eth0
[root@localhost ~]# ip addr add 10.1.1.231/24 dev eth0
[root@localhost ~]# ip addr show
1: lo: mtu 16436 qdisc noqueue
? ? link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
? ? inet 127.0.0.1/8 scope host lo
? ? inet6 ::1/128 scope host
? ? ? valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
? ? link/ether 00:19:b9:ef:44:8b brd ff:ff:ff:ff:ff:ff
? ? inet 172.16.0.230/24 brd 172.16.0.255 scope global eth0
? ? inet 10.1.1.230/24 scope global eth0
? ? inet 10.1.1.231/24 scope global secondary eth0
? ? inet6 fe80::219:b9ff:feef:448b/64 scope link
? ? ? valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop qlen 1000
? ? link/ether 00:19:b9:ef:44:8d brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop
? ? link/sit 0.0.0.0 brd 0.0.0.0
當刪除 10.1.1.231時着帽,10.1.1.230 還在
[root@localhost ~]# ip addr del 10.1.1.231/24 dev eth0?
[root@localhost ~]# ip addr show
1: lo: mtu 16436 qdisc noqueue
? ? link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
? ? inet 127.0.0.1/8 scope host lo
? ? inet6 ::1/128 scope host
? ? ? valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
? ? link/ether 00:19:b9:ef:44:8b brd ff:ff:ff:ff:ff:ff
? ? inet 172.16.0.230/24 brd 172.16.0.255 scope global eth0
? ? inet 10.1.1.230/24 scope global eth0
? ? inet6 fe80::219:b9ff:feef:448b/64 scope link
? ? ? valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop qlen 1000
? ? link/ether 00:19:b9:ef:44:8d brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop
? ? link/sit 0.0.0.0 brd 0.0.0.0
通過上面我們可以發(fā)現(xiàn)杂伟,如果刪除的時候不小心仔細,可能會釀成悲劇仍翰,造成損失赫粥。那到底這一現(xiàn)象是怎么產(chǎn)生的呢?
原因是予借,在linux中只要在一個網(wǎng)卡上配置的ip是同一個網(wǎng)段的越平,那么它有Primary IP和Secondary address的區(qū)分,反之只要不是同一個網(wǎng)段的ip那么都是Primary IP灵迫;primary 和secondary 的關系就是一條鏈上的吊鏈結構中上面的那條主鏈中的IP就是Primary IP秦叛,Secondary address是主鏈結點的子鏈結點中的IP,一 旦主鏈上一個節(jié)點被刪除了瀑粥,那么它的子鏈也將不復存在挣跋,隨之被刪除.
要解決這疑問,可以通過調整一個參數(shù)來實現(xiàn)狞换,當一個primary地址被刪除時避咆,如果它有secondary地址的話舟肉,那么它的第一個secondary地址(長子)繼承被刪除的primary地址的位置成為primary地址,這樣就顯得很合理了查库,要不然在刪除 primary地址的時候路媚,如果有程序用secondary地址,那么要么延遲刪除樊销,要么程序崩潰整慎;起做法如下:
通過/proc可以配置一個選項,在當前Primary地址被刪除時可以將Secondary地址提升為Primary地址现柠,具體命令為 :
/sbin/sysctl net.ipv4.conf.eth0.promote_secondaries=1
設置重啟后仍然生效的方法:
echo "net.ipv4.conf.eth0.promote_secondaries=1" >>/etc/sysctl.conf
請看下列實例院领,刪除了先前的 scope global 10.1.1.230弛矛,inet 10.1.1.232/24 scope global 被提升了
[root@localhost ~]# ip addr del 10.1.1.230/24 dev eth0
[root@localhost ~]# ip addr show
1: lo: mtu 16436 qdisc noqueue
? ? link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
? ? inet 127.0.0.1/8 scope host lo
? ? inet6 ::1/128 scope host
? ? ? valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
? ? link/ether 00:19:b9:ef:44:8b brd ff:ff:ff:ff:ff:ff
? ? inet 172.16.0.230/24 brd 172.16.0.255 scope global eth0
? ? inet 10.1.1.232/24 scope global eth0
? ? inet6 fe80::219:b9ff:feef:448b/64 scope link
? ? ? valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop qlen 1000
? ? link/ether 00:19:b9:ef:44:8d brd ff:ff:ff:ff:ff:ff
4: sit0: mtu 1480 qdisc noop
? ? link/sit 0.0.0.0 brd 0.0.0.0