運維-技能大雜燴


描述

  此文檔記錄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

技能8: 如何查看某個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

技能9: 如何遠程重啟服務器BMC?

  采用ipmitool重啟服務器BMC。

# ipmitool -H <ipmi address> -I lanplus -U <user> -P <password> mc reset cold
$ ipmitool -H 192.168.4.127-I lanplus -U admin -P admin mc reset cold

技能10: openstack 雲主機磁盤在線擴容操作

  當在openstack擴容塊設備時,文件系統識別不了擴容的容量,下面以centos為例。

# 可以通過執行blkid命令可以看到文件系統類型

# 當使用的是ext4格式文件系統擴容(擴vdb,不是分區vdb1)
$ umount /dev/vdb 
$ 開始擴容磁盤
$ e2fsck -f /dev/vdb
$ resize2fs /dev/vdb size
$ mount /dev/vdb /mnt

# 使用xfs格式文件系統擴容(擴vdb,不是分區vdb1)
$ umount /dev/vdb 
$ 平台擴容磁盤
$ mount /dev/vdb /mnt
$ xfs_growfs /dev/vdb

# 如果掛載使用的是分區,則使用以下方法擴容,使用growpart工具擴容
# 格式:growpart 塊設備 分區號
$  growpart /dev/vdb 1
unexpected output in sfdisk --version [sfdisk,來自 util-linux 2.23.2]
$ echo $LANG
zh_CN.UTF-8
$ LANG=en_US.UTF-8
$ growpart /dev/vdb 1
CHANGED: partition=1 start=2048 old: size=419428352 end=419430400 new: size=4294965248 end=4294967296
$ xfs_growfs /dev/vdb1 (ext4文件系統要umount)

技能11: windows設置靜態路由?

  多網絡連接情況下,配置靜態路由實現多網絡連接。

# 首先要有超級管理員打開命令行終端,輸入route print -4 查看當前ipv4路由表
# 添加一條路由條目
$ route add 157.0.0.0 MASK 255.0.0.0 157.55.80.1

# 添加一條永久路由條目(-p 表示永久路由,重啟后不丟失)
$ route add 157.0.0.0 MASK 255.0.0.0 157.55.80.1 -p

# 刪除路由條目
$ route delete 157.0.0.0 MASK 255.0.0.0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM