東莞市建設(shè)網(wǎng)站首頁百度怎樣發(fā)布作品
項目背景:
比如我有三個項目 A,B,C;其中A項目部署在物理機上,B,C項目部署在 虛擬機V1,V2中,三個項目接口需要相互調(diào)用。
需要解決的問題點:
1,因為A,B,C項目接口相互調(diào)用,所以調(diào)用的地址需要靜態(tài)不變的
2,B,C項目需要讀取物理機的物理網(wǎng)卡的鏡像流量信息
解決思路:
1,B,C使用主機模式創(chuàng)建虛擬機部署,這樣虛擬機和物理機都是在同一個網(wǎng)段,且物理機和虛擬機的ip都是固定的
2,因為B,C需要讀取物理網(wǎng)卡的流量信息,之前采用網(wǎng)橋模式,把虛擬機和物理機的物理網(wǎng)卡綁定在同一個網(wǎng)橋上,經(jīng)過測試,如果pcap包在物理機上向網(wǎng)橋回放流量包信息是虛擬機可以收到流量,但是向物理網(wǎng)卡回放鏡像流量包,虛擬機無法讀取向物理網(wǎng)卡回放的流量信息。所以這種方法就廢棄了,采用passthrough的方法,將物理機的物理網(wǎng)卡綁定到虛擬機上,這樣,無論是通過交換機或者其他硬件設(shè)備向物理機的物理網(wǎng)卡發(fā)送流量信息,虛擬機的虛擬網(wǎng)卡都可以收到流量信息。
使用前需要安裝軟件 見博客虛擬機軟件安裝
步驟
1 開啟物理機的虛擬機化(passthrough支持)
1.1 /etc/default/grub 配置
vi /etc/default/grub
文件添加 intel_iommu=on iommu=pt
位置如下
1.2 激活配置
-
查看服務(wù)器 啟動是UEFI啟動還是BIOS啟動,命令如下
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS -
查看系統(tǒng)系統(tǒng)啟動方式
如果是UEFI啟動 執(zhí)行命令 grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
如果是BIOS 啟動 執(zhí)行命令 grub2-mkconfig -o /etc/grub2.cfg -
重啟服務(wù)器
reboot -
是否生效
cat /proc/cmdline
2 操作系統(tǒng)配置
2.1 開啟操作系統(tǒng)ip forward轉(zhuǎn)發(fā)
1)配置
vi /etc/sysctl.conf
增加一行 net.ipv4.ip_forward=1
2)激活配置
sysctl -p /etc/sysctl.conf
3 Nat網(wǎng)絡(luò)配置
3.1 刪除系統(tǒng)默認(rèn)安裝的default網(wǎng)橋
virsh net-destroy default
virsh net-undefine default
3.2 default.xml (文件已提供)拷貝到 /etc/libvirt/qemu/networks/目錄下
cp default.xml /etc/libvirt/qemu/networks/
default.xml內(nèi)容如下
<network><name>default</name><uuid>37268901-d790-4304-b5b8-2a236c16d756</uuid><forward mode='nat'><nat><port start='1024' end='65535'/></nat></forward><bridge name='virbr0' stp='on' delay='0'/><mac address='52:54:00:b3:3d:df'/><ip address='96.66.23.2' netmask='255.255.255.0'><dhcp><range start='96.66.23.3' end='96.66.23.254'/></dhcp></ip>
</network>
3.3 定義并啟動default網(wǎng)絡(luò)
virsh net-define /etc/libvirt/qemu/networks/default.xml
virsh net-start default
virsh net-autostart default
3.4 查看配置狀態(tài)
virsh net-list
4 虛擬機安裝
見我的博客虛擬機安裝
注意:創(chuàng)建虛擬機使用下面的命令,不要指定網(wǎng)橋了(去掉–network bridge:br0)
virt-install --virt-type kvm --name Ai --ram 8024 --vcpus 8 --cdrom=/home/iso/CentOS-7-x86_64-DVD-1810.iso --disk path=/home/data/Ai.qcow2 --console pty,target_type=serial --graphics vnc,listen=0.0.0.0 --os-type=Linux --noautoconsole
5 虛物理網(wǎng)卡綁定
將物理機的某一個空余物理網(wǎng)卡分給虛擬機獨享(重點)
a) 查看虛擬機可用的物理網(wǎng)卡
virsh nodedev-list
b) 使用物理網(wǎng)卡enp7s0 取出 parent標(biāo)簽 pci_0000_07_00_0
c) 編輯創(chuàng)建的虛擬機 Ai.xml文件
vi /etc/libvirt/qemu/Ai.xml
子標(biāo)簽里面 添加內(nèi)容為
解釋:
取b步驟中的pci_0000_07_00_0
對進(jìn)行修改,domain中的都是16進(jìn)制,其中b步驟也是16進(jìn)制的,所以不需要轉(zhuǎn)換,直接將相應(yīng)的數(shù)據(jù)放入指定的位置即可

6 修改虛擬機的網(wǎng)卡ip
修改虛擬機的ip 在其中的網(wǎng)段
96.66.23.3-96.66.23.254
7 測試
方法1 通過網(wǎng)線直連,將一臺機器的物理網(wǎng)卡直連這臺機器配置物理網(wǎng)卡的網(wǎng)口,然后向物理網(wǎng)卡回放流量包
#enp3s0 與虛擬機綁定物理網(wǎng)卡enp7s0 直連tcpreplay -i enp3s0 -l 10000 -M50 http_192.168.36.163_10W.pcap
方法2 直接把回放包放到虛擬機中,直接發(fā)送流量信息
tcpreplay -i eth1 -l 10000 -M50 http_192.168.36.163_10W.pcap