DPVS学习(一)DPVS安装部署

我主要参考的是官方文档进行的安装,补充了下遇到的问题。官方文档链接:https://github.com/iqiyi/dpvs

1.下载DPVS

git clone https://github.com/iqiyi/dpvs.git
cd dpvs

2.安装DPDK

目前,dpdp-stable-17.11.2用于DPVS

wget https://fast.dpdk.org/rel/dpdk-17.11.2.tar.xz
tar vxf dpdk-17.11.2.tar.xz

3.DPDK补丁

有一个用于硬件组播的DPDK kni驱动程序的补丁,如果需要就应用它。

//切换到dpvs的路径下
cd <path-of-dpvs>
//复制补丁
cp patch/dpdk-stable-17.11.2/*.patch dpdk-stable-17.11.2/
cd dpdk-stable-17.11.2/
patch -p 1 < 0001-kni-use-netlink-event-for-multicast-driver-part.patch
patch -p 1 < 0002-net-support-variable-IP-header-len-for-checksum-API.patch
patch -p 1 < 0003-enable-pdump-and-change-dpdk-pdump-tool-for-DPVS.patch
patch -p 1 < 0004-patch-dpdk-17.11.2-to-support-rh75-provided-by-Jason.patch

4.dpdk编译安装

下载依赖

yum install -y libpcap-devel

构建dpdk和导入环境变量

cd dpdk-stable-17.11.2/
make config T=x86_64-native-linuxapp-gcc
//Configuration done
make
export RTE_SDK=$PWD

设置大页内存

echo 8192 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo 8192 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages

mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

加载模块

我用的网卡是ens39绑定dpdk,这里需要pci号。可以用 lspci | grep Eth查询,查询结果如下:

modprobe uio
cd dpdk-stable-17.11.2

insmod build/kmod/igb_uio.ko
insmod build/kmod/rte_kni.ko

./usertools/dpdk-devbind.py --status
ifconfig ens39 down  # assuming ens39 is 0000:02:07.0
./usertools/dpdk-devbind.py -b igb_uio 0000:02:07.0

5.构建dpvs

cd dpdk-stable-17.11.2/
export RTE_SDK=$PWD
cd <path-of-dpvs>

make # or "make -j40" to speed up.
make install

编译时出现问题。提示ipvsadm.c:114:18: 致命错误:popt.h:没有那个文件或目录,需要安装依赖。

yum install popt-devel

Output files are installed to dpvs/bin

dpvs是主程序。

dpip是设置IP地址、路由、vlan、neigh等的工具。

ipvsadm和keepalive来自于LVS,都是经过修改的。

6.启动dpvs

#复制配置文件到etc下
cp conf/dpvs.conf.single-nic.sample /etc/dpvs.conf

#启动
cd <path-of-dpvs>/bin
./dpvs &

#检测是否启动
./dpip link show

启动时报错:EAL: Error reading from file descriptor 21: Input/output error

原因:在虚拟机添加的网卡,dpdk不支持导致的。需要修改一行代码,跳过dpdk pci 检查。

#修改前
pci_intx_mask_supported(udev->pdev)
#修改后
pci_intx_mask_supported(udev->pdev) || true
make clean
#重新编译
make
rmmod igb_uio
insmod build/kmod/igb_uio.ko

建议用物理机,我用的虚拟机会有很多问题。包括内存不足,队列不够等问题。

启动还是存在问题

但是使用./dpip link show验证是启动正常的:

7.测试Full-NAT模式的负载均衡

在DPVS上设置VIP和Local IP。把指令放到setup.sh脚本中。

VIP=192.168.100.100
LIP=192.168.100.200
RS=192.168.100.2

# 将wan ip设置到dpdk0接口
./dpip addr add ${VIP}/24 dev dpdk0
# 添加服务<VIP:vport>用于转发
./ipvsadm -A -t ${VIP}:80 -s rr
# 添加real server
./ipvsadm -a -t ${VIP}:80 -r ${RS} -b
# 添加local ip
./ipvsadm --add-laddr -z ${LIP} -t ${VIP}:80 -F dpdk0

使用./dpip route show,./dpip addr show,./ipvsadm -ln,./ipvsadm  -G指令进行验证


                
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值