如何在腾讯云主机上快速部署 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 条评论
登录 后参与评论

相关文章

来自专栏惨绿少年

Zabbix 3.0 从入门到精通(zabbix使用详解)

第1章 zabbix监控 1.1 为什么要监控      在需要的时刻,提前提醒我们服务器出问题了      当出问题之后,可以找到问题的根源      网站/...

4771
来自专栏java一日一条

常用的 Python 爬虫技巧总结

用python也差不多一年多了,python应用最多的场景还是web快速开发、爬虫、自动化运维:写过简单网站、写过自动发帖脚本、写过收发邮件脚本、写过简单验证码...

825
来自专栏十月梦想

MongoDB安装与运行

首先简单介绍一下MongoDB,MongoDB属于nosql(即非关系型数据库)一种,传统的数据库基本全部为关系型(结构型)数据库,拥有行和列概念!传统数据库:...

1003
来自专栏CDA数据分析师

总结:常用的 Python 爬虫技巧

用python也差不多一年多了,python应用最多的场景还是web快速开发、爬虫、自动化运维:写过简单网站、写过自动发帖脚本、写过收发邮件脚本、写过简单验证码...

1855
来自专栏玄魂工作室

CTF实战4 HTTP协议及嗅探抓包

HTTP(Hypertext Transfer Protocol)中文<超文本传输协议>,是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是Int...

602
来自专栏F-Stack的专栏

F-Stack KNI 配置注意事项

KNI(Kernel NIC Interface)内核网卡接口,是DPDK中用于与内核通信的模块。本文介绍对其进行配置时的一些注意事项。

8270
来自专栏程序猿DD

如何使用 Spinnaker 和 Kubernetes 进行数据库变更发布?

将应用程序部署到 Kubernetes 时,有很多选择。像 Helm 和 Ksonnet 这样的工具使得打包应用程序并将其部署到多个 Kubernetes 环境...

3455
来自专栏Elasticsearch实验室

Mysql数据导入Elasticsearch最佳实践

  Elasticsearch(ES)可用于全文检索、日志分析、指标分析、APM等众多场景,而且搭建部署容易,后期弹性扩容、故障处理简单。ES在一定程度上实...

1995
来自专栏腾讯移动品质中心TMQ的专栏

Windows开机过程和测试方法探索

用户会经常抱怨自从安装自己的应用后,电脑开机变慢,到底是系统的原因还是应用的原因,为了了解这里的问题,探秘了下windows的开机过程和测试方法。 一、开机过...

18710
来自专栏云端架构

【云端架构】网站遇到问题官方文档看不懂临时排查引导

网站遇到问题第一反应是查源站其次找官方文档,若文档找不到再去提工单最后实在解决不了才会打400电话找攻城狮。今天和大家分享的是如何自检自查,因为官方文档存在缺陷...

4477

扫码关注云+社区