一. Ipv6简介
IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,能有效解决IPv4地址即将耗尽的问题。
IPv6的地址长度为128位,是IPv4地址长度的4倍。于是IPv4点分十进制格式不再适用,采用十六进制表示。IPv6有3种表示方法。
一、冒分十六进制表示法
格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16b,以十六进制表示,例如:
ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
这种表示法中,每个X的前导0是可以省略的,例如:
2001:0DB8:0000:0023:0008:0800:200C:417A→ 2001:DB8:0:23:8:800:200C:417A
二、0位压缩表示法
在某些情况下,一个IPv6地址中间可能包含很长的一段0,可以把连续的一段0压缩为“::”。但为保证地址解析的唯一性,地址中”::”只能出现一次,例如:
FF01:0:0:0:0:0:0:1101 → FF01::1101
0:0:0:0:0:0:0:1 → ::1
0:0:0:0:0:0:0:0 → ::
三、内嵌IPv4地址表示法
为了实现IPv4-IPv6互通,IPv4地址会嵌入IPv6地址中,此时地址常表示为:X:X:X:X:X:X:d.d.d.d,前96b采用冒分十六进制表示,而最后32b地址则使用IPv4的点分十进制表示,例如::192.168.0.1与::FFFF:192.168.0.1就是两个典型的例子,注意在前96b中,压缩0位的方法依旧适用。
IPv6地址类型是由地址前缀部分来确定,主要地址类型与地址前缀的对应关系如下:
地址类型 |
地址前缀(二进制) |
IPv6前缀标识 |
centos7下显示 |
|
单播地址 |
未指定地址 |
00…0(128 bits) |
::/128 |
|
环回地址 |
00…1(128 bits) |
::1/128 |
|
|
链路本地地址 |
1111111010 |
FE80::/10 |
inet6 fe80::f816:3eff:fea7:a3da prefixlen 64 scopeid 0x20<link> |
|
唯一本地地址 |
1111 110 |
FC00::/7 (包括FD00::/8和 不常用的FC00::/8) |
inet6 fd00:0:0:1::1 prefixlen 64 scopeid 0x0<global> |
|
站点本地地址(已弃用,被唯一本地地址代替) |
1111111011 |
FEC0::/10 |
inet6 fec0:0:0:1::1 prefixlen 64 scopeid 0x40<site> |
|
全球单播地址 |
其他形式 |
最常用2001::/16 |
inet6 2001:1111::1 prefixlen 64 scopeid 0x0<global> |
|
组播地址 |
发送到组播地址的数据包被送到由该地址标识的所有接口 |
11111111 |
FF00::/8 |
|
任播地址 |
发送到任播地址的数据包被送到由该地址标识的其中一个接口 |
从单播地址空间中进行分配,使用单播地址的格式 |
|
二. Ceph集群切换ipv6方法
这里介绍将已经部署好的使用ipv4地址的ceph集群切换为ipv6地址的方法。
测试环境已经部署了ipv4的ceph,需要修改为ipv6,详细步骤及命令为:
1、停服务:选择三台ceph-mon节点其中的一台ceph001,停ceph-mon服务,systemctl stop ceph-mon@ceph001。
2、导出monmap:在ceph001上执行ceph-mon -i ceph001 --extract-monmap map1,导出monmap文件为map1。
3、修改mon地址并导入新monmap:通过monmaptool --print map1查看map信息,再通过monmaptool --rm ceph001 map1,monmaptool --add ceph001 [fec0:0:0:1::1]:6789 map1命令逐一修改ceph001,ceph002,ceph003的地址为ipv6地址,修改后再通过monmaptool --print map1确认新的map信息。再通过命令ceph-mon -i ceph001 --inject-monmap map1导入新的monmap。再将上面的map1文件拷贝到ceph002,ceph003上,同样停ceph-mon服务,导入新的monmap。
4、修改ceph.conf文件:三个控制节点的/etc/ceph/ceph.conf文件添加及修改如下参数:
ms_bind_ipv6 = true
mon_host = [fec0:0:0:1::1]:6789,[fec0:0:0:1::2]:6789,[fec0:0:0:1::3]:6789
public network = fec0:0:0:1::/64
5、启动及重启服务:三个控制节点分别启动ceph-mon服务,通过ceph –s确认三个mon节点运行正常,再通过systemctl restart ceph-mds@ceph001,systemctl restart ceph-mgr@ceph001,systemctl restart ceph-osd.target等命令重启其他ceph相关服务,最后通过ceph –s,ceph osd tree等命令确认ceph集群正常。
按上面步骤即可完成ceph集群从ipv4到ipv6的改造,注意修改后ceph集群对外提供的是ipv6地址,各个连ceph的客户端都需要更新ceph集群地址。