【Linux】Bonding配置,管理

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:
1 通过Ifenslave手动配置Bonding 
该方法适用于某些发行包,它们的网络初始化脚本(sysconfig或initscripts包)没有bonding相关的知识。SuSE Linux Enterprise Server 版本8就是这样的一个发行包。 
对于这些系统一般的方法是,把bonding模块的参数放进/etc/modules.conf或者/etc/modprobe.conf(针对不同的安装发行包),然后在系统的全局初始化脚本里增加modprobe和/或ifenslave命令。对于sysconfig,全局初始化脚本是/etc/init.d/boot.local,而对于initscripts,它是/etc/rc.d/rc.local。 
比如,如果你想要实现一个简单的带两个e100设备(比如eth0和eth1)的bond,而且希望它在重启后还能存在,那么编辑对应的文件(/etc/init.d/boot.local或/etc/rc.d/rc.local),在里面加上: 
modprobe bonding mode=balance-alb miimon=100 
modprobe e100 
ifconfig bond0 192.168.1.1 netmask 255.255.255.0 up 
ifenslave bond0 eth0 eth1 
把示例里bonding模块参数以及bond0的网络配置(IP地址,掩码等)修改为对应系统的正确配置,不幸的是,这个方法不提供对bond设备上的ifup和ifdown脚本支持,为了重新加载bonding配置,你必须运行初始化脚本,比如: 
# /etc/init.d/boot.local 
或者 
# /etc/rc.d/rc.local 
针对这种情况,理想的做法是,创建一个独立的脚本用于初始化bonding配置,然后在boot.local中调用这个独立的脚本,这样就可以不重启整个全局初始化脚本就打开bonding。 
为了关闭bonding设备,你首先需要把bonding设备标记为正在关闭,然后移除对应的设备驱动模块。针对我们上面的例子,你可以这样关闭: 
# ifconfig bond0 down 
# rmmod bonding 
# rmmod e100 
同样的,方便起见,最好把这些命令创建在一个独立的脚本里。 
2 手动配置多个Bonds 
针对那些网络初始化脚本缺少对多bonds配置支持的系统,这里介绍了通过不同的选项配置多bonding设备的方法。 
如果你需要配置多bonding设备,但所有设备使用同样的选项,你可能希望使用"max_bonds"模块参数,就像上文描述的一样.为了创建多个不同选项的bonding设备,需要多次加载bonding驱动。要说明的是,当前版本的sysconfig网络初始化脚本自动处理这些,如果你的发行包这些脚本,你不需要额外的操作,参看上文的"配置Bonding驱动",如果你不确定你的网络初始化脚本是否支持。 
为了加载模块的多个实例,需要为每个实例指定一个不同的名字(模块加载系统需要每个加载的模块有唯一的名字,即便它们是同一个模块的不同实例)。这可以通过在/etc/modprobe.conf中指定多个bonding选项,比如: 
alias bond0 bonding 
options bond0 -o bond0 mode=balance-rr miimon=100 
alias bond1 bonding 
options bond1 -o bond1 mode=balance-alb miimon=50 
这将会两次加载bonding模块。第一个实例命名为"bond0",将会以balance-rr模式创建bond0设备,同时使用参数miimon为100。
第二个实例命名为"bond1",将会以balance-alb模式创建bond1设备,同时使用参数miimon为50。 
在某些情况下(通常是较老的发行包),上述参数不能工作,第二个bonding实例不会用到它的选项。在这种情况下,第二个选项可以用如下的选项替换: 
install bond1 /sbin/modprobe --ignore-install bonding -o bond1 \ 
mode=balance-alb miimon=50 
这些选项可以重复任意次,以指定任意多个bonding实例,只需要为每个依次的实例指定一个唯一的名字,以替换bond1即可。 
3 通过Sysfs手工配置Bonding 
从版本3.0开始,Channel Bonding可以通过sysfs接口进行配置。sysfs接口允许在不卸载模块的情况下动态配置所有bonds,它也可以在运行时增加和移处bonds。Ifenslave已经不再需要了,尽管它还被支持。使用sysfs接口允许你在不重新加载模块的情况下,对多个bonds使用不同的配置;也允许你使用多个不同配置的bonds,在bonding被编译进内核的时候。 
   你必须mount了sysfs文件系统,以配置bonding。本文里的示例假定你标准的sysfs的mount点,即/sys,如果你的sysfs文件系统被mount在其他地方,你需要对应地调整示例里的路径。 
创建和销毁Bonds 
增加一个新的bond(foo): 
# echo +foo > /sys/class/net/bonding_masters 
移除一个已存在的bond(bar): 
# echo -bar > /sys/class/net/bonding_masters 
显示所有存在的bonds: 
# cat /sys/class/net/bonding_masters 
注意:由于sysfs文件的4K大小限制,如果你好多bonds,这个列表可能被截断。这在通常的情况下并不常见。 
增加和移除Slaves 
通过使用文件/sys/class/net//bonding/slaves,我们可以把网络接口从属于某个bond,这个文件的语义和bonding_masters文件是完全相同的。 
把eth0加入bond(bond0): 
# ifconfig bond0 up 
# echo +eth0 > /sys/class/net/bond0/bonding/slaves 
从bond(bond0)里移除eth0: 
# echo -eth0 > /sys/class/net/bond0/bonding/slaves 
  注意:bond必须在slave加入之前启动,所有slave必须在bond接口断开前移除。 
  当一个网络接口加入某个bond,sysfs文件系统里会在两者间创建符号链接,在这时,你可以看到/sys/class/net/bond0/slave_eth0指向/sys/class/net/eth0,而/sys/class/net/eth0/master指向/sys/class/net/bond0。 
  这意味着你可以通过查看master的符号链接很快地知道一个接口有没有被加入。这样的话: 
# echo -eth0 > /sys/class/net/eth0/master/bonding/slaves 
将会把eth0正确地从它所从属的bond上移除,而不需要指定bond接口的名字。 
改变Bond的配置 
每个bond可以独立地配置,通过操纵位于/sys/class/net//bonding下的文件。 这些文件的名字直接对应于本文里描述的命令行参数,除了arp_ip_target是个例外,它们总是接受同样的值。你可以直接把对应文件cat出来看当前的设置。 
把bond0配置为balance-alb模式: 
# ifconfig bond0 down 
# echo 6 > /sys/class/net/bond0/bonding/mode 
- 或者 - 
# echo balance-alb > /sys/class/net/bond0/bonding/mode 
  注意:在修改模式前,请先断开bond接口。 
在bond0上启用MII监控,使用1秒的时间间隔: 
# echo 1000 > /sys/class/net/bond0/bonding/miimon 
  注意:如果ARP监控被启用,当MII监控启用时它会被禁止,反之亦然。 
增加ARP目的地址: 
# echo +192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target 
# echo +192.168.0.101 > /sys/class/net/bond0/bonding/arp_ip_target 
  注意:最多可以指定十个目的地址。
移除ARP目的地址: 
# echo -192.168.0.100 > /sys/class/net/bond0/bonding/arp_ip_target 
配置示例 
为了生成一个简单的带两个e100设备(假定为eth0和eth1)的bond,而且希望它在重启后依然存在,你可以编辑对应的文件(/etc/init.d/boot.local or /etc/rc.d/rc.local),加入如下内容: 
modprobe bonding 
modprobe e100 
echo balance-alb > /sys/class/net/bond0/bonding/mode 
ifconfig bond0 192.168.1.1 netmask 255.255.255.0 up 
echo 100 > /sys/class/net/bond0/bonding/miimon 
echo +eth0 > /sys/class/net/bond0/bonding/slaves 
echo +eth1 > /sys/class/net/bond0/bonding/slaves 
下面增加第二个bond,带有两个e1000接口,工作于active-backup模式,使用ARP监控,把如下内容加入到你的初始化脚本里: 
modprobe e1000 
echo +bond1 > /sys/class/net/bonding_masters 
echo active-backup > /sys/class/net/bond1/bonding/mode 
ifconfig bond1 192.168.2.1 netmask 255.255.255.0 up 
echo +192.168.2.100 /sys/class/net/bond1/bonding/arp_ip_target 
echo 2000 > /sys/class/net/bond1/bonding/arp_interval 
echo +eth2 > /sys/class/net/bond1/bonding/slaves 
echo +eth3 > /sys/class/net/bond1/bonding/slaves 
我自己的测试:
[root@rac4 network-scripts]# echo -eth1 > /sys/class/net/bond0/bonding/slaves 
[root@rac4 network-scripts]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:50:56:8f:22:48
[root@rac4 network-scripts]# echo +eth1 > /sys/class/net/bond0/bonding/slaves  
[root@rac4 network-scripts]# cat /proc/net/bonding/bond0                 
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:50:56:8f:22:48
Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:50:56:8f:7d:6f
bond yql 只是一个例子,没有相对应的配置文件
[root@rac4 network-scripts]# echo +yql > /sys/class/net/bonding_masters 
[root@rac4 network-scripts]# cat /sys/class/net/bonding_masters    
bond0 yql
[root@rac4 network-scripts]# cat /proc/net/bonding/yql 
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)
Bonding Mode: load balancing (round-robin)
MII Status: down
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
4 查看Bonding配置 
每个bonding设备对应于一个只读文件,存在于/proc/net/bonding目录,文件内容包括bonding配置的信息,选项以及每个slave的状态。 
例如,在使用参数mode=0,miimon=1000时,加载驱动后,/proc/net/bonding/bond0的内容为: 
[root@rac4 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.2.4 (January 28, 2008)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:50:56:8f:22:48
Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:50:56:8f:7d:6f
根据你配置、状态、以及bonding驱动版本的差异,上述内容的精确格式和内容有可能不同。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
6月前
|
安全 Linux 开发工具
【Linux】vim使用与配置教程
Vim是一款功能强大的文本编辑器,广泛应用于Linux环境,是开发者和系统管理员的必备工具。本文介绍了Vim的基本操作与简单配置,涵盖命令模式、插入模式和底行模式的使用方法,以及光标定位、复制粘贴、搜索替换等常用技巧。同时,文章还提供了实用的分屏操作和代码注释方法,并分享了通过`.vimrc`文件进行个性化配置(如显示行号、语法高亮、自动缩进等)的技巧,帮助用户提升文本编辑效率。掌握这些内容,能让Vim更好地服务于日常工作与开发需求。
416 3
|
4月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
304 11
|
3月前
|
Linux 网络安全 开发工具
在Linux下配置gitee与Github的远程仓库
注意,git push后,是输入你的账号与密码。这个步骤可以通过特殊设置省去,但是一开始还是不要太省。
152 0
|
5月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
194 10
|
6月前
|
Java Linux 应用服务中间件
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
948 21
|
5月前
|
人工智能 Kubernetes Ubuntu
linux配置IP
linux配置IP
457 1
|
6月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
7月前
|
Linux Shell
问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作
修复/etc/passwd文件是解决Linux登录故障的重要步骤。通过进入单用户模式、挂载文件系统、恢复或手动修复/etc/passwd文件,可以有效解决该问题。保持定期备份系统配置文件是预防此类问题的最佳实践。
207 13
|
7月前
|
Linux Shell
问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作
修复/etc/passwd文件是解决Linux登录故障的重要步骤。通过进入单用户模式、挂载文件系统、恢复或手动修复/etc/passwd文件,可以有效解决该问题。保持定期备份系统配置文件是预防此类问题的最佳实践。
226 5
|
9月前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
1748 7