-
LVS + Keepalived实现集群高可用
September 17, 2021
本文详细介绍了如何使用LVS和Keepalived实现集群高可用。首先,我们在LVS服务器上安装ipvsadm和keepalived服务,然后在WEB服务器上安装nginx服务并配置index.html文件。接着,我们在LVS服务器上配置keepalived.conf文件和RS服务,最后通过访问VIP来验证配置的正确性。整个过程中,我们详细解释了每一步的操作和配置的含义,帮助读者更好地理解和实践。 …
-
LVS负载均衡实践
September 16, 2021
这篇文章详细介绍了如何使用LVS进行负载均衡的实践操作。首先,文章列出了所需的服务器IP和角色,然后分别介绍了在LVS服务器和WEB服务器上的配置步骤。在LVS服务器上,主要是安装ipvsadm,配置VIP网卡和使用ipvsadm配置VIP。在WEB服务器上,主要是安装nginx服务,配置index.html文件,修改arp_ignore和arp_announce配置,以及环回接口配置VIP。最后,文章展示了如何在LVS服务器上添加rs,以及如何访问VIP。 …
-
Mac 安装VM虚拟机及网络配置
September 11, 2021
这篇文章主要介绍了如何在Mac上安装VM虚拟机和Centos虚拟机,并进行网络配置。首先,从VMware官网下载并安装VMware Fusion。然后,从Centos官网下载Centos镜像,并在VMware Fusion中创建Centos虚拟机。最后,进行虚拟机网络配置,包括选择网络模式,查看WIFI项,配置虚拟机的ifcfg-ens33文件,设置GATEWAY和DNS,最后重启network服务。 …
-
Kong - 自定义插件开发(四)
July 15, 2021
这篇文章主要介绍了如何使用Go语言开发自定义插件。首先,我们需要下载并安装go-pluginserver,然后在CentOS环境下安装C相关的编译环境。接着,我们可以下载官方的插件示例,并通过Go语言编写自己的插件。最后,我们需要配置相关的环境变量并启动Kong服务。文章还提供了Konga插件的示例图和相关参考链接。 …
-
Kong - 自定义插件开发(三)
July 14, 2021
这篇文章介绍了如何使用Docker启动Kong并加载自定义插件。详细介绍了Docker启动命令中的环境变量和挂载路径的配置。特别注意,如果出现ntt-auth plugin is in use but not enabled错误,需要检查插件路径和KONG_PLUGINS环境变量。 …
-
Kong - 自定义插件开发(二)
July 13, 2021
这篇文章主要介绍了如何在Kong中开发自定义插件。首先,它解释了Kong插件的生命周期,并展示了如何在Lua中实现base_plugin.lua接口的方法。然后,文章提供了一个NttAuthHandler插件的示例,包括access、init_worker和log阶段的实现。接着,文章介绍了如何定义插件的schema。最后,文章讨论了在Docker容器部署中如何使用lua_shared_dict共享内存,并提供了Kong Nginx模板的相关配置。 …
-
Kong - 自定义插件开发(一)
July 13, 2021
这篇文章主要介绍了如何开发Kong自定义插件。首先,将插件视为一组Lua模块,Kong会检测并加载遵循特定命名约定的插件模块。插件由两个强制性模块组成:handler.lua和schema.lua。一些插件可能需要更深入地集成到Kong中,例如在数据库中有自己的表,或在Admin API中公开端点等,这些都可以通过向插件添加新模块来完成。 …
-
限流算法实践
April 21, 2021
本文主要介绍了四种限流算法:固定窗口计数器算法、滑动窗口计数算法、漏桶算法、令牌桶算法,并通过Lua脚本和Redis实现了令牌桶算法。文章详细解释了如何使用Redis的SCRIPT LOAD和EVALSHA命令来执行限流逻辑,并通过返回值判断是否触发限流行为。最后,文章对四种算法进行了比较和总结,认为令牌桶算法是一种相对完美的限流算法,适用于大多数限流场景。 …
-
ngx_lua模块中使用lua_shared_dict共享内存变量
April 19, 2021
本文介绍了在ngx_lua模块中如何使用lua_shared_dict命令定义共享内存字典项对象,并通过ngx.shared.DICT接口获取这些对象。文章详细解释了相关语法和示例,包括如何设置和获取共享内存上的值。同时,还讨论了在Nginx重启和退出时,共享内存字典项的行为。 …
-
openresty 跑定时任务配置、ngx.timer.every接口使用
April 19, 2021
这篇文章主要介绍了如何在OpenResty中配置和使用定时任务。首先,文章解释了定时任务需要与worker绑定,通常默认绑定到worker_id=0,这样在Nginx进程中只执行一个timer。然后,文章提供了在nginx.conf中配置定时任务的具体方法。接着,文章介绍了如何使用ngx.timer.every接口,这是ngx提供的最新接口。最后,文章提供了一些相关的日志输出和错误处理方法。 …