• 运维-技能大杂烩


    描述#

      此文档记录Centos实际生产环境遇到的一些疑难杂点且比较实用的配置,以此纪录形成知识归档。

    技能1: centos7修改网卡名

      因客户业务系统从vmware迁移至openstack,原来网卡名是ens开头,迁移到opensatck是eth开头,
    现在客户要求保留原有的网卡名,通过修改udev配置文件实现。

    $ vim /etc/udev/rules.d/70-persistent-ipoib.rules 
    ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="58:c7:ac:c7:45:76", NAME="ens32"
    $ reboot
    # ATTR{address}=="现有网卡的mac地址"
    # NAME="改成的网卡名"
    
    技能2: centos7 配置静态路由

      运行在openstack的虚拟机有多网卡的承载不同的物理平面的网络,比如业务网、管理网、存储网等。但是默认路由只有一条,所以只能通过静态路由来指定路由。

    • for example:
      • 虚拟机eth0是管理网:10.0.43.0/24
      • 虚拟机eth1是业务网:10.0.54.0/24
      • 虚拟机默认路由是业务网default via 10.0.54.1 dev eth1
      • 现在虚拟机的管理网,想要跟10.0.44.0/24管理网通,就要配置静态路由打通,不然会走业务网出去导致网络不通。
    $ cat << EOF > /etc/sysconfig/network-scripts/route-eth0
    10.0.44.0/24 via 10.0.43.1 dev eth0
    EOF
    $ systemctl restart network
    # 访问的目标网络 via 管理网网关 dev 管理网的interface
    
    # 动态生效静态路由(不用重启network)
    $ route add -net 10.0.44.0/24 gw 10.0.43.1
    $ ip route add 10.0.44.0/24  via 10.0.43.1 dev eth0
    
    # 获取IP地址走的是哪条路由
    $  ip route get 10.0.26.211
    local 10.0.26.211 dev lo src 10.0.26.211 
        cache <local> 
    
    # 动态生效默认路由
    $ route add default gw gateway_ip 
    
    技能3: centos7单网卡配置子接口

      在生产环境,有可能服务器只有一个业务口可用,而上联交换机端口做了trunk口模式,可以采用此方法进行配置通信。

    # eth2修改为自己的网卡名
    $ cat > /etc/sysconfig/network-scripts/ifcfg-eth2 << EOF
    # Created by cloud-init on instance boot automatically, do not edit.
    BOOTPROTO=none
    DEVICE=eth2
    NAME=eth2
    ONBOOT=yes
    TYPE=Ethernet
    EOF
    
    # eth2.760修改为自己的网卡名和vlan
    $ cat  > /etc/sysconfig/network-scripts/ifcfg-eth2.760  << EOF
    BOOTPROTO=none
    NAME=eth2.760
    DEVICE=eth2.760
    ONBOOT=yes
    IPADDR=192.168.10.20
    PREFIX=24
    NETWORK=192.168.10.1
    VLAN=yes 
    EOF
    
    技能4: centos7双网卡配置bond4

      在生产环境业务网络通常跑的业务流量比较大,万兆口通常不够用且不可靠,所以要做聚合,本文以bond4链路聚合为例(比较常用)。

    服务器配置bond4,上联交换机端口要做动态链路聚合

    # ens2f0接口,作为bond4的其中一个接口
    # MASTER=bond名字
    $ cat << EOF > /etc/sysconfig/network-scripts/ifcfg-ens2f0
    TYPE=Ethernet
    PROXY_METHOD=none
    BOOTPROTO=none
    NAME=ens2f0
    DEVICE=ens2f0
    ONBOOT=yes
    MASTER=bondmg 
    SLAVE=yes
    EOF
    
    # ens1f0接口,作为bond4的其中一个接口
    # MASTER=bond名字
    $ cat << EOF > /etc/sysconfig/network-scripts/ifcfg-ens1f0
    TYPE=Ethernet
    PROXY_METHOD=none
    BOOTPROTO=none
    NAME=ens1f0
    DEVICE=ens1f0
    ONBOOT=yes
    MASTER=bondmg
    SLAVE=yes
    EOF
    
    # 配置bond4
    # ifcfg-bond名字
    $ cat << EOF > /etc/sysconfig/network-scripts/ifcfg-bondmg
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=none
    BOOTPROTO=static # 如果使用子接口,则把这行注视掉
    IPADDR=192.168.1.7 # 如果使用bond子接口,则把这行注视掉
    NETMASK=255.255.255.0 # 如果使用bond子接口,则把这行注视掉
    DEFROUTE=yes # 如果使用bond子接口,则把这行注视掉
    IPV4_FAILURE_FATAL=no
    NAME=bondmg
    DEVICE=bondmg
    ONBOOT=yes
    BONDING_MASTER=yes
    BONDING_OPTS='mode=4 miimon=100 lacp_rate=1 xmit_hash_policy=1'
    EOF
    
    # 如果走bond子接口,则配置,否则跳过。
    # ifcfg-bond名字.vlan_id
    cat << EOF > /etc/sysconfig/network-scripts/ifcfg-bondmg.102
    TYPE=Ethernet
    PROXY_METHOD=none
    DEFROUTE=yes
    BROWSER_ONLY=no
    BOOTPROTO=none
    IPADDR=192.168.1.7
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    IPV4_FAILURE_FATAL=no
    NAME=bondmg.102
    DEVICE=bondmg.102
    ONBOOT=yes
    VLAN=yes
    EOF
    
    折叠
    技能5: centos进行抓包

      在云生产环境,虚拟机通常遇到网络不通,可通过tcpdump or ovs-tcpdump工具进行抓包判断那个路径丢包。

    在ovs环境下,抓取ovs的bridge or port 可采用ovs-tcpdump

    # 抓取bonddata的包
    $ tcpdump -i bonddata [arp or icmp] host [vm_ip or vm_gateway] -nne
    # 抓取ovs br-int的包
    $ ovs-tcpdum -i br-int [arp or icmp] host [vm_ip or vm_gateway] -nne
    # 抓取bonddata的[in or out]的包
    $ tcpdump -i bonddata [arp or icmp] host [vm_ip or vm_gateway] -Q [in or out] -nne
    # 抓取bonddata 的vxlan包
    $ tcpdump -i bonddata dst 172.18.70.72(目的pod物理业务网卡IP) and udp
    
    技能6: centos IPv4的dhclient守护进程持久化配置

      在云生产环境,虚拟机通常采用dhcp的方式获取到IP,但是会出现一个问题,有时候会出现虚拟机的IP没了。是因为IPv4的dhclient进程配置为“非持久化”,当dhclient向DHCP服务器发送一次请求报文而无响应,则会间隔一段时间后退出,退出值为2。要配置dhclient为持久化才得以解决该问题PERSISTENT_DHCLIENT=1,这样dhclient会向DHCP服务器反复发送请求报文。

    $ vim  /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    USERCTL=yes
    TYPE=Ethernet
    DEFROUTE=no # 设置是否为默认路由
    HWADDR=fa:16:3e:3f:7a:d5
    PERSISTENT_DHCLIENT=1  # dhclient进程配置为“持久化”
    

    技能7: unbuntu 静态路由配置#

      运行在openstack的虚拟机有多网卡的承载不同的物理平面的网络,比如业务网、管理网、存储网等。但是默认路由只有一条,所以只能通过静态路由来指定路由。

    # 动态生效静态路由(不用重启network)
    $ route add -net 10.63.0.0/16 gw 10.64.29.1
    $ ip route add 10.63.0.0/16  via 10.64.29.1 dev ens9
    
    # 持久化静态路由配置
    $ vim /etc/network/interfaces
    auto ens9
    iface ens9 inet static
    address 10.64.29.44
    netmask 255.255.255.0
    up route add -net  10.63.0.0 netmask 255.255.0.0 gw 10.64.29.1 ens9
    

    技能6: 如何查看某个IP走的是哪条路?#

      检查IP走的路由。

    # 获取10.63.0.5从哪条路由出去
    $ ip route get 10.63.0.5 
    10.63.0.5 dev ens9 src 10.64.29.1
        cache
    
    # 删除路由
    $ ip route del 10.63.0.0/16
    
    
  • 相关阅读:
    auto关键字和基于范围的for循环及nullptr——C++
    Leetcode347. 前 K 个高频元素 Top K Frequent Elements - Python 以小顶堆实现
    通讯录管理系统JAVA版本
    简单的学生网页作业源码 基于html css javascript jquery bootstarp响应式网页设计——大理我的家乡旅游景点
    【网格黑科技】扒一扒你所不知道的Cast-Designer网格黑科技
    信号与线性系统分析(吴大正,郭宝龙)(信号的分类)
    如何利用产品帮助中心提升用户体验
    【Spring系列】- Bean生命周期底层原理
    vue 封装一个Dialog组件
    探索云原生时代:技术驱动的业务架构革新
  • 原文地址:https://www.cnblogs.com/acommoners/p/16111717.html