配置Ceph的IPV6集群

前言

对于IPV6实在是非常的陌生,所以本篇开始会讲一下最基本的网络配置,首先让网络能通起来,最开始就是因为不熟悉IPV6,而直接使用了link local地址,造成了mon部署的时候进程无法绑定到IP,从而端口没有启动,这个是在ceph社区群友 ceph-长沙-柠檬 同学的帮助下才发现问题的

IPV6是会有个link local地址的,在一个接口可以配置很多IPv6地址,所以学习路由就有可能出现很多下一跳。所以出现Link Local地址唯一标识一个节点。在本地链路看到下一跳都是对端的Link Local地址。这个地址一般是以fe80开头的,子网掩码为64,这个地方需要给机器配置一个唯一的全局单播地址

However, with IPv6, all (IPv6) interfaces will have a link local address. This address is intended to allow communications over the attached links and so is defined to be usable only on that link.

网络配置

linux下用默认的网卡配置文件

[root@node1 ceph]# ifconfig 
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.46  netmask 255.255.0.0  broadcast 192.168.255.255
        inet6 fe80::20c:29ff:fec5:5a4b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c5:5a:4b  txqueuelen 1000  (Ethernet)
        RX packets 18422  bytes 1254119 (1.1 MiB)
        RX errors 0  dropped 6  overruns 0  frame 0
        TX packets 1938  bytes 890164 (869.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

取消NetworkManager管理

systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl restart network

以免NetworkManager的干扰

这个地方我没有做自定义的IPV6的设置,让其默认的生成的地方,可以看到上面的node1的link local地址地址为 fe80::20c:29ff:fec5:5a4b
我的另外一台的地址为 fe80::20c:29ff:feda:6849

node1 fe80::20c:29ff:fec5:5a4b prefixlen 64

node2 fe80::20c:29ff:feda:6849 prefixlen 64

这个地方都是没有单播地址的,需要配置一个

配置的时候关闭掉ipv4的IP,防止影响,确认配置的就是ipv6环境,去掉IPv4的配置即可,我的网卡配置文件

TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
PEERDNS="yes"
PEERROUTES="yes"
NM_CONTROLLED=no
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6ADDR=2008:20c:20c:20c:20c:29ff:fec5:5a4b/64
IPV6_AUTOCONF=no
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="0146f40c-6f4d-4c63-a9cd-7f89264613f3"
DEVICE="eno16777736"
ONBOOT="yes"

检查配置情况

[root@node1 ceph]# ifconfig 
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::20c:29ff:fec5:5a4b  prefixlen 64  scopeid 0x20<link>
        inet6 2008:20c:20c:20c:20c:29ff:fec5:5a4b  prefixlen 64  scopeid 0x0<global>
        ether 00:0c:29:c5:5a:4b  txqueuelen 1000  (Ethernet)
        RX packets 9133  bytes 597664 (583.6 KiB)
        RX errors 0  dropped 1  overruns 0  frame 0
        TX packets 466  bytes 137983 (134.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到有两个inet6这样就是对的了

windows远程ssh连接的方式:ssh 2008:20c:20c:20c:20c:29ff:fec5:5a4b

配置hosts

在配置文件/etc/hosts中添加如下内容

2008:20c:20c:20c:20c:29ff:fec5:5a4b node1
2008:20c:20c:20c:20c:29ff:feda:6849 node2

检测是否连通

[root@node1 ~]# ping6 -I eno16777736 2008:20c:20c:20c:20c:29ff:feda:6849

ping主机名称

[root@node1 ~]# ping6 -I eno16777736 node2

注意ping6需要加上网卡名称

同样的操作在node2上也配置好,网络到这里就配置好了

集群配置

创建初始配置文件

[root@node1 ceph]# ceph-deploy new node1
[root@node1 ceph]# cat ceph.conf 
[global]
fsid = f0bf4130-f4f0-4214-8b98-67103ad55d65
ms_bind_ipv6 = true
mon_initial_members = node1
mon_host = [2008:20c:20c:20c:20c:29ff:fec5:5a4b]
auth_cluster_required =cephx
auth_service_required = cephx
auth_client_required = cephx

创建mon

[root@node1 ceph]# ceph-deploy mon create node1

检查状态

[root@node1 ceph]# ceph -s
    cluster d2882f75-1209-4667-bef8-3051c84cb83c
     health HEALTH_ERR
            no osds
     monmap e1: 1 mons at {node1=[2008:20c:20c:20c:20c:29ff:fec5:5a4b]:6789/0}
            election epoch 3, quorum 0 node1
     osdmap e8: 0 osds: 0 up, 0 in
            flags sortbitwise
      pgmap v2664: 0 pgs, 0 pools, 0 bytes data, 0 objects
            0 kB used, 0 kB / 0 kB avail

检查端口

[root@node1 ceph]# netstat -tunlp|grep tcp6
tcp6       0      0 :::22                   :::*                    LISTEN      1155/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1294/master         
tcp6       0      0 2008:20c:20c:20c:2:6789 :::*                    LISTEN      8997/ceph-mon

可以看到集群已经正确的监听在了ipv6上了,后续的操作跟普通的IPV4集群一样的

变更记录

Why Who When
创建 武汉-运维-磨渣 2016-10-17
posted @ 2016-10-17 17:46  武汉-磨渣  阅读(404)  评论(0编辑  收藏  举报