码迷,mamicode.com
首页 > 系统相关 > 详细

网络通信模型基本以及Linux下高可用/Bonding的概念和用法

时间:2018-03-11 17:23:59      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:bonding   ifconfig   netstat   网络原理   

  • 网络基本原理

  • Bonging网卡绑定


    1.网络基本原理


  • 在现有的学习阶段,如果你测试网络通与不通基本都是通过ping命令(生产环境中为了防止攻击几乎所有的服务器都禁掉了PING),不过很多时候都并不清楚这个命令到底在背后执行什么操作,那好吧,往下看就对了

    1.1路由/路由器路由器(Router)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备。(此条来自百度百科)通俗一点讲,就是发生网络请求的时候,路由就是实现“怎么找路”的功能

    1.2网关网关是默认的数据出口。如果你的数据不知道往哪里走的话,那么他会去默认网关那里报道。路由器包含许多这样的网关,其中之一是默认网关。也就是说数据到了路由器以后,如果不知道自己下一步该怎么走了,那么他会去默认网关那里去报道

    图示:


    技术分享图片

    图中以route1为例,PC1若要跟PC2通信,则一定要走route1/2/3,但是现在这三个路由器都不知道该怎么走,因为路由器内部要有“路由条目”这个路由条目就是记录着“从哪里来的数据包要传递到哪里去,这个过程从哪里走”这样的信息,所以

    (1)route1配置路由条目:由route1到PC2的“路线”

    route add -net 4.4.4.0/24 gw 2.2.2.252

    (3)route1配置路由条目:由route1到route3的“路线”

    route add -net 3.3.3.0/24 gw 2.2.2.252

    同理,每一个路由器(route)都要配置对应的“目标地址和经过的网关条目

    上图中以route1 为例写了两个路由条目,这是最简单的网络通信模型,当然,现实生活中或者生产环境中显然不会有如此简单的路由,可能路由有好多个,路由下面还有交换机等等。难道每多一个路由或者    主机就要增加一个路由条目吗?

    显然这是不现实的,其次,路由条目过多也会造成通信效率降低的问题,所以这个路由条目可以简化

    图中,route1两个条目虽然目的地不是一个,但是这两个条目都是同方向的,都是从左右的,所以可以简写成:

    route add -net default gw 2.2.2.252

     查看路由条目:

    route -n

    有添加就有删除,只需要把对应的“add”换成“del”即可

    图中示例可以解释为“去往PC2方向的所有路由都执行这个条目,指定网关为2.2.2.252”

    路由条目简化,则需要查找的范围就变小了,效率自然就高了

    上述“小实验”是在VMware虚拟机上,用五台虚拟机实现,如果是克隆的虚拟机则需要注意网卡配置文件名称和MAC地址的问题

    网卡配置文件目录:

    /etc/sysconfig/network-scripts

    名为“ifcfg-”的文件即为网卡配置文件,说到网卡配置文件,那就来简单看一下吧:

    DEVICE=eth1                                 #设备名称,就是ifconfig命令列表里面设备的名称
    TYPE=Ethernet                   #类型为以太网
    UUID=9b86924e-c19c-46fc-8fb7-ab2239fb22cb    #系统中设备的唯一标识
    ONBOOT=yes                        #是否开机启动
    NM_CONTROLLED=yes                #是否启用NetworkManager管理工具(centos6 中建议为“no”,否则设置静态IP时很容易被此服务改掉成DHCP)
    BOOTPROTO=dhcp                    #做网卡绑定的时候常用,DHCP或者STATIC类型,不指定的话容易出现访问受限的问题
    HWADDR=00:0C:29:E6:8B:2D            #MAC地址,全球唯一的设备标识
    PREFIX=16                        #子网掩码

    如果需要设置指定的静态IP则在上述内容中加一项“IPADDR=XXX.XXX.XXX.XXX”并且指定BOOTPROTO为static

    当然了,网卡配置方面的命令还是很多的,类似于ifconfig/netstat(点击查看命令详解)都是很久以前的命令集了,只是由于习惯大部分人还在使用

    很多时候网卡服务重启时很多功能并不会生效,这时候需要卸载/重装网卡驱动模块

    查询网卡模块名称:

    ethtool -i eth0   #eth0为ifconfig命令查询出来的网卡名

    卸载:

    modprobe -r pcnet32 #pcnet32为上一条命令查询出来的结果

    装载:

    modprobe pcnet32  #上一条命令去掉-r即可

    2.Bonding

    2.1 bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载等功能,有很多优势。

    bonding技术是linux系统内核层面实现的,它是一个内核模块(驱动)。使用它需要系统有这个模块, 我们可以modinfo命令查看下这个模块的信息, 一般来说都支持

    通俗来讲就是:把两块或者多块实体物理网卡通过Bonding虚拟成一块网卡,并赋予一个IP地址,能承载更多地数据流量,并且在高可用方面有很大作用,其中一块出了故障可以由其他网卡代劳,当然,这个过程或多或少有个时间间隔,没明确最大限度能允许这个过程的执行时间有多少,但是可以肯定的是如果数据流量大,Bonding里面处理故障比较慢是一定会丢包的不过这个刷新时间间隔太短、太快又会过多的占用系统资源,所以这个时间点自己掌握此外(这个时间通过Bonding配置文件里面的miimon选项赋值控制,单位是ms),在实现负载均衡方面也有很大的本事,某一块网卡流量太大,通过Bonding可以分担一部分或大部分

    1.Mode 0 (balance-rr)轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力

    2.Mode 1 (active-backup)活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave。 为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见

    3.Mode 3 (broadcast)广播策略:在所有的slave接口上传送所有的报文,提供容错能力

    4.active-backup、 balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如: Cisco 交换机需要在模式 0、 2 和 3 中使用EtherChannel,但在模式4中需要LACP和 EtherChannel

    2.2Bonding配置文件

    2.2.1创建bonding文件

    vim  /etc/sysconfig/network-scripts/ifcfg-bond0
        DEVICE=bond0
        BONDING_OPTS="mode=1 miimon=100"    #mode1模式/每隔100ms刷新一次
        IPADDR=XXX.XXX.XXX.XXX
        PREFIX=24                            #子网掩码

    2.2.2 配置物理网卡与bond0的关系

    DEVICE=eth3        #要配置的网卡名称
    MASTER=bond0       #网卡属于哪个bond0
    SLAVES=yes         #隶属关系是否开启(yes即为bond0可以管理这块网卡,no则反)

            *同理设置另一块或多块网卡为此配置形式

    2.2.3 在Centos6中,建议关闭NetworkManager管理工具

    /etc/init.d/NetworkManager stop

    重启网络服务:

    /etc/init.d/network restart   #或者执行 :service network restart

    查看bond0的状态:

    cat /proc/net/bonding

    查看bond0的工作模式:

    cat /sys/class/net/bond0

    总结bonding:

        实际生产环境中,bonding可能不止两三块网卡,因为服务器需要稳定、高可用,保证不丢包才是根本,所以会有很多网卡组成bond,这个过程中,应用层是感受不到网卡的变动的,只要miiimon的值不太大、刷新频率不要太慢,就不会丢包,就发现不了什么,所以还是很好的一种解决网卡出故障时保证系统正常运转的措施。

    网络通信模型基本以及Linux下高可用/Bonding的概念和用法

    标签:bonding   ifconfig   netstat   网络原理   

    原文地址:http://blog.51cto.com/11742700/2085129

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!