FreeBSD配置CARP实现高可用

Common Address Redundancy Protocol, 或简称 CARP 能够使多台主机共享同一 IP 地址。 在某些配置中, 这样做可以提高可用性, 或实现负载均衡。用2台FreeBSD去实现HA。
     要启用 CARP 支持, 必须在 FreeBSD 内核配置中增加下列选项, 并重新联编内核(已32位机为例),接下来, 进入 arch/conf 目录下面, 复制 GENERIC 配置文件, 并给这个文件起一个容易辨认的名称,它就是您的内核名称

cd /usr/src/sys/i386/conf
mkdir /root/kernels
cp GENERIC /root/kernels/CARP
ln -s /root/kernels/CARP

    编辑/root/kernels/CARP,在尾部添加如下:

device          carp

   注意: 必须以 root 身份执行这些命令,否则就会得到 permission denied 的错误提示。

  现在应该编译内核的源代码了。

cd /usr/src
make buildkernel KERNCONF=CARP
make installkernel KERNCONF=CARP


   CARP 设备可以通过 ifconfig 命令来创建:

ifconfig carp0 create

通过ifconifg能查看到创建的carp0:

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:0c:29:9b:56:67
        inet 172.16.27.23 netmask 0xffffffe0 broadcast 172.16.27.31
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
carp0: flags=8<LOOPBACK> metric 0 mtu 1500

   在本例中有两台FreeBSD服务器,三个IP 172.16.27.23(主),172.16.27.25 (辅),172.16.27.22 (共享ip)
   配置172.16.27.23,编辑/etc/rc.conf 文件,增加如下配置:

cloned_interfaces="carp0"
ifconfig_carp0="inet 172.16.27.22 255.255.255.224 172.16.27.31 vhid 1 pass test123"

    重启服务

/etc/netstat


    配置172.16.27.25,编辑/etc/rc.conf 文件,增加如下配置:

cloned_interfaces="carp0"
ifconfig_carp0="inet advskew 100 172.16.27.22 255.255.255.224 172.16.27.31 vhid 1 pass test123"

    重启服务

/etc/netstat

    
    查看172.16.27.23网卡配置

ifconfig carp0
carp0: flags=49<UP,LOOPBACK,RUNNING> metric 0 mtu 1500
        inet 172.16.27.22 netmask 0xffff0000
        carp: MASTER vhid 1 advbase 1 advskew 0


    查看172.16.27.25网卡配置

ifconfig carp0
carp0: flags=49<UP,LOOPBACK,RUNNING> metric 0 mtu 1500
        inet 172.16.27.22 netmask 0xffff0000
        carp: BACKUP vhid 1 advbase 1 advskew 100
  

  测试断开172.16.27.25或者172.16.27.23的网络,通过172.16.27.22能否访问到没断开网络的机器。

你可能感兴趣的:(高可用,FreeBSD,CARP)