lua-resty-consul
从 Consul 加载 ngx_lua 的配置
$ opm get huangnauh/lua-resty-consul
名称
lua-resty-consul - 从 Consul 加载 ngx_lua 的配置
状态
该库虽然仍在实验阶段,但已经可以使用。
Lua API 仍在发展中,未来可能会发生变化。
描述
这个 Lua 库可以帮助 OpenResty/ngx_lua 用户从 Consul 加载配置。
resty.consul.api
目前提供 Consul Key/Value 存储的GET api
。resty.consul.config
为 ngx_lua 提供动态配置,并为 lua-resty-checkups 提供上游配置。resty.consul.load
为 lua-resty-load 提供 load_init 脚本/模块。
摘要
http {
lua_package_path "/path/to/lua-resty-consul/lib/?.lua;/path/to/lua-resty-checkups/lib/?.lua;/path/to/lua-resty-load/lib/?.lua;;";
init_by_lua '
local rload = require "resty.load"
local config = require "config"
consul.init(config)
rload.init(config)
';
init_worker_by_lua '
local checkups = require "resty.checkups.api"
local config = require "config"
checkups.prepare_checker(config)
checkups.create_checker()
local rload = require "resty.load"
rload.create_load_syncer()
';
}
server {
location = /t {
content_by_lua '
-- script
local abc = require "module.abc"
ngx.say(abc.version)
-- upstream config
local cjson = require "cjson.safe"
ngx.say(cjson.encode(config.test))
';
}
location = /config_script {
content_by_lua '
local config = require "config"
local api = require "resty.consul.api"
ngx.say(api.get_kv_blocking(config.consul.cluster, config.consul.config_key_prefix .. "lua/module.abc?raw"))
';
}
location = /config_upstream {
content_by_lua '
local config = require "config"
local api = require "resty.consul.api"
ngx.say(api.get_kv_blocking(config.consul.cluster, config.consul.config_key_prefix .. "upstreams/test?raw"))
';
}
}
方法
config.init
语法: ok, err = consul.config.init(config)
上下文: init_by_lua*
初始化库。如果失败,则返回 nil
和一个描述错误的字符串。
可以将 Lua 表格 config
作为此方法的唯一参数来指定 load_init consul 配置。
config_key_prefix
Consul Key/Value 存储端点的键前缀。
config_positive_ttl
缓存有效数据的 TTL。
config_negative_ttl
缓存查找失败的 TTL。
config_cache_enable
一个布尔值,指示是否启用 lua-resty-shcache 来缓存配置。
cluster
集群配置
load:new
语法: load_object, err = consul.load:new(config)
创建一个加载对象。如果失败,则返回 nil 和一个描述错误的字符串。
config
只是
consul.config.init
中的参数。
load:lkeys
语法: keys, err = load_object:lkeys()
检索一个 Lua 数组,该数组包含来自 Consul K/V 存储的所有脚本/模块名称。如果失败,则返回 nil 和一个描述错误的字符串。
load:lget
语法: code, err = load_object:lget(key)
从 Consul K/V 存储中检索脚本/模块名称 key
的代码。如果失败,则返回 nil 和一个描述错误的字符串。
load:lversion
语法: version, err = load_object:lversion()
从 Consul K/V 存储中检索当前代码的版本。这是可选的,用于回退和版本检查。version
不超过 32 个字符。
如果失败,则返回 nil 和一个描述错误的字符串。
api.get_kv
语法: value, err = api.get_kv(cluster, key, options_table?)
从 Consul K/V 存储中检索键 key
的值,不阻塞。
可以将一个可选的 Lua 表格作为此方法的最后一个参数。
default
如果键不存在,则返回此选项。
decode
如果设置了此选项,则在返回之前对值进行解码。
api.get_kv_blocking
语法: value = api.get_kv_blocking(key, options_table?)
类似于 api.get_kv
方法,但在当前连接上阻塞。
作者
又拍云
版权和许可
此模块根据 BSD 许可证授权。
版权所有 (C) 2016,由又拍云所有。
版权所有。
在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否修改。
源代码的重新分发必须保留上述版权声明、此条件列表以及以下免责声明。
二进制形式的重新分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表以及以下免责声明。
本软件由版权持有人和贡献者“按原样”提供,并且任何明示或暗示的保证,包括但不限于适销性和特定用途适用性的暗示保证,均不作任何保证。在任何情况下,版权持有人或贡献者均不对任何直接、间接、附带、特殊、惩戒性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润损失;或业务中断),无论其原因如何以及责任理论如何,无论是基于合同、严格责任或侵权行为(包括疏忽或其他原因),即使已被告知可能发生此类损害,也不会承担任何责任。
作者
huangnauh huanglibo2010@gmail.com
许可证
2bsd
版本
-
从 Consul 加载 ngx_lua 的配置 2017-11-15 08:50:35