墨少离 - 个人小站,分享一些资源以及心得~ - centos https://www.msl.la/tag/centos/ zh-CN Sun, 21 Feb 2021 16:42:14 +0800 Sun, 21 Feb 2021 16:42:14 +0800 CentOS7同时接入两个不同ISP的局域网 https://www.msl.la/archives/168/ https://www.msl.la/archives/168/ Sun, 21 Feb 2021 16:42:14 +0800 墨少离
  • CentOS双ISP配置

    • 为物理网卡创建单独的路由表
    • 分别为向新创建的路由表添加路由规则(非持久化,重启机器或网络后失效)
    • 通过ip rule制定策略,将路由表与网络数据绑定(非持久化,重启机器或网络后失效)
    • 测试
    • iproute定义的route 和rule持久化,避免重启机器或网络后失效
    • centos终于可以像windows一样自动判断来源网卡设定回归的路由
    • 环境
    • iproute2 与 route命令
    • 如何配置iproute2
    • route命令的缺陷
  • CentOS双ISP配置

    目标: 一台服务器通过多个网卡连接多个网络,能够保证不同网络的来的数据能够按照原路返回,同时通过这两个网络中任意一个的外网ip或域名访问正常。

    环境

    • 网络环境:

      • 两个网段192.168.199.0/24 192.168.1.0/24,两个网段物理隔离,分别从两个不同的ISP供应商连接互联网。
      • TPlink路由器绑定域名 longxintaiye.f3322.net
      • 极路由绑定域名 longsun.jios.org
    • 服务器:
    • 操作系统: CentOS 7 minimal
    • 两个物理网卡分别绑定两个网桥br0 br1,实际相当于两个物理网卡(后面直接把网桥当作物理网卡来理解)
    • br0连接极路由:ip 192.168.199.11 通过极路由映射端口22,外网访问地址为 longsun.jios.org:1122
    • br1连接路由器TPLink:ip 192.168.1.11 通过TPLink映射端口22,外网访问地址为 longxintaiye.f3322.net:1122
    • 测试机
    • 阿里云服务器,CentOS 7 安装Telnet 外网测试访问22端口是否能通

    iproute2 与 route命令

    • route命令属于net-tools工具包的一个命令,从2001年不再维护,很多linux内核支持的新的网络特性无法通过route命令实现
    • iproute2从centos7以后替换net-tools工具的成为系统默认网络工具,支持route策略配置及流量控制等功能

      为什么只有用iproute2的ip命令才能够解决双路问题?

    • ip route 命令支持定义多张路由表,每个路由表都可以自由设定默认路由静态路由等策略
    • ip rule 支持定义策略,将不同类型的网络数据跟不同路由表绑定,例如:

      • 极路由192.168.199.0/24网络里发送到br0网卡上的数据包,会根据br0的路由表T2(自定义标号为202)指定的网关192.168.199.1返回极路由;
      • TPLink路由器中192.168.1.0/24网络里发送到br1网卡的数据包会根据br1对应的路由表T1(自定义标号为201)中的默认网关192.168.1.1,发送回TPLink;
    • route只能维护一张路由表,只能有一个默认网关比如:192.168.1.1
    1. TPLink路由器发送到br1网卡的数据包,会根据默认路由表中的网关送回到192.168.1.1 TPLink去,此时链路正常
    2. 极路由发送到br0网卡的数据包,会根据route的默认路由表中的网关送回到192.168.1.1, TPLink没有接受过这个数据包,也无法获取源地址正确的转回去。

    如何配置iproute2

    为物理网卡创建单独的路由表

    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

    通过ip rule制定策略,将路由表与网络数据绑定(非持久化,重启机器或网络后失效)

    将来自于网关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命令测试,服务器域名及服务器在两个路由器上对应的外网映射端口,如果有交互操作说明可以连通,注意关闭服务器上的防火墙。

    iproute定义的route 和rule持久化,避免重启机器或网络后失效

    • 新增路由表

      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

    • 从外网测试连接成功

    centos终于可以像windows一样自动判断来源网卡设定回归的路由

    route命令的缺陷

    route命令创建的路由表相当于,iproute2中的main路由表,只能设置一个网关,会根据default网关的添加顺序及metric权重值来取做唯一的网关,一般情况下最后添加的及metric最小的默认路由生效

    ]]>
    0 https://www.msl.la/archives/168/#comments https://www.msl.la/feed/tag/centos/
    CentOS 7 iSCSI 多路径(Multipath)配置 https://www.msl.la/archives/153/ https://www.msl.la/archives/153/ Sun, 21 Feb 2021 16:34:33 +0800 墨少离 iSCSI简介

    iSCSI(Internet Small Computer System Interface,发音为/аɪskʌzi/),Internet小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,由IETF提出,并于2003年2月11日成为正式的标准。与传统的SCSI技术比较起来,iSCSI技术有以下三个革命性的变化:

    1. 把原来只用于本机的SCSI协义通过TCP/IP网络发送,使连接距离可作无限的地域延伸;
    2. 连接的服务器数量无限(原来的SCSI-3的上限是15);
    3. 由于是服务器架构,因此也可以实现在线扩容以至动态部署。

    环境介绍

    +--------------------+                 |                 +-------------------+
    |  [ iSCSI Target ]  | 192.168.233.101 | 192.168.233.102 |[ iSCSI Initiator ]|
    |      node01        +-----------------+-----------------+      node02       |
    |  192.168.233.132   |                                   |                   |
    +--------------------+                                   +-------------------+
    1. 两台主机node01和node02, 都是Vmware出来的虚拟机,安装CentOS 7最小系统;
    2. node01准备用来配置iSCSI target,为了配置多路径,配有两块网卡eth0eth1,ip分别是192.168.233.101192.168.233.132
    3. node02用来配置iSCSI initiator,只有一块网卡eth0,ip为192.168.233.102;
    4. node01和node02都带有/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-release

    target设置

    安装 scsi-target-utils

    yum --enablerepo=epel -y install scsi-target-utils

    配置

    vi /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.service

    查看服务

    tgtadm --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.102

    Initiator配置

    安装

    yum -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

    可以看到,sddsde就是通过iSCSI挂载得到的磁盘,此时通过fdisk -l命令可以发现这两块磁盘和node01的/dev/sdb完全一样,为了正常使用这块磁盘,我们还需要配置磁盘多路径。

    配置多路径软件(Multipath)

    什么是多路径?

    普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路径可以选择。每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流量如何分配?其中一条路径坏掉了,如何处理?还有在操作系统的角度来看,每条路径,操作系统会认为是一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带来了困惑。多路径软件就是为了解决上面的问题应运而生的。

    多路径的主要功能就是和存储设备一起配合实现如下功能:

    1. 故障的切换和恢复
    2. IO流量的负载均衡
    3. 磁盘的虚拟化

    为了主机可以使用 iSCSI 多路径访问存储设备,我们需要在主机上安装多路径设备映射器 (DM-Multipath)。多路径设备映射器可以实现主机节点和后端存储之间的多个 I/O 路径配置为一个单一逻辑设备,从而可以提供链路冗余和提高性能。主机通过访问包含多个 I/O 路径的逻辑设备,就可以有效提高后端存储系统的可靠性。

    安装

    yum install device-mapper-multipath

    设置开机启动

    systemctl 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做分区、格式化和创建逻辑卷等各种磁盘操作了,此处不表。

    ]]>
    0 https://www.msl.la/archives/153/#comments https://www.msl.la/feed/tag/centos/