如何在腾讯云主机上快速部署 F-Stack HTTP 服务

F-Stack 是一个全用户态的高性能的网络接入开发包,基于 DPDK、FreeBSD 协议栈、微线程接口等,并集成了 Nginx、Redis 等应用,适用于各种需要网络接入的业务,用户只需要关注业务逻辑,简单的接入 F-Stack 即可实现高性能的网络服务器。

本文介绍如何在腾讯云主机上使用 F-Stack 快速部署 HTTP 服务器。首先在腾讯云上使用 centos7.2 镜像创建一个 CVM 实例,并启动登录到腾讯云服务器,然后按顺序执行以下命令即可。

【注意】云主机在只有一个网卡的情况下,需要开启 KNI 功能以便管理,如不开启KNI,需要通过控制台登录腾讯云主机进行操作,因中途网络连接会有中断,相关命令需要使用脚本执行。

yum install -y git gcc openssl-devel bc
cd /data
wget https://buildlogs.centos.org/c7.1511.00/kernel/20151119220809/3.10.0-327.el7.x86_64/kernel-devel-3.10.0-327.el7.x86_64.rpm
rpm -ivh kernel-devel-3.10.0-327.el7.x86_64.rpm

mkdir /data/f-stack
git clone https://github.com/F-Stack/f-stack.git /data/f-stack

# Compile DPDK
cd /data/f-stack/dpdk
make config T=x86_64-native-linuxapp-gcc
make

# set hugepage    
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
mkdir /mnt/huge
mount -t hugetlbfs nodev /mnt/huge

# close ASLR; it is necessary in multiple process
echo 0 > /proc/sys/kernel/randomize_va_space

# insmod ko
modprobe uio
insmod build/kmod/igb_uio.ko
insmod build/kmod/rte_kni.ko

# set ip address
export myaddr=`ifconfig eth0 | grep "inet" | grep -v ":" | awk -F ' '  '{print $2}'`
export mymask=`ifconfig eth0 | grep "netmask" | awk -F ' ' '{print $4}'`
export mybc=`ifconfig eth0 | grep "broadcast" | awk -F ' ' '{print $6}'`
export myhw=`ifconfig eth0 | grep "ether" | awk -F ' ' '{print $2}'`
export mygw=`route -n | grep 0.0.0.0 | grep eth0 | grep UG | awk -F ' ' '{print $2}'`

sed "s/addr=192.168.1.2/addr=${myaddr}/" -i /data/f-stack/config.ini
sed "s/netmask=255.255.255.0/netmask=${mymask}/" -i /data/f-stack/config.ini
sed "s/broadcast=192.168.1.255/broadcast=${mybc}/" -i /data/f-stack/config.ini
sed "s/gateway=192.168.1.1/gateway=${mygw}/" -i /data/f-stack/config.ini

# enable kni
sed "s/#\[kni\]/\[kni\]/" -i /data/f-stack/config.ini
sed "s/#enable=1/enable=1/" -i /data/f-stack/config.ini
sed "s/#method=reject/method=reject/" -i /data/f-stack/config.ini
sed "s/#tcp_port=80/tcp_port=80/" -i /data/f-stack/config.ini
sed "s/#vlanstrip=1/vlanstrip=1/" -i /data/f-stack/config.ini


# Compile F-Stack lib
export FF_PATH=/data/f-stack
export FF_DPDK=/data/f-stack/dpdk/build
cd /data/f-stack/lib
make

# Compile Nginx
cd ../app/nginx-1.11.10
./configure --prefix=/usr/local/nginx_fstack --with-ff_module
make
make install

# offload NIC(if there is only one NIC,the follow commands must run in a script)
ifconfig eth0 down
python /data/f-stack/dpdk/tools/dpdk-devbind.py --bind=igb_uio eth0

# start Nginx
cd ../..
./start.sh -b /usr/local/nginx_fstack/sbin/nginx -c config.ini

# start kni
sleep 10
ifconfig veth0 ${myaddr}  netmask ${mymask}  broadcast ${mybc} hw ether ${myhw}
route add -net 0.0.0.0 gw ${mygw} dev veth0

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 16.04上安装Moodle

Moodle是一个流行的,开源的基于Web的学习管理系统(LMS),任何人都可以免费安装和使用。通过Moodle,您可以为学习者群体创建和提供课程,阅读和讨论板...

2520
来自专栏我的博客

Collectd介绍

collectd是一个守护(daemon)进程,用来收集系统性能和提供各种存储方式来存储不同值的机制。它会在系统运行和存储信息时周期性的统计系统的相关统计信息。...

3366
来自专栏云计算教程系列

如何在Ubuntu上安装SELinux

Ubuntu有一个类似于SELinux的强制访问控制系统,名为AppArmor。SELinux(Security-Enhanced Linux) 是美国国家安全...

3251
来自专栏Web项目聚集地

Oracle 11g的安装(图文详解)

Web项目聚集地的小伙伴反应在Oracle的安装与配置有很多错误与疑点,便有了这篇文章,现在是晚上2点哈哈,加油加油,日后还会有更多技术栈的专栏。Orac...

1343
来自专栏酷玩时刻

Android Studio 上传aar(Library)到JCenter

这篇文章介绍通过Gradle把开源项目发布到公共仓库JCenter中,发布自己的android library(也就是aar)到公共的jcenter仓库。 为...

1511
来自专栏惨绿少年

Grafana数据可视化

一个类似Kibana的东西,也是对后端的数据进行实时展示,那么Grafana和Kibana有什么区别?在我看来区别不大,不过在大家的日常使用中Kibana是跟着...

1.8K2
来自专栏谦谦君子修罗刀

程序员面试闪充--版本管理之SVN

在软件开发过程中,通常一个软件项目要靠多人合作完成的。而在此过程中的修修改改一定会存在一些不可避免的问题。可能一不小心就闹出个大乱子呢。 一、源代码管理的问题 ...

2466
来自专栏Debian社区

改善Debian Linux软件包管理的七款工具

如果你运行Debian或它的衍生版本之一(比如Linux Mint或Ubuntu),迟早会遇到apt-get和dpkg,它们是主要的软件包管理命令。然而,这些只...

1353
来自专栏LanceToBigData

MySQL(一)之MySQL简介与安装

大家可能都在用MySQL,其实我也是在用MySQL的,但是你知道吗?大部分人都是在windows中使用,这里将介绍一下在windows中的安装分为安装包安装与M...

2156
来自专栏容器云生态

Openstack平台搭建之第一天 基于RDO方式搭建

openstck基于web方式的rdo部署 If you have any question ,please contact me by weichuangxx...

31910

扫码关注云+社区