On 10/20/2015 03:13 PM, Cyril Scetbon wrote:
I'm trying to migrate from ipv4 to ipv6 for those
communications. I tried to follow a similar procedure as the one used
at CASSANDRA-8382
<https://issues.apache.org/jira/browse/CASSANDRA-8382?focusedCommentId=14259892&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14259892>.
When I do the change on the first
node, nodes seems to not see each other, if I trust nodetool :

As mentioned in the linked JIRA, I'm quite certain you will need to do all IPv4 -> IPv6 address changes on all nodes at the same time for the entire cluster - not one at a time.

_on first node :_

Datacenter: s1
==============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address                     Load       Tokens  Owns    Host ID
                          Rack
*DN  10.10.12.19*                ?          256     ?
dab24e23-4b42-438e-9070-7994e329e868  i10
*UN* *2a01:c940:a5:2005:0:0:0:18*  244.35 MB  256     ?
03c558ec-add9-4dcd-bf2b-a1b28575e06b  c10

This is likely due to the fact that an IPv6 address will not be really able to route directly to an IPv4 address.

_on second node :_
_
_
Datacenter: s1
==============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address       Load       Tokens  Owns (effective)  Host ID
                      Rack
*DN  10.10.12.18*  244.24 MB  256     100.0%
 03c558ec-add9-4dcd-bf2b-a1b28575e06b  c10
*UN  10.10.12.19*  244.11 MB  256     100.0%
 dab24e23-4b42-438e-9070-7994e329e868  i10

Because the second node is not aware of the first, since there is no communication established.

I can see in the first node logs that it tries to handshake with node
2, however I can't see neither error in node 1 logs nor information in
node 2 logs.

Of course, I'm trying to find a procedure that does not cause any
downtime of the whole cluster.

Doubtful that this is fully possible. It is very similar to the IPv4 example in the linked JIRA - the 10. and 192.168. networks cannot speak to one another, so at least some downtime is to be expected here. Are the connecting clients already dual-homed?

That said, there *may* be the possibility to use dual-homed IPv4/v6 interfaces and using listen_interface and isten_interface_prefer_ipv6: true(?) From conf/cassandra.yaml

# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address # you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4 # address will be used. If true the first ipv6 address will be used. Defaults to false preferring # ipv4. If there is only one address it will be selected regardless of ipv4/ipv6.
listen_address: localhost
# listen_interface: eth0
# listen_interface_prefer_ipv6: false

I'd try out some different methods in a dev env - full listen_address: edits and cluster restart; test out listen_interface: and a rolling restart, perhaps. Practice your changes in dev, and worst case, you can minimize downtime, if it's really necessary. You could be working on a network migration no one else has really tried yet :)

--
Kind regards,
Michael

Reply via email to