mysql服务器双网卡冗余的配置

背景:当前需要做的工程需要用到mysql数据库服务,同时需要高稳定性,要求做到双服务器双网卡冗余。需要使用两台服务器,每台服务器分别有两个网卡。两台服务器要做到互为备用。客户端在四条线路中自动选择。

方案1.1:对于mysql的冗余,第一个首先想到的是mysql的双主架构方案,可以实现两台服务器的互为备用。参考

http://www.cnblogs.com/ygqygq2/p/6045279.html

但是该方案针对的是一台服务器只有一个网卡的情况,无法实现双网冗余。

方案1.2:在方案1.1的基础上考虑怎样利用双网冗余。双主的方案实际上是两台服务器分别做主站和从站,作为从站时从主站同步数据。于是想到,使用两个网络分别交叉做主从。即#1服务器的A网做主站,B网做从站,#2服务器相反。#1服务器配置从站时,通过#2的B网地址获取同步数据;#2服务器配置从站时,通过#1服务器的A网地址获取数据。

这样可以实现双网冗余,任何一个网断了仍然可以使用。

但是这个方案仍然存在一个问题:当#1服务器关机,且#2服务器B网坏掉之后,客户端仍然可以向#2服务器写入数据。这时当#1服务器重启后,由于只有A网通,而在A网上,#1为主,#2为从,只能#2从#1获取数据,而不能相反,因此两台服务器上的数据无法同步。

方案2.1把两个网卡当做一个使用,linux系统下有bond技术,参考

https://my.oschina.net/jastme/blog/491095

但是使用的是windows作为服务器

方案2.2,windows下也有将两个网卡作为一个使用的方法,第一个方法是使用nic express。参考

http://water101.blog.163.com/blog/static/88937184200971882211534/

但是后来发现nic express不支持win7以后的操作系统。

方案2.3 windows下将两个网卡绑定的第二个方法,windows server 2008和windowsserver2012自带绑定功能,叫做teaming,参考

http://blog.51cto.com/chenyantao/1579683

方案2.4windows下将两个网卡绑定的第三种方法,使用网卡的特性,目前可以找到的有intel和Broadcom的两种,参考

http://server.it168.com/a2010/0723/1081/000001081286_all.shtml

方案3,关于使用两个网络对外提供服务,还有一个参考:

http://wenku.it168.com/d_000604031.shtml

这个方案增加了两个网卡,使用其中两个网卡对外提供服务,两个网卡做bond同步。

 

总结:虽然找了这些方案,但是好像还是没有找到比较完美的解决方案。

 

 

 

附录一:MySQL双主(主主)架构方案

转自http://www.cnblogs.com/ygqygq2/p/6045279.html

在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动。因此,如果是双主或者多主,就会增加mysql入口,增加高可用。不过多主需要考虑自增长ID问题,这个需要特别设置配置文件,比如双主,可以使用奇偶,总之,主之间设置自增长ID相互不冲突就能完美解决自增长ID冲突问题。

主从同步复制原理

在开始之前,我们先来了解主从同步复制原理。

复制分成三步:

1. master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

2. slave将master的binary log events拷贝到它的中继日志(relay log);

3. slave重做中继日志中的事件,将改变反映它自己的数据。

下图描述了这一过程:

Image

该过程的第一部分就是master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。

下一步就是slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。

SQL slave thread处理该过程的最后一步。SQL线程从中继日志读取事件,更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。

此外,在master中也有一个工作线程:和其它MySQL的连接一样,slave在master中打开一个连接也会使得master开始一个线程。

MySQL5.6以前的版本复制过程有一个很重要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。 MySQL5.6版本参数slave-parallel-workers=1 表示启用多线程功能。

MySQL5.6开始,增加了一个新特性,是加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力。

官方文档:http://dev.mysql.com/doc/refman/5.6/en/replication-gtids.html

MySQL双主(主主)架构方案思路是:

1.两台mysql都可读写,互为主备,默认只使用一台(masterA)负责数据的写入,另一台(masterB)备用;

2.masterA是masterB的主库,masterB又是masterA的主库,它们互为主从;

3.两台主库之间做高可用,可以采用keepalived等方案(使用VIP对外提供服务);

4.所有提供服务的从服务器与masterB进行主从同步(双主多从);

5.建议采用高可用策略的时候,masterA或masterB均不因宕机恢复后而抢占VIP(非抢占模式);

这样做可以在一定程度上保证主库的高可用,在一台主库down掉之后,可以在极短的时间内切换到另一台主库上(尽可能减少主库宕机对业务造成的影响),减少了主从同步给线上主库带来的压力;

但是也有几个不足的地方:

1.masterB可能会一直处于空闲状态(可以用它当从库,负责部分查询);

2.主库后面提供服务的从库要等masterB先同步完了数据后才能去masterB上去同步数据,这样可能会造成一定程度的同步延时;

架构的简易图如下:

MySQL主主同步方案

主主环境(这里只介绍2台主的配置方案):

1.CentOS 6.8 64位 2台:masterA(192.168.10.11),masterB(192.168.10.12)

2.官方Mysql5.6版本

搭建过程:

1.安装MySQL服务(建议源码安装)

1.1 yum安装依赖包

yum -y install make gcc gcc-c++  ncurses-devel bison openssl-devel

1.2 添加MySQL所需要的用户和组

groupadd -g 27 mysql
adduser -u 27 -g mysql -s /sbin/nologin mysql

1.3 下载MySQL源码包

mkdir -p /data/packages/src
cd /data/packages/
wget http://distfiles.macports.org/cmake/cmake-3.2.3.tar.gz
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.34.tar.gz

1.4 创建mysql数据目录

mkdir -p /usr/local/mysql/data

1.5 解压编译安装cmake、MySQL

复制代码

cd /data/packages/src
tar -zxvf ../cmake-3.2.3.tar.gz
cd cmake-3.2.3/
./bootstrap
gmake
make install
cd ../
tar xf  mysql-5.6.34.tar.gz
cd mysql-5.6.34
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc \
-DWITH_SSL=bundled -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/usr/local/mysql/data
make && make install

复制代码

1.6 添加开机启动脚本

cp support-files/mysql.server /etc/rc.d/init.d/mysqld

1.7 添加masterA配置文件/etc/my.cnf

复制代码

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
basedir = /usr/local/mysql
port = 3306
socket = /tmp/mysql.sock
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysql.pid
log-error = /usr/local/mysql/data/mysql.err

server-id = 1
auto_increment_offset = 1
auto_increment_increment = 2                                            #奇数ID

log-bin = mysql-bin                                                     #打开二进制功能,MASTER主服务器必须打开此项
binlog-format=ROW
binlog-row-p_w_picpath=minimal
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=0
sync_binlog=0
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
#expire_logs_days=5
max_binlog_size=1024M                                                   #binlog单文件最大值

replicate-ignore-db = mysql                                             #忽略不同步主从的数据库
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = test
replicate-ignore-db = zabbix

max_connections = 3000
max_connect_errors = 30

skip-character-set-client-handshake                                     #忽略应用程序想要设置的其他字符集
init-connect='SET NAMES utf8'                                           #连接时执行的SQL
character-set-server=utf8                                               #服务端默认字符集
wait_timeout=1800                                                       #请求的最大连接时间
interactive_timeout=1800                                                #和上一参数同时修改才会生效
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES                     #sql模式
max_allowed_packet = 10M
bulk_insert_buffer_size = 8M
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 4M
key_buffer_size = 256M
read_buffer_size = 16K

skip-name-resolve
slow_query_log=1
long_query_time = 6
slow_query_log_file=slow-query.log
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[mysqldump]
quick
max_allowed_packet = 16M

[mysqld_safe]

复制代码

1.8 特别参数说明

log-slave-updates = true     #将复制事件写入binlog,一台服务器既做主库又做从库此选项必须要开启
#masterA自增长ID
auto_increment_offset = 1
auto_increment_increment = 2                                            #奇数ID
#masterB自增加ID
auto_increment_offset = 2
auto_increment_increment = 2                                            #偶数ID

1.9 添加masterB配置文件/etc/my.cnf

复制代码

[client]
port = 3306
socket = /tmp/mysql.sock

[mysqld]
basedir = /usr/local/mysql
port = 3306
socket = /tmp/mysql.sock
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysql.pid
log-error = /usr/local/mysql/data/mysql.err

server-id = 2
auto_increment_offset = 2
auto_increment_increment = 2                                            #偶数ID

log-bin = mysql-bin                                                     #打开二进制功能,MASTER主服务器必须打开此项
binlog-format=ROW
binlog-row-p_w_picpath=minimal
log-slave-updates=true
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=0
sync_binlog=0
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
#expire_logs_days=5
max_binlog_size=1024M                                                   #binlog单文件最大值

replicate-ignore-db = mysql                                             #忽略不同步主从的数据库
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = test
replicate-ignore-db = zabbix

max_connections = 3000
max_connect_errors = 30

skip-character-set-client-handshake                                     #忽略应用程序想要设置的其他字符集
init-connect='SET NAMES utf8'                                           #连接时执行的SQL
character-set-server=utf8                                               #服务端默认字符集
wait_timeout=1800                                                       #请求的最大连接时间
interactive_timeout=1800                                                #和上一参数同时修改才会生效
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES                     #sql模式
max_allowed_packet = 10M
bulk_insert_buffer_size = 8M
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 4M
key_buffer_size = 256M
read_buffer_size = 16K

skip-name-resolve
slow_query_log=1
long_query_time = 6
slow_query_log_file=slow-query.log
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[mysqldump]
quick
max_allowed_packet = 16M

[mysqld_safe]

复制代码

1.10 初始化MySQL

cd /usr/local/mysql
scripts/mysql_install_db --user=mysql

1.11 为启动脚本赋予可执行权限并启动MySQL

chmod +x /etc/rc.d/init.d/mysqld
/etc/init.d/mysqld start

2. 配置主从同步

2.1 添加主从同步账户

masterA上:

mysql> grant replication slave on *.* to 'repl'@'192.168.10.12' identified by '123456';
mysql> flush privileges;

masterB上:

mysql> grant replication slave on *.* to 'repl'@'192.168.10.11' identified by '123456';
mysql> flush privileges;

2.2 查看主库的状态

masterA上:

复制代码

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000003 |      120 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

复制代码

masterB上

复制代码

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000003 |      437 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

复制代码

2.3 配置同步信息:

masterA上:

复制代码

mysql> change master to master_host='192.168.10.12',master_port=3306,master_user='repl',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=437;

mysql> start slave;

mysql> show slave status\G;

复制代码

 

显示有如下状态则正常:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

masterB上:

#本人是测试环境,可以保证没数据写入,否则需要的步骤是:先masterA锁表-->masterA备份数据-->masterA解锁表 -->masterB导入数据-->masterB设置主从-->查看主从

复制代码

mysql> change master to master_host='192.168.10.11',master_port=3306,master_user='repl',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=120;

start slave;

mysql> show slave status\G;

复制代码

显示有如下状态则正常:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

3.测试主从同步

3.1 在masterA上创建一个数据库测试同步效果

复制代码

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

+--------------------+

4 rows in set (0.00 sec)

mysql> create database test01;

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

| test01             |

+--------------------+

5 rows in set (0.00 sec)

mysql> quit

Bye

[root@masterA data]#

复制代码

3.2 到masterB查看是否已经同步创建数据库

复制代码

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

| test01             |

+--------------------+

5 rows in set (0.00 sec)

mysql> quit

Bye

[root@masterB data]#

复制代码

4. 开启MySQL5.6的GTID功能

masterA和masterB分别执行如下命令:

复制代码

mysql> stop slave;

Query OK, 0 rows affected (0.00 sec)

mysql> change master to MASTER_AUTO_POSITION=1;

Query OK, 0 rows affected (0.01 sec)

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

复制代码

5. 遇到的问题

一种主从报错折腾了我半天:

Last_IO_Errno: 1236

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not open log file'

后面修改主从同步相关 参数,确认原因是my.cnf增加了如下参数:

log-bin = mysql-bin

relay-log = mysql-bin

Image

从正常主主同步时的二进制日志文件显示,有2套二进制日志。因此推断上面2个参数导致不能产生2套二进制文件,故导致二进制文件错乱和丢失。

作者: ygqygq2

出处:http://ygqygq2.cnblogs.com>

原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。

 

附录二:linux bond配置步骤,七种bond模式说明

转自https://my.oschina.net/jastme/blog/491095

一、网卡绑定:

第一步:创建一个ifcfg-bondX

# vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BONDING_OPTS="mode=0 miimon=100"
BOOTPROTO=none
ONBOOT=yes
BROADCAST=192.168.0.255
IPADDR=192.168.0.180
NETMASK=255.255.255.0
NETWORK=192.168.0.0
USERCTL=no
BONDING_OPTS="mode=0 miimon=100" ,mode有多种模式实现不同的功能,

 

第二步:修改/etc/sysconfig/network-scripts /ifcfg-ethX

# vi /etc/sysconfig/network-scripts /ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
# vi /etc/sysconfig/network-scripts /ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

 

第三步:配置/etc/modprobe.conf,添加alias bond0 bonding

alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptspi
alias scsi_hostadapter2 ata_piix
alias scsi_hostadapter3 ahci
alias net-pf-10 off
alias ipv6 off
options ipv6 disable=1
alias eth0 b0                                      后面分组的名字,eth0 和 eth3 对应的是bond0
alias eth1 b1
alias eth2 e1000
alias eth3 b0
alias eth4 b1
alias bond0 bonding
alias bond1 bonding
options bond0 miimon=100 mode=1 primary=eth0
options bond1 miimon=100 mode=1 primary=eth1
#options bonding max_bonds=2 miimon=200 mode=1

 

第四步:重启网络服务

#service network restart

 

通过查看/proc/net/bonding/bond0,查看当前是用什么mode,如果是主备的话,当前是哪个网卡工作。

cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect always)
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c8:7f:34

Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c8:7f:52
cat /proc/net/bonding/bond1
Ethernet Channel Bonding Driver: v3.4.0-1 (October 7, 2008)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c8:7f:3e

Slave Interface: eth4
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c8:7f:5c

七种bond模式说明:

第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)

 

特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降

 

第二种模式:mod=1,即: (active-backup) Active-backup policy(主-备份策略)

 

特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N

 

第三种模式:mod=2,即:(balance-xor) XOR policy(平衡策略)

 

特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力

 

第四种模式:mod=3,即:broadcast(广播策略)

 

特点:在每个slave接口上传输每个数据包,此模式提供了容错能力

 

第五种模式:mod=4,即:(802.3ad) IEEE 802.3adDynamic link aggregation(IEEE 802.3ad 动态链接聚合)

 

特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。

外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应性。

必要条件:

条件1:ethtool支持获取每个slave的速率和双工设定

条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation

条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

 

第六种模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)

 

特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。

该模式的必要条件:ethtool支持获取每个slave的速率

 

第七种模式:mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)

 

特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

附录三:网卡绑定--Windows-NIC Express  

转自http://water101.blog.163.com/blog/static/88937184200971882211534/

Windows下的网卡绑定一般有二种,

1 第三方软件如NIC Express

2 硬件厂商自带的如:broadcon的basp;Intel的自带的驱动程序(网卡必须支持绑定)

以下分开介绍:

 

NIC Express

       NIC Express绑定成功的朋友,并抓了图的,基本上使用的都是3com(905C)和Intel(82559)的网卡做测试和使用的.
不成功的,全部是使用普通的8139(100M),8169(8169),D530网卡.

总结出一个问题,NIC Express只是一个辅助工具,它和3com,intel的功能是一样的,只不过它的使用和界面要比其它两种界面友好的多,普通用户都能看懂.但是为什么有的成功而有的失败,原因在于3com和intel网卡在硬件上整合了负载均衡的模块(可以在NIC Express里面查看到两块网卡均有流量,拔掉任意一块的网线均可以正常工作),所以它们无论使用哪种软件(其中就包含NIC Express),都可以达到冗余容错和负载均衡功能,而普通的8139和其它网卡,在硬件上就不支持负载均衡功能,所以使用NIC Express只能达到冗余容错功能(可以在NIC Express里面查看到第二块网卡基本上没有流量,当你把第一块网卡网线拔了,第二快就接着工作,保证了网络的畅通),而无法使用负载均衡功能.

大家现在可以知道为什么有的人成功了,有的人失败的原因了吧,以后再也不用为NIC Express的使用方面争吵不休了.最后一句,如果你用的是8139网卡,使用NIC Express唯一能做到的就是冗余容错功能.不要再妄想1块钱能办5块钱的事,买个3com或intel网卡吧...

========================================================================================

NIC Express Enterprise V4.0 注册号:381567

========================================================================================

多网卡绑定NIC Express注册版
一款功能独特的网络加速程序。NIC Express可以通过绑定多块网卡
以增加网络的带宽.需要注意的一点,在绑定网卡时,网卡的传输速率必须相同NIC Express才可以在网络高负荷状态做到负载均衡,否则是没有任何意义的序列号: 381567

NIC Express Enterprise(增加带宽--多网卡绑)下载介绍:NIC Express是一款功能非常独特的网络加速程序(点击下载NIC Express),可以绑定多块网卡以组成一块虚拟网卡,这样可以增加网络的带宽,当然前提是网卡的传输速率必须相同,这样才能在网络高负荷状态时实现负载均衡,否则是没有任何意义的。

  程序的安装

  接下来,就可以开始安装和配置NIC Express,这里需要注意的主要有3个方面:

  1. 启用网络负载均衡

  安装过程中会弹出一个提示对话框,这里是询问是否启用“Load Balancing functionality”,即网络负载均衡,这个功能可以在数据流量比较大时自动分配到各个网卡产上,以减轻单块网卡的压力,从而达到流畅的访问效果,因此这里当然是选择“Enabled”啦。

  2. 虚拟网卡驱动程序的安装

  安装过程的最后会报告说NIC Express的虚拟网卡驱动程序未曾通过Windows徽标测试,无法验证同Windows XP的相容性,询问是否继续,请单击“仍然继续”按钮继续安装。

  3. 设置绑定的网卡

  接下来,我们需要对绑定的网卡进行设置。计算机中安装的所有网卡将在主窗口的“Available”列表框中出现,选中后单击“Add”按钮将其添加到下面的“Assigned Adapters”列表框中即可完成添加操作。

  默认设置下,绑定网卡组会使用“New Array”作为名称,当然也可以重新输入一个名称,然后会进入配置对话框,我们并不需要进行修改,直接使用默认设置即可。

  网卡组的设置

  进入“网络连接”窗口,可以看到本地连接图标已增加为3个,增加的那个“NIC Express Virtual Miniport”就是绑定后的网卡组,它的使用与单一网卡完全相同,相当于一个单一的虚拟网卡,按照单一网卡的设置参数进行设置即可,可以为这块虚拟网卡设置IP地址、子网掩码、网关等参数。

  1. 设置监控内容

  从开始菜单的程序组中找到“NIC Express Enterprise Edition”选项,这是NIC Express软件自带的一个监控程序,在“setting”标签页中可以设置网卡流量的计量单位,这里提供了Packets/Sec、 Mbits/Sec、Kbits/Sec三种单位,默认使用Mbits/Sec(兆/每秒),我们只需要在“Graph Detail”中将默认的“By Protocol”重置为“By Incoming/Outgoing”即可。

  如果你希望观察网卡组中每块网卡的流量或者整个组的流量,只要在“Select Device”中选择相应的设备即可。

  2. 设置网卡绑定模式

  切换到“Advanced”标签页,你可以在这里设置网卡绑定的工作模式,双网卡组默认工作在“NIC Express ELB”模式;如果需要关闭网络负载均衡功能,可以在这里选择“Load Balancing Disable”,其他的选项就不用设置了。
NIC Express可以通过绑定多块网卡以增加网络的带宽.需要注意的一点,在绑定网卡时,网卡的传输速率必须相同NIC Express才可以在网络高负荷状态做到负载均衡,否则是没有任何意义

以下是别人的总结:

1、经过实际使用,我发现使用NIC Express绑定的双网卡组运行的稳定性很好,没有出现过什么软件的冲突,我的一个朋友已经把它应用到自己的电信托管服务器上,运行了半年多了,也很稳定;

  2、理论上讲NIC Express绑定的网卡越多,效果提升应该越明显,如果可能大家可以自己动手绑定3块、4块网卡试试,不过切记使用的网卡最好是一个品牌一个型号;

  3、NIC Express最初被老鸟们拿来玩的时候,并没有想到应用在服务器上做网卡冗余阵列,大家多是把局域网内的几台电脑同时都绑定双网卡,这样各个电脑之间的传输速率和传输稳定性获得了明显的提升,后来大家发现只要其中一台电脑使用NIC Express绑定了双网卡组,其他使用单网卡的电脑访问这台有网卡绑定组的电脑,也能获得传输速率和稳定性的改善,于是我才想到将这个技术应用到服务器上。

  4、我个人认为使用NIC Express绑定多网卡,在当今这个数据时代具有一定的实际意义,无论是对于互联网服务器还是局域网服务器的用户都有启发,当我们为服务器绑定多网卡形成阵列之后,不仅可以扩大服务器的网络带宽,而且可以有效均衡负载和提高容错能力,避免服务器出现传输瓶颈或者因某块网卡故障而停止服务。

  5、也许你会说,在当今千兆网卡早已普及的时代,还费劲绑定几块百兆网卡做什么?其实绑定多网卡的目的并不是仅仅为了提高带宽,这样做还有一个最大的优点就是多块网卡可以有效增强服务器的负载承受能力和冗余容错能力。也许你也经历过,当使用单块10M/100M网卡在局域网里拷贝1G以上大文件的时候,经常会出现电脑停止响应,或者速度奇慢接近死机的情况,当多网卡绑定之后,这种情况会得到明显改善。

  6、大家再想想,如果绑定的不是几块百兆网卡,而是几块千兆网卡,会是什么局面?想不想试试?。

偶曾在windows2003上绑过,效果不是很好,片子是Intel的,好像那个型号不支持网卡绑定。

注:以上基本都是在网上转载的,基本都是整理了一下。

 

附录四:Windows Server 2012 R2功能体验之NIC组合(NIC Teaming)

转自http://blog.51cto.com/chenyantao/1579683

首先介绍一下NIC Teaming的用途,简单说来就是将多个网卡绑定到一起,生成一个逻辑的网卡来提供高可用和带宽聚合。NIC组合的成员网卡要求能正常连接到网络。Teaming是提高系统高可用的一种非常有用的方案,试想在生产环境中,不管系统如何健壮,如果主机的网卡出现问题,网卡连接的交换机端口出现问题乃至交换机出现问题,都会导致应用的不可用。基于对网络高可用的需求,NIC Teaming提供了一种廉价而高效的高可用解决方案。
      在早期版本的Windows,NIC Teaming的功能是通过第三方的解决方案来实现的,常用的有HP,Intel或Dell。这种情况会带来两个问题:1.每个供应商提供的解决方案都是基于各种的硬件来实现,不对其他供应商的硬件提供支持;2.如果在一个配置了Teaming的网络上出现连接错误,需要找第三方的供应商来解决问题,微软无法提供相应的支持。过去的项目中,曾经出现过使用Intel Teaming技术导致网络连接失败,查找原因后发现是Teaming的问题,接下来卸载驱动才解决问题,用了多块网卡不但没提供高可用,反而与微软的产品发生冲突,导致应用的不可用。在新的Windows Server 2012 R2版本中,微软终于给出了集成到操作系统的Teaming解决方案,
      Windows Server 2012的NIC Teaming模式有三种:
      静态成组(Static Teaming)这是一种依赖于对交换机(Switch-dependent)的组合方式,要求交换机的支持,并且成员网卡不能分散到不同的交换机上。可以参考下图:


 wKiom1RsUbyjp5UWAACkDRpAw7Y996.jpg

      交换机独立:网卡组合不需要交换机的参与,这样网卡可以连接到不同的交换机上,从交换机这个级别开始高可用。这种组合方式适用不支持网卡组合的交换机,由Windows Server 2012来完成相应的处理工作。
 

wKioL1RsUjSgHlbXAACwgqiL1UU568.jpg

      LACP:类似静态成组,需要先在交换机中启用LACP,会把多块网卡合并成一个逻辑的线路,这种组合方式的速度是最快的。
      除了网卡成组的模式需要配置,还需要配置Teaming进行负载均衡的模式,模式也是有三种:
      地址哈希(Address Hash):启用该方式后,数据包到达Teaming后,会根据目的地址信息(MAC地址,IP地址和端口号)执行哈希算法,通过算法的结果,NIC Team决定由哪块物理网卡发送数据包。这种方式无法控制流量的走向,如果有大量数据是流向一个目标地址,那么只会通过一块物理网卡来发送。
      Hyper-V端口:正如名字显示的,用于Hyper-V的模式,与无法控制的地址哈希相比,这种方式效率更高,数据会通过绑定虚拟网卡的不同物理网卡传输,同时这种绑定是基于每个虚拟网卡,而不是每台虚拟机的。如果是使用Hyper-V外部虚拟交换机建议选择这种方式。
      动态:这种方式是在Windows Server 2012 R2中新引入的方式,也是最优化的方式,数据会被平分到所有的成员网卡上,最大效率的利用带宽。

 

      创建一个NIC Teaming的方法很简单,只需要简单的鼠标动几下:
      1. 打开服务器管理器,选择本地服务器,可以看到NIC Teaming是禁用的。点击Disable启用功能。      

 

wKiom1RsUb-R276AAALhacHCKRg385.jpg

 

      2. 在组任务中选择新建组,或者在右面可用网卡中选择相应的网卡,然后右键选择加入到新组。

 

wKiom1RsUcHwDd2HAAItLG4m3Bg148.jpg      3. 为组设置名字并选择好模式后,即可成功建立起NIC Teaming。同时多说一句,如果模式选择交换机独立,那么聚合的时间会稍微长一些,需要耐心等待一下。


 wKioL1RsUjnTT-VKAAGSCmdivWM917.jpg

 

附录 主流服务器网卡Teaming模式配置(上)

转自 http://server.it168.com/a2010/0723/1081/000001081286_all.shtml

目前市面上服务器网卡中Intel和Broadcom较为常见,本文就以此两个品牌的网卡Teaming模式的配置进行介绍。

  一、测试使用的网卡:

  Intel:Intel PRO/1000 PT Dual Port Server Adapter

  芯片组:Intel 82571GB Gigabit Controller(图1)
 

测试环境

  Broadcom:Broadcom BCM5708C NetXtreme Ⅱ GigE

  芯片组:Broadcom BCM5708C(图2)
 

测试环境

  二、测试环境

  硬件:IBM 3650

  软件:Windows server 2008 R2 (偶也尝尝鲜,嘿嘿)

  三、Teaming模式配置

  1. Intel篇

  将网卡安装好后,启动操作系统,Windows Server 2008 R2此时已经识别出了两块网卡,并且已经通过DHCP自动获取到了IP地址(图3)
 

  但是此时点击网卡的属性发现,驱动程序虽然是09年3月份的,但是相关的高级属性配置选项却没有,看来还是要去Intel官方下载相关驱动管理程序才可以呀。(图4)
 

  在官网中找到Intel Ethernet Drivers and Software for Multiple Operating Systems 从描述中知道该程序支持多种OS及数种Intel网卡。下载到本地后,运行Autorun,选择【安装驱动程序和软件】(图5)
 

  弹框提示(图6)
 

  选择需要安装的功能(图7)
 

  驱动程序安装好后,再次点击网卡属性发现,驱动程序已更新至09年6月,并且相应的高级功能选项也出现了。(图8)
 

  此时点击【分组】,勾选【将此适配器与其他适配器组合】,并单击【新组】,来创建一个Teaming(图9)
 

  先给新组起个名字,这里我就叫【Team 1#】(图10)
 

  然后勾选要组成Team的网卡(图11)
 

 

  下一步就要选择网卡组的类型了,这里Intel一共支持5中类型的组模式,分别是:适配器容错、适应性负载均衡、静态链接聚合、IEEE802.3 ad动态链接聚合、交换机容错。其中适配器容错和交换机容错主要是为了防止硬件设备的单点故障。两种链接聚分别代表两种状态,旨在提高交换器之间或服务器和交换器之间的吞吐量。而我要使用的组模式为适应性负载均衡。关于适应性负载均衡的说明如下:

  适应性负载平衡

  适应性负载平衡(ALB) 在交换器端口、电缆或适配器发生故障时提供传输通信量的负载平衡及容错。

  英特尔(R) PROSet 分析各成员适配器的传输负载并在成员适配器之间平衡通信量。一个适配器接受所有接收通信量。

  ALB 组有用于接收负载平衡 (RLB) 的选项。RLB 允许组在所有成员适配器之间平衡接收通信量。RLB 默认启用。

  可以为组选择主适配器和次适配器,但在 RLB 禁用的情况下则不是必需的。如果启用了 RLB,则会自动指派主适配器。

  RLB 必须有一个主适配器。您可以将一个新适配器设定为主适配器,但是不能从组中移除此主适配器。

  RLB 禁用的情况下,设定主适配器为可选。

  在 RLB 禁用的情况下,主适配器是接收通信量的唯一适配器。

  如果启用了 RLB,则会自动将功能最健全的高速度适配器选定并标为主适配器。

  如果更改或添加了主适配器,该组将重新加载,导致短时间丢失连接。

  配置说明

  ALB 不平衡非路由协议,如 NetBEUI 和一些 IPX* 通信量。

  AFT 支持每组两到八个适配器端口。

  RLB 在 Hyper-V* 上不受支持。

  组成员不必以相同的速度或双工模式运行。

  此组类型不要求配置交换器。

  此种组类型适用于任何交换器或集线器。

  适应性负载均衡实际是取了容错和链接聚合的优点。(图12)
 

  选择完组类型,完成向导。(图13)
 

  接下来,向导会生成一块类型为组的逻辑网卡,本文为【本地连接5】,同时查看此网卡属性,可以发现已经包含了组里的两块物理网卡,并处于活动状态。(图14)
 

  此时点击【修改组】,可查看和修改组的配置信息,比如在【适配器】中就可以设置主次适配器,此适配器可以不用设置,但一定要有一个主适配器,并且是自动指派的。(图15)
 

  这时两块物理网卡的TCP/IP协议已经不允许在进行配置了,这个和HYPER-V的父分区有点像,类似一个虚拟交换机。(图16)
 

  不过可以通过编辑逻辑网卡的TCP/IP协议来定义IP地址(图17)
 

  使用IPCONFIG命令查看一下,IP地址没有问题,与外网通信也正常。(图18)
 

附录:linux平台双mysql数据库冗余配置

转自http://wenku.it168.com/d_000604031.shtml

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值