apisix/doc/stand-alone.md

3.9 KiB
Raw Blame History

Chinese

Stand-alone mode

Turning on the APISIX node in Stand-alone mode will no longer use the default etcd as the configuration center.

This method is more suitable for two types of users:

  1. kubernetes(k8s)Declarative API that dynamically updates the routing rules with a full yaml configuration.
  2. Different configuration centers: There are many implementations of the configuration center, such as Consule, etc., using the full yaml file for intermediate conversion.

The routing rules in the conf/apisix.yaml file are loaded into memory immediately after the APISIX node service starts. And every time interval (default 1 second), will try to detect whether the file content is updated, if there is an update, reload the rule.

Note: When reloading and updating routing rules, they are all hot memory updates, and there will be no replacement of working processes, it is a hot update.

To enable Stand-alone model, we can set apisix.config_center to yaml in file conf/config.yaml.

Refer to the example below:

apisix:
  # ...
  config_center: yaml   # etcd: use etcd to store the config value
                        # yaml: fetch the config value from local yaml file
                        # `/your_path/conf/apisix.yaml`

In addition, since the current Admin API is based on the etcd configuration center solution, the Admin API will not actually work when the Stand-alone mode is enabled.

How to config rules

All of the rules are stored in one file which named conf/apisix.yaml, the APISIX will check if this file has any changed every second. If the file changed and we found #END at the end of the file, APISIX will load the rules in this file and update to memory of APISIX.

Here is a mini example:

routes:
  -
    uri: /hello
    upstream:
        nodes:
            "127.0.0.1:1980": 1
        type: roundrobin
#END

NOTE: APISIX will not load the rules into memory from file conf/apisix.yaml if there is no #END at the end.

How to config Router

Single Router

routes:
  -
    uri: /hello
    upstream:
        nodes:
            "127.0.0.1:1980": 1
        type: roundrobin
#END

Multiple Router

routes:
  -
    uri: /hello
    upstream:
        nodes:
            "127.0.0.1:1980": 1
        type: roundrobin
  -
    uri: /hello2
    upstream:
        nodes:
            "127.0.0.1:1981": 1
        type: roundrobin
#END

How to config Router + Service

routes:
    -
        uri: /hello
        service_id: 1
services:
    -
        id: 1
        upstream:
            nodes:
                "127.0.0.1:1980": 1
            type: roundrobin
#END

How to config Router + Upstream

routes:
    -
        uri: /hello
        upstream_id: 1
upstreams:
    -
        id: 1
        nodes:
            "127.0.0.1:1980": 1
        type: roundrobin
#END

How to config Router + Service + Upstream

routes:
    -
        uri: /hello
        service_id: 1
services:
    -
        id: 1
        upstream_id: 2
upstreams:
    -
        id: 2
        nodes:
            "127.0.0.1:1980": 1
        type: roundrobin
#END