You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by Nux! <nu...@li.nux.ro> on 2019/05/01 13:59:57 UTC
Re: Cloudstack-agent gets the local IP address exception
I ran into a similar problem when I tried to allocate an additional IP on the agent machine (for other purposes), the hypervisor would then show up in the UI with this new IP and in "Alert" state.
I solved the problem by moving the IP out of br0 and on to the loopback interface.
--
Sent from the Delta quadrant using Borg technology!
Nux!
www.nux.ro
----- Original Message -----
> From: "li jerry" <di...@hotmail.com>
> To: "users" <us...@cloudstack.apache.org>, "dev" <de...@cloudstack.apache.org>
> Sent: Monday, 22 April, 2019 14:36:51
> Subject: Cloudstack-agent gets the local IP address exception
> HI All
>
>
> my kvm host [ip:10.226.16.11] virtualized a vip[10.226.16.10] via keepalived.
>
> After I started the cloudstack-agent, I got vip[10.226.16.10] and I couldn't get
> the correct IP [10.226.16.11];
>
> Can I have any way to get the cloudstack agent to get the correct IP address?
>
>
>
> Cloudstack 4.11.2
> CentOS 7.5
>
>
>
> br2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group
> default qlen 1000
> link/ether ac:1f:6b:ba:96:ea brd ff:ff:ff:ff:ff:ff
> inet 10.226.16.11/24 brd 10.226.16.255 scope global noprefixroute br2
> valid_lft forever preferred_lft forever
> inet 10.226.16.10/24 scope global secondary br2
> valid_lft forever preferred_lft forever
> inet6 fe80::1456:f9ff:fe06:6228/64 scope link
> valid_lft forever preferred_lft forever
Re: Cloudstack-agent gets the local IP address exception
Posted by Nux! <nu...@li.nux.ro>.
Thanks Wei, I've opened a proper issue for this, hope your fix gets applied.
https://github.com/apache/cloudstack/issues/3311
--
Sent from the Delta quadrant using Borg technology!
Nux!
www.nux.ro
----- Original Message -----
> From: "Wei ZHOU" <us...@gmail.com>
> To: "dev" <de...@cloudstack.apache.org>
> Cc: "users" <us...@cloudstack.apache.org>
> Sent: Wednesday, 1 May, 2019 21:52:06
> Subject: Re: Cloudstack-agent gets the local IP address exception
> Hi Nux,
>
> It is because NetworkInterface.getInterfaceAddresses() returns the ips in
> reverse order.
> For example, "ip addr show dev eth0" shows the following ips
> inet X.X.X.X
> inet secondary Y.Y.Y.Y
> inet6 Z:Z:Z:Z:Z:Z
>
> Then NetworkInterface.getInterfaceAddresses returns
> Z:Z:Z:Z:Z:Z
> Y.Y.Y.Y
> X.X.X.X
>
> The following patch should work as you expect.
>
> ```
> diff --git a/utils/src/main/java/com/cloud/utils/net/NetUtils.java
> b/utils/src/main/java/com/cloud/utils/net/NetUtils.java
> index afe73f1..afb0ce6 100644
> --- a/utils/src/main/java/com/cloud/utils/net/NetUtils.java
> +++ b/utils/src/main/java/com/cloud/utils/net/NetUtils.java
> @@ -32,6 +32,7 @@ import java.net.SocketException;
> import java.net.URI;
> import java.net.UnknownHostException;
> import java.util.ArrayList;
> +import java.util.Collections;
> import java.util.Formatter;
> import java.util.List;
> import java.util.Random;
> @@ -394,10 +395,11 @@ public class NetUtils {
> }
>
> public static String[] getNetworkParams(final NetworkInterface nic) {
> - final List<InterfaceAddress> addrs = nic.getInterfaceAddresses();
> + List<InterfaceAddress> addrs = nic.getInterfaceAddresses();
> if (addrs == null || addrs.size() == 0) {
> return null;
> }
> + Collections.reverse(addrs);
> InterfaceAddress addr = null;
> for (final InterfaceAddress iaddr : addrs) {
> final InetAddress inet = iaddr.getAddress();
> ```
>
>
> -Wei
>
>
>
> Nux! <nu...@li.nux.ro> 于2019年5月1日周三 下午4:00写道:
>
>> I ran into a similar problem when I tried to allocate an additional IP on
>> the agent machine (for other purposes), the hypervisor would then show up
>> in the UI with this new IP and in "Alert" state.
>>
>> I solved the problem by moving the IP out of br0 and on to the loopback
>> interface.
>>
>> --
>> Sent from the Delta quadrant using Borg technology!
>>
>> Nux!
>> www.nux.ro
>>
>> ----- Original Message -----
>> > From: "li jerry" <di...@hotmail.com>
>> > To: "users" <us...@cloudstack.apache.org>, "dev" <
>> dev@cloudstack.apache.org>
>> > Sent: Monday, 22 April, 2019 14:36:51
>> > Subject: Cloudstack-agent gets the local IP address exception
>>
>> > HI All
>> >
>> >
>> > my kvm host [ip:10.226.16.11] virtualized a vip[10.226.16.10] via
>> keepalived.
>> >
>> > After I started the cloudstack-agent, I got vip[10.226.16.10] and I
>> couldn't get
>> > the correct IP [10.226.16.11];
>> >
>> > Can I have any way to get the cloudstack agent to get the correct IP
>> address?
>> >
>> >
>> >
>> > Cloudstack 4.11.2
>> > CentOS 7.5
>> >
>> >
>> >
>> > br2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
>> group
>> > default qlen 1000
>> > link/ether ac:1f:6b:ba:96:ea brd ff:ff:ff:ff:ff:ff
>> > inet 10.226.16.11/24 brd 10.226.16.255 scope global noprefixroute br2
>> > valid_lft forever preferred_lft forever
>> > inet 10.226.16.10/24 scope global secondary br2
>> > valid_lft forever preferred_lft forever
>> > inet6 fe80::1456:f9ff:fe06:6228/64 scope link
>> > valid_lft forever preferred_lft forever
Re: Cloudstack-agent gets the local IP address exception
Posted by Nux! <nu...@li.nux.ro>.
Thanks Wei, I've opened a proper issue for this, hope your fix gets applied.
https://github.com/apache/cloudstack/issues/3311
--
Sent from the Delta quadrant using Borg technology!
Nux!
www.nux.ro
----- Original Message -----
> From: "Wei ZHOU" <us...@gmail.com>
> To: "dev" <de...@cloudstack.apache.org>
> Cc: "users" <us...@cloudstack.apache.org>
> Sent: Wednesday, 1 May, 2019 21:52:06
> Subject: Re: Cloudstack-agent gets the local IP address exception
> Hi Nux,
>
> It is because NetworkInterface.getInterfaceAddresses() returns the ips in
> reverse order.
> For example, "ip addr show dev eth0" shows the following ips
> inet X.X.X.X
> inet secondary Y.Y.Y.Y
> inet6 Z:Z:Z:Z:Z:Z
>
> Then NetworkInterface.getInterfaceAddresses returns
> Z:Z:Z:Z:Z:Z
> Y.Y.Y.Y
> X.X.X.X
>
> The following patch should work as you expect.
>
> ```
> diff --git a/utils/src/main/java/com/cloud/utils/net/NetUtils.java
> b/utils/src/main/java/com/cloud/utils/net/NetUtils.java
> index afe73f1..afb0ce6 100644
> --- a/utils/src/main/java/com/cloud/utils/net/NetUtils.java
> +++ b/utils/src/main/java/com/cloud/utils/net/NetUtils.java
> @@ -32,6 +32,7 @@ import java.net.SocketException;
> import java.net.URI;
> import java.net.UnknownHostException;
> import java.util.ArrayList;
> +import java.util.Collections;
> import java.util.Formatter;
> import java.util.List;
> import java.util.Random;
> @@ -394,10 +395,11 @@ public class NetUtils {
> }
>
> public static String[] getNetworkParams(final NetworkInterface nic) {
> - final List<InterfaceAddress> addrs = nic.getInterfaceAddresses();
> + List<InterfaceAddress> addrs = nic.getInterfaceAddresses();
> if (addrs == null || addrs.size() == 0) {
> return null;
> }
> + Collections.reverse(addrs);
> InterfaceAddress addr = null;
> for (final InterfaceAddress iaddr : addrs) {
> final InetAddress inet = iaddr.getAddress();
> ```
>
>
> -Wei
>
>
>
> Nux! <nu...@li.nux.ro> 于2019年5月1日周三 下午4:00写道:
>
>> I ran into a similar problem when I tried to allocate an additional IP on
>> the agent machine (for other purposes), the hypervisor would then show up
>> in the UI with this new IP and in "Alert" state.
>>
>> I solved the problem by moving the IP out of br0 and on to the loopback
>> interface.
>>
>> --
>> Sent from the Delta quadrant using Borg technology!
>>
>> Nux!
>> www.nux.ro
>>
>> ----- Original Message -----
>> > From: "li jerry" <di...@hotmail.com>
>> > To: "users" <us...@cloudstack.apache.org>, "dev" <
>> dev@cloudstack.apache.org>
>> > Sent: Monday, 22 April, 2019 14:36:51
>> > Subject: Cloudstack-agent gets the local IP address exception
>>
>> > HI All
>> >
>> >
>> > my kvm host [ip:10.226.16.11] virtualized a vip[10.226.16.10] via
>> keepalived.
>> >
>> > After I started the cloudstack-agent, I got vip[10.226.16.10] and I
>> couldn't get
>> > the correct IP [10.226.16.11];
>> >
>> > Can I have any way to get the cloudstack agent to get the correct IP
>> address?
>> >
>> >
>> >
>> > Cloudstack 4.11.2
>> > CentOS 7.5
>> >
>> >
>> >
>> > br2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
>> group
>> > default qlen 1000
>> > link/ether ac:1f:6b:ba:96:ea brd ff:ff:ff:ff:ff:ff
>> > inet 10.226.16.11/24 brd 10.226.16.255 scope global noprefixroute br2
>> > valid_lft forever preferred_lft forever
>> > inet 10.226.16.10/24 scope global secondary br2
>> > valid_lft forever preferred_lft forever
>> > inet6 fe80::1456:f9ff:fe06:6228/64 scope link
>> > valid_lft forever preferred_lft forever
Re: Cloudstack-agent gets the local IP address exception
Posted by Wei ZHOU <us...@gmail.com>.
Hi Nux,
It is because NetworkInterface.getInterfaceAddresses() returns the ips in
reverse order.
For example, "ip addr show dev eth0" shows the following ips
inet X.X.X.X
inet secondary Y.Y.Y.Y
inet6 Z:Z:Z:Z:Z:Z
Then NetworkInterface.getInterfaceAddresses returns
Z:Z:Z:Z:Z:Z
Y.Y.Y.Y
X.X.X.X
The following patch should work as you expect.
```
diff --git a/utils/src/main/java/com/cloud/utils/net/NetUtils.java
b/utils/src/main/java/com/cloud/utils/net/NetUtils.java
index afe73f1..afb0ce6 100644
--- a/utils/src/main/java/com/cloud/utils/net/NetUtils.java
+++ b/utils/src/main/java/com/cloud/utils/net/NetUtils.java
@@ -32,6 +32,7 @@ import java.net.SocketException;
import java.net.URI;
import java.net.UnknownHostException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Formatter;
import java.util.List;
import java.util.Random;
@@ -394,10 +395,11 @@ public class NetUtils {
}
public static String[] getNetworkParams(final NetworkInterface nic) {
- final List<InterfaceAddress> addrs = nic.getInterfaceAddresses();
+ List<InterfaceAddress> addrs = nic.getInterfaceAddresses();
if (addrs == null || addrs.size() == 0) {
return null;
}
+ Collections.reverse(addrs);
InterfaceAddress addr = null;
for (final InterfaceAddress iaddr : addrs) {
final InetAddress inet = iaddr.getAddress();
```
-Wei
Nux! <nu...@li.nux.ro> 于2019年5月1日周三 下午4:00写道:
> I ran into a similar problem when I tried to allocate an additional IP on
> the agent machine (for other purposes), the hypervisor would then show up
> in the UI with this new IP and in "Alert" state.
>
> I solved the problem by moving the IP out of br0 and on to the loopback
> interface.
>
> --
> Sent from the Delta quadrant using Borg technology!
>
> Nux!
> www.nux.ro
>
> ----- Original Message -----
> > From: "li jerry" <di...@hotmail.com>
> > To: "users" <us...@cloudstack.apache.org>, "dev" <
> dev@cloudstack.apache.org>
> > Sent: Monday, 22 April, 2019 14:36:51
> > Subject: Cloudstack-agent gets the local IP address exception
>
> > HI All
> >
> >
> > my kvm host [ip:10.226.16.11] virtualized a vip[10.226.16.10] via
> keepalived.
> >
> > After I started the cloudstack-agent, I got vip[10.226.16.10] and I
> couldn't get
> > the correct IP [10.226.16.11];
> >
> > Can I have any way to get the cloudstack agent to get the correct IP
> address?
> >
> >
> >
> > Cloudstack 4.11.2
> > CentOS 7.5
> >
> >
> >
> > br2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
> group
> > default qlen 1000
> > link/ether ac:1f:6b:ba:96:ea brd ff:ff:ff:ff:ff:ff
> > inet 10.226.16.11/24 brd 10.226.16.255 scope global noprefixroute br2
> > valid_lft forever preferred_lft forever
> > inet 10.226.16.10/24 scope global secondary br2
> > valid_lft forever preferred_lft forever
> > inet6 fe80::1456:f9ff:fe06:6228/64 scope link
> > valid_lft forever preferred_lft forever
>
Re: Cloudstack-agent gets the local IP address exception
Posted by Wei ZHOU <us...@gmail.com>.
Hi Nux,
It is because NetworkInterface.getInterfaceAddresses() returns the ips in
reverse order.
For example, "ip addr show dev eth0" shows the following ips
inet X.X.X.X
inet secondary Y.Y.Y.Y
inet6 Z:Z:Z:Z:Z:Z
Then NetworkInterface.getInterfaceAddresses returns
Z:Z:Z:Z:Z:Z
Y.Y.Y.Y
X.X.X.X
The following patch should work as you expect.
```
diff --git a/utils/src/main/java/com/cloud/utils/net/NetUtils.java
b/utils/src/main/java/com/cloud/utils/net/NetUtils.java
index afe73f1..afb0ce6 100644
--- a/utils/src/main/java/com/cloud/utils/net/NetUtils.java
+++ b/utils/src/main/java/com/cloud/utils/net/NetUtils.java
@@ -32,6 +32,7 @@ import java.net.SocketException;
import java.net.URI;
import java.net.UnknownHostException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Formatter;
import java.util.List;
import java.util.Random;
@@ -394,10 +395,11 @@ public class NetUtils {
}
public static String[] getNetworkParams(final NetworkInterface nic) {
- final List<InterfaceAddress> addrs = nic.getInterfaceAddresses();
+ List<InterfaceAddress> addrs = nic.getInterfaceAddresses();
if (addrs == null || addrs.size() == 0) {
return null;
}
+ Collections.reverse(addrs);
InterfaceAddress addr = null;
for (final InterfaceAddress iaddr : addrs) {
final InetAddress inet = iaddr.getAddress();
```
-Wei
Nux! <nu...@li.nux.ro> 于2019年5月1日周三 下午4:00写道:
> I ran into a similar problem when I tried to allocate an additional IP on
> the agent machine (for other purposes), the hypervisor would then show up
> in the UI with this new IP and in "Alert" state.
>
> I solved the problem by moving the IP out of br0 and on to the loopback
> interface.
>
> --
> Sent from the Delta quadrant using Borg technology!
>
> Nux!
> www.nux.ro
>
> ----- Original Message -----
> > From: "li jerry" <di...@hotmail.com>
> > To: "users" <us...@cloudstack.apache.org>, "dev" <
> dev@cloudstack.apache.org>
> > Sent: Monday, 22 April, 2019 14:36:51
> > Subject: Cloudstack-agent gets the local IP address exception
>
> > HI All
> >
> >
> > my kvm host [ip:10.226.16.11] virtualized a vip[10.226.16.10] via
> keepalived.
> >
> > After I started the cloudstack-agent, I got vip[10.226.16.10] and I
> couldn't get
> > the correct IP [10.226.16.11];
> >
> > Can I have any way to get the cloudstack agent to get the correct IP
> address?
> >
> >
> >
> > Cloudstack 4.11.2
> > CentOS 7.5
> >
> >
> >
> > br2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
> group
> > default qlen 1000
> > link/ether ac:1f:6b:ba:96:ea brd ff:ff:ff:ff:ff:ff
> > inet 10.226.16.11/24 brd 10.226.16.255 scope global noprefixroute br2
> > valid_lft forever preferred_lft forever
> > inet 10.226.16.10/24 scope global secondary br2
> > valid_lft forever preferred_lft forever
> > inet6 fe80::1456:f9ff:fe06:6228/64 scope link
> > valid_lft forever preferred_lft forever
>