* Install dyups module with lua-nginx-module and upstream check module
* upstream check module: To make upstream check module work well with dyups module, you should use `./modules/ngx_http_upstream_check_module`.
* lua-nginx-module: To enable [dyups LUA API](#lua-api-example), you MUST put `--add-module=./modules/ngx_http_lua_module` in front of `--add-module=./modules/ngx_http_dyups_module` in the `./configure` command.
This directive set the interface location where you can add or delete the upstream list. See the section of Interface for detail.
dyups_read_msg_timeout
-----------------------------
**Syntax**: *dyups_read_msg_timeout time*
### dyups_read_msg_timeout
Syntax: **dyups_read_msg_timeout**`time`
**Default**: *1s*
Default: `1s`
**Context**: *main*
Context: `main`
This directive set the interval of workers readding the commands from share memory.
dyups_shm_zone_size
-----------------------------
**Syntax**: *dyups_shm_zone_size size*
### dyups_shm_zone_size
**Default**: *2M*
Syntax: **dyups_shm_zone_size**`size`
**Context**: *main*
Default: `2MB`
Context: `main`
This directive set the size of share memory which used to store the commands.
dyups_upstream_conf
-----------------------------
**Syntax**: *dyups_upstream_conf path*
### dyups_upstream_conf
Syntax: **dyups_upstream_conf**`path`
**Default**: *none*
Default: `none`
**Context**: *main*
Context: `main`
This directive set the path of file which you dumped all of upstreams' configs, it will be loaded in `init process` after process respwan to restore upstreams.
This directive has been deprecated
dyups_trylock
-----------------------------
**Syntax**: *dyups_trylock on | off*
### dyups_trylock
**Default**: *off*
Syntax: **dyups_trylock**`on | off`
**Context**: *main*
Default: `off`
Context: `main`
You will get a better prefomance but it maybe not stable, and you will get a '409' when the update request conflicts with others.
restful interface
========================
### dyups_read_msg_log
Syntax: **dyups_read_msg_log**`on | off`
Default: `off`
Context: `main`
GET
-------------------
You can enable / disable log of workers readding the commands from share memory. The log looks like:
* `/detail` get all upstreams and their servers
* `/list` get the list of upstreams
* `/upstream/name` find the upstream by it's name
```
2017/02/28 15:37:53 [info] 56806#0: [dyups] has 0 upstreams, 1 static, 0 deleted, all 1
```
## restful interface
POST
-------------------
### GET
- `/detail` get all upstreams and their servers
- `/list` get the list of upstreams
- `/upstream/name` find the upstream by it's name
* `/upstream/name` update one upstream
* `body` commands;
* `body` server ip:port;
### POST
- `/upstream/name` update one upstream
- `body` commands;
- `body` server ip:port;
DELETE
-------------------
* `/upstream/name` delete one upstream
### DELETE
- `/upstream/name` delete one upstream
Call the interface, when you get the return code is `HTTP_INTERNAL_SERVER_ERROR 500`, you need to reload nginx to make the Nginx work at a good state.
@ -163,10 +186,10 @@ The /list and /detail interface will return `HTTP_NO_CONTENT 204` when there is
Other code means you should modify your commands and call the interface again.
`ATTENEION`: You also need a `third-party` to generate the new config and dump it to Nginx'conf directory.
`ATTENTION`: You also need a `third-party` to generate the new config and dump it to Nginx'conf directory.
### Sample
Sample
-------------------
```bash
» curl -H "host: dyhost" 127.0.0.1:8080
<html>
@ -188,34 +211,37 @@ success
» curl 127.0.0.1:8081/detail
host1
server 127.0.0.1:8088
server 127.0.0.1:8088 weight=1 max_conns=0 max_fails=1 fail_timeout=10 backup=0 down=0
host2
server 127.0.0.1:8089
server 127.0.0.1:8089 weight=1 max_conns=0 max_fails=1 fail_timeout=10 backup=0 down=0
dyhost
server 127.0.0.1:8089
server 127.0.0.1:8088
server 127.0.0.1:8089 weight=1 max_conns=0 max_fails=1 fail_timeout=10 backup=0 down=0
server 127.0.0.1:8088 weight=1 max_conns=0 max_fails=1 fail_timeout=10 backup=0 down=0
local status, rv = dyups.update("test", [[server 127.0.0.1:8088;]]);
ngx.print(status, rv)
if status ~= 200 then
if status ~= ngx.HTTP_OK then
ngx.print(status, rv)
return
end
ngx.print("update success")
status, rv = dyups.delete("test")
if status ~= 200 then
if status ~= ngx.HTTP_OK then
ngx.print(status, rv)
return
end
@ -244,3 +270,10 @@ content_by_lua '
';
```
## Compatibility
### Module Compatibility
* [lua-upstream-nginx-module](https://github.com/agentzh/lua-upstream-nginx-module): You can use `lua-upstream-nginx-module` to get more detail infomation of upstream.
* [upstream check module](http://tengine.taobao.org/document/http_upstream_check.html): To make upstream check module work well with dyups module, you should use `./modules/ngx_http_upstream_check_module`.