成都网站建设设计

将想法与焦点和您一起共享

dpvs部署-创新互联

安装dpdk

“只有客户发展了,才有我们的生存与发展!”这是创新互联公司的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对网站设计制作、成都网站制作、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。

官方URL https://github.com/iqiyi/dpvs

dpdk-17.05.2可以兼容dpvs
wget https://fast.dpdk.org/rel/dpdk-17.05.2.tar.xz
tar vxf dpdk-17.05.2.tar.xz

下载dpvs
git clone https://github.com/iqiyi/dpvs.git

给dpdk打补丁,加入kni驱动
cd
cp patch/dpdk-stable-17.05.2/*.patch dpdk-stable-17.05.2/
cd dpdk-stable-17.05.2/
patch -p 1 < 0001-PATCH-kni-use-netlink-event-for-multicast-driver-par.patch

另一个补丁,uoa模块
patch -p1 < 0002-net-support-variable-IP-header-len-for-checksum-API.patch

编译dpdk并安装
cd dpdk-stable-17.05.2/
make config T=x86_64-native-linuxapp-gcc
make
export RTE_SDK=$PWD

启动hugepage
服务器是numa系统(centos)
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

注:这个操作是临时的,如果服务器有别的应用再跑,可能已经占用hugepage了,后面给出另外的方法

安装uio驱动,并绑定网卡
modprobe uio
cd dpdk-stable-17.05.2
insmod build/kmod/igb_uio.ko
insmod build/kmod/rte_kni.ko

查看网卡状态 ./usertools/dpdk-devbind.py --status

Network devices using kernel driver

===================================

0000:01:00.0 'I350 Gigabit Network Connection 1521' if=eth0 drv=igb unused=

0000:01:00.1 'I350 Gigabit Network Connection 1521' if=eth2 drv=igb unused=

0000:01:00.2 'I350 Gigabit Network Connection 1521' if=eth3 drv=igb unused=

0000:01:00.3 'I350 Gigabit Network Connection 1521' if=eth4 drv=igb unused=

绑定eth3
./usertools/dpdk-devbind.py -b igb_uio 0000:01:00.2

注:这里绑定的网卡,最好是没有使用的,因为网卡需要down 掉才能绑

编译dpvs
cd dpdk-stable-17.05.2/
export RTE_SDK=$PWD
cd
make

make install

注:安装的时候 可能有依赖包报错,提示哪个,yum安装就可以了

编译后的文件
ls bin/
dpip dpvs ipvsadm keepalived

启动dpvs
cp conf/dpvs.conf.single-nic.sample /etc/dpvs.conf
cd /bin
./dpvs &

查看是否启动正常
./dpip link show
1: dpdk0: socket 0 mtu 1500 rx-queue 8 tx-queue 8
UP 10000 Mbps full-duplex fixed-nego promisc-off
addr A0:36:9F:9D:61:F4 OF_RX_IP_CSUM OF_TX_IP_CSUM OF_TX_TCP_CSUM OF_TX_UDP_CSUM

以DR模式举例

官方URL https://github.com/iqiyi/dpvs/blob/master/doc/tutorial.md ,各种lvs模式配置

给dpvs添加lan ip 37,这个步骤必须在添加vip之前

./dpip addr add 192.168.1.37/24 dev dpdk0

给dpvs添加vip 57

./dpip addr add 192.168.1.57/32 dev dpdk0

设置算法为rr,vip为57

./ipvsadm -A -t 192.168.1.57:80 -s rr

添加后端机器11

./ipvsadm -a -t 192.168.1.57:80 -r 192.168.1.11 -g

在11机器执行
ip addr add 192.168.1.11/32 dev lo
sysctl -w net.ipv4.conf.lo.arp_ignore=1

dpvs在启动的时候,有时候 会报错,罪魁祸首是内存碎片,app无法申请到足够多的连续大块内存,只能申请到很多小块内存。以至于内存块数目超过了系统设置的256个。

解决方式 就是申请大页内存应该在系统启动时,或系统启动后尽快申请,避免内存被割裂

https://www.cnblogs.com/cobbliu/p/6603391.html

为了省事 可以加入到kernel参数 /etc/boot/grub2.cfg

default_hugepagesz=1G hugepagesz=1G hugepages=8G

引用别人的结论:
结论:DPDK 再快也是收包到送给应用层的时间短,而不是“转发”快。收到包后,各类检查跟查表(一般都是并发环境,加锁啊什么的,无锁?……哈哈)处理的时间,基本上都是要远远超过 DPDK 的自身开销的。

想要快过 Linux,要明白为什么 Linux 网络协议栈会“慢”,这个慢是相比 DPDK 的处理而言的,对大部分应用而言,上层的业务延迟已经没多大必要在网络方面下功夫。总之,能否降低路有延迟,要看应用环境(买得起那么多物理机么?有相应的稳定可靠人才支撑么?),然后再做 profiling,看瓶颈在哪里。不要想当然的 DPDK。

举例来说吧,做 UDP 的 DNS,就可以用 DPDK,绕过 Linux 协议栈提升 QPS. 如果做路由,我觉得拼不过硬件,我是不赞同这种做法的。为了低延迟,没有包的时候,DPDK 都要让 CPU 满载跑着,这时如果想提升吞吐量,延迟也会跟着上去。如果系统里边是多个干活程序一起跑的,老板穷或者不舍得买好机器,开发运维技能没跟着上去,DPDK 也会被用残的。

硬件差不多,网络 IO+内存类的程序,Linux 跑万兆是没问题的。

如果做包转发,相比 x86 linux 肯定会大大提升性能,其实大部分瓶颈不在 dpdk 处理的网络这块

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:dpvs部署-创新互联
网页网址:http://chengdu.cdxwcx.cn/article/iepcd.html