CentOS双ISP配置
目标: 一台服务器通过多个网卡连接多个网络,能够保证不同网络的来的数据能够按照原路返回,同时通过这两个网络中任意一个的外网ip或域名访问正常。
网络环境:
iproute2从centos7以后替换net-tools工具的成为系统默认网络工具,支持route策略配置及流量控制等功能
ip rule 支持定义策略,将不同类型的网络数据跟不同路由表绑定,例如:


iproute定义路由表的配置文件在/etc/iproute2/rt_table,最多可以有255个路由表。我们只需要分别为br1 br0创建T1 T2路由表,编辑/etc/iproute2/rt_table并添加201 T1 202 T2保存退出即可
为br1添加路由规则到T1表中
#将从192.168.1.11来到数据包指定到br1网卡上/usr/sbin/ip route add 192.168.1.0/24 dev br1 src 192.168.1.11 table 201#指定本路由表默认网关为192.168.1.1/usr/sbin/ip route add default via 192.168.1.1 table 201#查看路由表/usr/sbin/ip route show table T1为br0添加路由规则到T2表中
#将从192.168.199.11来到数据包指定到br1网卡上/usr/sbin/ip route add 192.168.199.0/24 dev br0 src 192.168.199.11 table 202#指定本路由表默认网关为192.168.199.1/usr/sbin/ip route add default via 192.168.199.1 table 202#查看路由表/usr/sbin/ip route show table T2将来自于网关192.168.1.1的数据包绑定到路由表T1上,按照T1的路由规则执行
/usr/sbin/ip rule add from 192.168.1.11 table T1将来自于网关192.168.199.1的数据包绑定到路由表T2上,按照T1的路由规则执行
/usr/sbin/ip rule add from 192.168.199.11 table T2在阿里云的主机上通过telnet命令测试,服务器域名及服务器在两个路由器上对应的外网映射端口,如果有交互操作说明可以连通,注意关闭服务器上的防火墙。
新增路由表
echo " 201 T1202 T2" >> cat /etc/iproute2/rt_tables为br0 br1 创建route规则配置文件
echo "192.168.199.0/24 dev br0 src 192.168.199.11 table 202default via 192.168.199.1 table 202" > /etc/sysconfig/network-scripts/route-br0echo "192.168.1.0/24 dev br1 src 192.168.1.11 table 201default via 192.168.1.1 table 201" > /etc/sysconfig/network-scripts/route-br1创建rule规则文件
echo "from 192.168.199.11 table T2" > /etc/sysconfig/network-scripts/rule-br0echo "from 192.168.1.11 table T1" > /etc/sysconfig/network-scripts/rule-br1重启网络检查路由配置情况
systemctl restart networkip route show table T1ip route show table T2ip rule show
route命令创建的路由表相当于,iproute2中的main路由表,只能设置一个网关,会根据default网关的添加顺序及metric权重值来取做唯一的网关,一般情况下最后添加的及metric最小的默认路由生效
]]>iSCSI(Internet Small Computer System Interface,发音为/аɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:
+--------------------+ | +-------------------+
| [ iSCSI Target ] | 192.168.233.101 | 192.168.233.102 |[ iSCSI Initiator ]|
| node01 +-----------------+-----------------+ node02 |
| 192.168.233.132 | | |
+--------------------+ +-------------------+CentOS 7最小系统;iSCSI target,为了配置多路径,配有两块网卡eth0和eth1,ip分别是192.168.233.101和192.168.233.132;iSCSI initiator,只有一块网卡eth0,ip为192.168.233.102;/dev/sdb和/dev/sdc两块硬盘,接下来的配置,将会把node01的/dev/sdb作为iSCSI块设备共享给node02。关闭selinux
setenforce 0
sed -i '/^SELINUX=.*/ s//SELINUX=disabled/' /etc/selinux/config关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service安装epel扩展包
yum install -y epel-releaseyum --enablerepo=epel -y install scsi-target-utilsvi /etc/tgt/target.conf添加如下配置
<target iqn.2016-06.airborne007.com:target00>
# 把/dev/sdb作为块设备共享出去
backing-store /dev/sdb
# 可选,iSCSI Initiator限制
initiator-address 192.168.233.102
# 可选,认证配置,username和password配置成你自己的信息
incominguser username password
</target>systemctl enable tgtd.service
systemctl start tgtd.servicetgtadm --mode target --op show结果如下:
Target 1: iqn.2016-06.airborne007.com:target00
System information:
Driver: iSCSI
State: ready
I_T nexus information:
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
SWP: No
Thin-provisioning: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 32212 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
SWP: No
Thin-provisioning: No
Backing store type: rdwr
Backing store path: /dev/sdb
Backing store flags:
Account information:
admin
ACL information:
192.168.233.102yum -y install iSCSI-initiator-utils# vi /etc/iSCSI/initiatorname.iSCSI
InitiatorName=iqn.2016-06.airborne007.com:target00# vi /etc/iSCSI/iSCSId.conf
# 以下配置,如果你target没有配置ACL限制,可以直接跳过,使用默认配置即可
# 57行:取消注释
node.session.auth.authmethod = CHAP
# 61,62行:取消注释,用户名和密码设置成前面在target里面设置好的
node.session.auth.username = username
node.session.auth.password = password# iSCSIadm -m discovery -t sendtargets -p 192.168.244.101
192.168.233.101:3260,1 iqn.2016-06.airborne007.com:target00# iSCSIadm -m discovery -t sendtargets -p 192.168.233.132
192.168.233.132:3260,1 iqn.2016-06.airborne007.com:target00# iSCSIadm -m node -o show
# BEGIN RECORD 6.2.0.873-33
node.name = iqn.2016-06.airborne007.com:target00
node.tpgt = 1
node.startup = automatic
node.leading_login = No
...
node.conn[0].iSCSI.IFMarker = No
node.conn[0].iSCSI.OFMarker = No
# END RECORD
# BEGIN RECORD 6.2.0.873-33
node.name = iqn.2016-06.airborne007.com:target00
node.tpgt = 1
node.startup = automatic
node.leading_login = No
...
node.conn[0].iSCSI.IFMarker = No
node.conn[0].iSCSI.OFMarker = No
# END RECORD# iSCSIadm -m node --login
iSCSIadm -m node --login
Logging in to [iface: default, target: iqn.2016-06.airborne007.com:target00, portal: 192.168.233.101,3260] (multiple)
Logging in to [iface: default, target: iqn.2016-06.airborne007.com:target00, portal: 192.168.233.132,3260] (multiple)
Login to [iface: default, target: iqn.2016-06.airborne007.com:target00, portal: 192.168.233.101,3260] successful.
Login to [iface: default, target: iqn.2016-06.airborne007.com:target00, portal: 192.168.233.132,3260] successful.# iSCSIadm -m session -o show
tcp: [1] 192.168.233.101:3260,1 iqn.2016-06.airborne007.com:target00 (non-flash)
tcp: [2] 192.168.233.132:3260,1 iqn.2016-06.airborne007.com:target00 (non-flash)# cat /proc/partitions
major minor #blocks name
11 0 617472 sr0
8 0 20971520 sda
8 1 512000 sda1
8 2 20458496 sda2
8 16 31457280 sdb
8 32 31457280 sdc
253 0 18317312 dm-0
253 1 2097152 dm-1
8 48 31457280 sdd
8 64 31457280 sde可以看到,sdd和sde就是通过iSCSI挂载得到的磁盘,此时通过fdisk -l命令,你可以发现这两块磁盘和node01的/dev/sdb完全一样,为了正常使用这块磁盘,我们还需要配置磁盘多路径。
普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择。每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流量如何分配?其中一条路径坏掉了,如何处理?还有在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带来了困惑。多路径软件就是为了解决上面的问题应运而生的。
多路径的主要功能就是和存储设备一起配合实现如下功能:
- 故障的切换和恢复
- IO流量的负载均衡
- 磁盘的虚拟化
为了主机可以使用 iSCSI 多路径访问存储设备,我们需要在主机上安装多路径设备映射器 (DM-Multipath)。多路径设备映射器可以实现主机节点和后端存储之间的多个 I/O 路径配置为一个单一逻辑设备,从而可以提供链路冗余和提高性能。主机通过访问包含多个 I/O 路径的逻辑设备,就可以有效提高后端存储系统的可靠性。
yum install device-mapper-multipathsystemctl enable multipathd.service需要multipath正常工作只需要如下配置即可,如果想要了解详细的配置,请参考Multipath
# vi /etc/multipath.conf
blacklist {
devnode "^sda"
}
defaults {
user_friendly_names yes
path_grouping_policy multibus
failback immediate
no_path_retry fail
}systemctl start multipathd.service# multipath -ll
mpatha (360000000000000000e00000000010001) dm-2 IET ,VIRTUAL-DISK
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
|- 3:0:0:1 sdd 8:48 active ready running
`- 4:0:0:1 sde 8:64 active ready running此时,执行lsblk命令就可以看到多路径磁盘mpatha了:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-root 253:0 0 17.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 30G 0 disk
sdc 8:32 0 30G 0 disk
sdd 8:48 0 30G 0 disk
└─mpatha 253:2 0 30G 0 mpath
sde 8:64 0 30G 0 disk
└─mpatha 253:2 0 30G 0 mpath
sr0 11:0 1 603M 0 rom接下来,就可以对mpatha做分区、格式化和创建逻辑卷等各种磁盘操作了,此处不表。