双网卡安装
一、什么是bonding
Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余
二、bonding应用方向
1、网络负载均衡
对于bonding的网络负载均衡是我们在文件服务器中常用到的,比如把三块网卡,当做一块来用,解决一个IP地址,流量过大,服务器网络压力过大的问题。对于文件服务器来说,比如NFS或SAMBA文件服务器,没有任何一个管理员会把内部网的文件服务器的IP地址弄很多个来解决网络负载的问题。如果在内网中,文件服务器为了管理和应用上的方便,大多是用同一个IP地址。对于一个百M的本地网络来说,文件服务器在多 个用户同时使用的情况下,网络压力是极大的,特别是SAMABA和NFS服务器。为了解决同一个IP地址,突破流量的限制,毕竟网线和网卡对数据的吞吐量是有限制的。如果在有限的资源的情况下,实现网络负载均衡,最好的办法就是 bonding
2、网络冗余
对于服务器来说,网络设备的稳定也是比较重要的,特别是网卡。在生产型的系统中,网卡的可靠性就更为重要了。在生产型的系统中,大多通过硬件设备的冗余来提供服务器的可靠性和安全性,比如电源。bonding 也能为网卡提供冗余的支持。把多块网卡绑定到一个IP地址,当一块网卡发生物理性损坏的情况下,另一块网卡自动启用,并提供正常的服务,即:默认情况下只有一块网卡工作,其它网卡做备份
三、bonding实验环境及配置
1、实验环境
系统为:CentOS,使用2块网卡(eth0、eth1 ==> bond0)来实现bonding技术
2、bonding配置
第一步:先查看一下内核是否已经支持bonding
1)如果内核已经把bonding编译进内核,那么要做的就是加载该模块到当前内核;其次查看ifenslave该工具是否也已经编译
modprobe -l bond* 或者 modinfo bonding
modprobe bonding
lsmod | grep 'bonding'
echo 'modprobe bonding &> /dev/null' >> /etc/rc.local(开机自动加载bonding模块到内核)
which ifenslave
注意:默认内核安装完后就已经支持bonding模块了,无需要自己手动编译
2)如果bonding还没有编译进内核,那么要做的就是编译该模块到内核
(1)编译bonding
tar -jxvf kernel-XXX.tar.gz
cd kernel-XXX
make menuconfig
选择 " Network device support " -> " Bonding driver support "
make bzImage
make modules && make modules_install
make install
(2)编译ifenslave工具
gcc -Wall -O -I kernel-XXX/include ifenslave.c -o ifenslave
第二步:主要有两种可选择(第1种:实现网络负载均衡,第2种:实现网络冗余)
例1:实现网络冗余(即:mod=1方式,使用eth0与eth1)
(1)编辑虚拟网络接口配置文件(bond0),并指定网卡IP
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.254
BROADCAST=192.168.0.255
NETMASK=255.255.255.0
NETWORK=192.168.0.0
GATEWAY=192.168.0.1
USERCTL=no
TYPE=Ethernet
注意:建议不要指定MAC地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
注意:建议不要指定MAC地址
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
MASTER=bond0
SLAVE=yes
注意:建议不要指定MAC地址
(2)编辑模块载入配置文件(/etc/modprobe.conf),开机自动加载bonding模块到内核
vi /etc/modprobe.conf
alias bond0 bonding
options bond0 miimon=100 mode=1
alias net-pf-10 off #关闭ipv6支持
说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3,4,5,6六种模式,常用为0,6,1三种,具体后面会介绍
mode=0,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是与网卡相连的交换必须做特殊配置( 这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址
mode=6,表示load balancing (round-robin)为负载均衡方式,两块网卡都工作,但是该模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址
mode=1,表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份
注意:bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用
【CENTOS 6.2 我的配置】
DEVICE="bond0"
USERCTL="no"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR="192.168.1.78"
NETMASK="255.255.255.0"
GATEWAY="192.168.1.1"
IPV6INIT="no"
TYPE="Ethernet"
BONDING_OPTS="miimon=100 mode=balance-alb"
DEVICE="em1"
BOOTPROTO="none"
ONBOOT="yes"
MASTER="bond0"
SLAVE="yes"
USERCTL="no"
HWADDR="D4:AE:52:BF:CF:A2"
DEVICE="em2"
BOOTPROTO="none"
ONBOOT="yes"
MASTER="bond0"
SLAVE="yes"
USERCTL="no"
HWADDR="d4:ae:52:bf:cf:a3"
/etc/modprobe.d/bonding.conf
alias bond0 bonding
#options bond0 miimon=100 mode=6
service network restart
echo 'modprobe bonding mode=6 miimon=100 &> /dev/null' >> /etc/rc.local(开机自动加载bonding模块到内核)
modprobe bonding mode=1 miimon=100
ifenslave bond0 em1 em2
bonding 详细介绍
http://www.2cto.com/os/201109/102451.html
安装rpmforge的软件仓库
wget -c http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
centos6.2更新yum源
# 备份
# mv /etc/yum.repos.d/CentOS-Base.repo{,.bak}
# 修改
# vi /etc/yum.repos.d/CentOS-Base.repo
# yum clean all
# yum makecache #将服务器上的软件包信息缓存到本地,以提高搜索安装软件的速度
# yum install vim* #测试域名是否可用
附:增加RPMforge源
1,download the rpmforge package:
http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
2,Install DAG's GPG key
sudo rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
如果上面出现错误,确认下:
sudo rpm -K rpmforge-release-0.5.2-2.el6.rf.*.rpm
3,sudo rpm -i rpmforge-release-0.5.2-2.el6.rf.*.rpm
4,试试看:sudo yum install htop
开始更新系统:
yum update
==========================================================================================================================
当你想一键安装软件及其配套软件的时候,是否在为键入一个一个命令而头疼呢?
当你想使用yum命令安装软件发现及其不能连接网络的时候,是否在苦恼啊?试试下面的配置吧,很方便。
一、挂载本地光盘到系统:把Cent6.2安装光盘放入光驱,在终端命令行下操作
mkdir /mnt/cdrom #新建挂载目录
mount /dev/cdrom /mnt/cdrom #挂载光盘到/mnt/cdrom目录下
cd /mnt/cdrom #进入挂载目录
ls #查看挂载目录,光盘挂载成功 如下图:
二、配置本地yum源
cd /etc/yum.repos.d/ #进入yum配置目录
vi CentOS-Media.repo #编辑配置文件,添加以下内容
1 [GuangPan] 2 name=CentOS-$releasever - Media #自定义名称 3 baseurl=file:///mnt/cdrom/ #本地光盘挂载路径 4 gpgcheck=0 #检查GPG-KEY,0为不检查,1为检查 5 enabled=1 #启用yum源,0为不启用,1为启用
如下图:
三、清除yum缓存,使用yum install自动安装软件
1 yum clean all #清除yum缓存 2 yum install php #安装php
注意:CentOS需要将/etc/yum.rpos. d/目录下的CentOS-Base.repo CentOS-Debuginfo.repo文件进行改名,这样就可以绕过网络进行本地源的安装。
具体命令如下:
1 cd /etc/yum.repos.d/ 2 mv CentOS-Base.repo CentOS-Base.repo123 3 mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo123
测试本地源的指定是否成功。
1 yum install php
当出现如下图所示,证明配置成功,现在你可以享受此配置了。
如果不需要以光盘为源进行软件安装时,只需要将/etc/yum.repos.d目录下的CentOS-Base.repo123和CentOS-Debuginfo.repo123文件改回原来的名字就可以了。