f-stack/doc/F-Stack_Nginx_APP_Guide.md

94 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# F-Stack Nginx APP Guide
F-Stack is an open source network framework based on DPDK. F-Stack supports standard Nginx as HTTP framework which means all web application based on HTTP can easily use F-Stack.
## How does Nginx use F-Stack?
Nginx APP is in `app/nginx-1.11.10` directory.
```
+--------+
+------------------------+ |
channel: socketpair |
+------------------------+ | signal(reload, quit..)
|
|
+---------v--------+
| |
+----------------+ master process +---------------+
| | | |
| channel +----------+-------+ |
| | channel |
| channel | |
| | |
+---------+----------+ +----------+--------+ +---------+--------+
first one to start | | | | | |
last one to exit<-+ primary worker | | secondary worker | | secondary worker |
| | | | | |
+--------------------+ +-------------------+ +------------------+
+--------------------+ +-------------------+
| | | |
| fstack,kernel | | fstack,kernel |
| and channel | | and channel |
| loop thread | | loop thread |
| | | |
+--------------------+ +-------------------+
woker process cycle woker process cycle
```
- spawn primary worker firstly, and then wait for primary startup, continue to spawn secondary workers.
- a major addition to the worker process is fstack-handlingff_init();ff_run(worker_process_cycle); worker_process_cycle(handle channel/host/fstack event).
## What's Different?
### New directives:
All the directives below are available only when ```NGX_HAVE_FSTACK``` is defined.
```
Syntax: kernel_network_stack on | off;
Default: kernel_network_stack off;
Context: http, server
Determines whether server should run on kernel network stack or fstack.
```
```
Syntax: proxy_kernel_network_stack on | off;
Default: kernel_network_stack off;
Context: http, stream, mail, server
Determines whether proxy should go through kernel network stack or fstack.
```
```
Syntax: schedule_timeout time;
Default: schedule_timeout 30m;
Context: http, server
Sets a time interval for polling kernel_network_stack. The default value is 30 msec.
```
### Command-line `reload`
the `reload` is not graceful, service will still be unavailable during the process of reloading.
### Necessary modifies in nginx.conf:
```
user root; # root account is necessary.
fstack_conf f-stack.conf; # path of f-stack configuration file, default: $NGX_PREFIX/conf/f-stack.conf.
worker_processes 1; # should be equal to the lcore count of `dpdk.lcore_mask` in f-stack.conf.
events {
worker_connections 102400; # increase
use kqueue; # use kqueue
}
sendfile off; # sendfile off
```
## Nginx compiling
./configure --prefix=/usr/local/nginx_fstack --with-ff_module
make
make install