openresty

实现docker应用的日志轮转服务

允我心安 提交于 2020-08-04 14:34:50
通常我们一个完整的应用镜像有两部分组成,一个是运行时环境,一个是应用程序。 我们以php应用为例,一个完整的php应用需要包含openresty + php两个服务来配置运行时环境,然后再加上php代码,来完成一整个php应用的发布。php代码产生的日志由程序自行控制,一般都会按天滚动,在日志量较大的情况下,也可能按小时滚动,或者按照单个日志文件的大小来实现滚动。而nginx和php服务的日志默认情况下并不支持这种滚动,所以默认情况下,一个openresty+php容器在其生命周期内,就只会写一个日志文件,如果该容器长时间运行,openresty与php服务的访问日志就会变的非常巨大,给我们日志清理造成了不便。 logrotate + crontab 虽然默认情况下,openresty和php等服务的访问日志并不会自动滚动,但我们却可以使用一些第三方工具来实现。在传统的应用部署中,我们使用logrotate + crontab来实现openresty 与php等服务的日志滚动。而事实上,这一方案在容器环境下仍然适用。我们的解决方案是,在每个服务的基础镜像中配置好logrotate和crontab,这样在容器运行起来后,就会自动根据配置好的轮转策略实现日志滚动。 配置详细说明 我们仍然以openresty+php为例,给出一个openresty

API 网关 Kong

僤鯓⒐⒋嵵緔 提交于 2020-07-28 18:59:31
什么是 API 网关? 所谓网关,主要作用就是连接两个不同网络的设备,而今天所讲的 API 网关是指承接和分发客户端所有请求的网关层。 为什么需要网关层?最初是单体服务时,客户端发起的所有请求都可以直接请求到该服务,但随着产品用户越来越多,单体应用存在显而易见的单点问题,除此之外,当单体应用大小升至几个 G 时,持续发布将会非常缓慢,所以服务的拆分成为了必然趋势。 当服务拆分为多个之后,我们不得不面临一个问题,就是如何控制用户请求到对应服务节点,于是网关层应运而生,它不仅可以负责负载均衡,还可以让它处理认证校验、请求限流、日志记录以及监控服务节点等等。 当然,网关层并不需要我们手动实现,市面上有很多 API 网关开源项目,比如 Zuul、Kong、Tyk 等,今天主要介绍 Kong。 安装 Kong Kong 是一个在 Nginx 中运行的 Lua 程序,由 lua-nginx-module 实现,和 Openresty 一起打包发行,支持多种操作环境下的安装,可以用来做 HTTP 基本认证、密钥认证、TCP、UDP、文件日志、API 请求限流、请求转发等等。 第一步,创建一个 docker 网络。 $ docker network create kong-net 创建用于存储 Kong 数据的数据库,可以使用 Cassandra 或 PostgreSQL,本示例采用

API 网关 Kong

允我心安 提交于 2020-07-28 08:43:15
什么是 API 网关? 所谓网关,主要作用就是连接两个不同网络的设备,而今天所讲的 API 网关是指承接和分发客户端所有请求的网关层。 为什么需要网关层?最初是单体服务时,客户端发起的所有请求都可以直接请求到该服务,但随着产品用户越来越多,单体应用存在显而易见的单点问题,除此之外,当单体应用大小升至几个 G 时,持续发布将会非常缓慢,所以服务的拆分成为了必然趋势。 当服务拆分为多个之后,我们不得不面临一个问题,就是如何控制用户请求到对应服务节点,于是网关层应运而生,它不仅可以负责负载均衡,还可以让它处理认证校验、请求限流、日志记录以及监控服务节点等等。 当然,网关层并不需要我们手动实现,市面上有很多 API 网关开源项目,比如 Zuul、Kong、Tyk 等,今天主要介绍 Kong。 安装 Kong Kong 是一个在 Nginx 中运行的 Lua 程序,由 lua-nginx-module 实现,和 Openresty 一起打包发行,支持多种操作环境下的安装,可以用来做 HTTP 基本认证、密钥认证、TCP、UDP、文件日志、API 请求限流、请求转发等等。 第一步,创建一个 docker 网络。 $ docker network create kong-net 创建用于存储 Kong 数据的数据库,可以使用 Cassandra 或 PostgreSQL,本示例采用

Nginx 一个牛 X 的功能,流量拷贝!

…衆ロ難τιáo~ 提交于 2020-07-27 22:00:16
1. 需求 将生产环境的流量拷贝到预上线环境或测试环境,这样做有很多好处,比如: 可以验证功能是否正常,以及服务的性能; 用真实有效的流量请求去验证,又不用造数据,不影响线上正常访问; 这跟灰度发布还不太一样,镜像流量不会影响真实流量; 可以用来排查线上问题; 重构,假如服务做了重构,这也是一种测试方式; 为了实现流量拷贝,Nginx提供了 ngx_http_mirror_module 模块 2. 安装Nginx 首页,设置yum仓库。为此,创建一个文件/etc/yum.repos.d/nginx.repo 将以下内容写入文件 [nginx- stable] name = nginx stable repo baseurl =http: // nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled =1 gpgkey =https: // nginx.org/keys/nginx_signing.key module_hotfixes= true ​ [nginx - mainline] name = nginx mainline repo baseurl =http: // nginx.org/packages/mainline/centos/$releasever/$basearch/

屏蔽nginx默认页面或者openresty默认页面

て烟熏妆下的殇ゞ 提交于 2020-07-27 21:58:08
openresty是对nginx做了一层封装,屏蔽nginx或者openresty的默认页面的方法是一样的,就是对nginx/html/index.html进行修改即可。 ssh nginx@ 126.10 .*.* // 使用ssh进行登录,根据提示输入密码 // 默认nginx安装在根目录的u02内 cd /u02/nginx/ html mv index.html index.html20200527 // 先备份 echo ' It work! ' >index.html // 将It work!写入新创建的index.html内 curl 127.0 . 0.1 // 检查响应结果 exit // 退出操作 结束! 来源: oschina 链接: https://my.oschina.net/u/4256309/blog/4293253

apisix高性能网关-中文开发文档

老子叫甜甜 提交于 2020-07-27 15:04:51
2020年6月12日13:48:33 github: https://github.com/apache/incubator-apisix 目前此项目已有成为apache孵化项目 官方中文文档 : https://github.com/apache/incubator-apisix/blob/master/README_CN.md 支持的功能很多,我个人比较推荐服务发现,这个很省资源,不然得吧java的一套全部上上去,这样其他语言的也可以轻松做微服务了 APISIX QQ 交流群 : 552030619 邮件列表: 发邮件到 dev-subscribe@apisix.apache.org, 然后跟着回复邮件操作即可。 APISIX 是一个云原生、高性能、可扩展的微服务 API 网关。 它是基于 Nginx 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动态路由和插件热加载,特别适合微服务体系下的 API 管理。 为什么选择 APISIX? 如果你正在构建网站、移动设备或 IoT(物联网)的应用,那么你可能需要使用 API 网关来处理接口流量。 APISIX 是基于云原生的微服务 API 网关,它是所有业务流量的入口,可以处理传统的南北向流量,也可以处理服务间的东西向流量,也可以当做 k8s ingress controller 来使用。 APISIX

微服务开发与治理(一)

梦想与她 提交于 2020-07-27 09:33:28
前言 微服务架构与治理实战。微服务架构目前已经成为主流的互联网技术架构方案,在项目初始阶段就采用了微服务架构来开发和部署线上服务,经过一年多的实战演变,目前我们几人的开发团队,维护和管理数十个微服务,实现了一套快速开发,部署,以及服务治理和追踪的技术栈。这次我将主要给大家分享我们用到的技术内容以及开源产品的一些使用经验。主要是从系统构建,系统从0到1构建过程、微服务架构怎么样、微服务我们怎么做追踪和治理的,以及我们遇到的开源技术栈和一些总结。 一、系统从0->1的构建 一开始构建我们的系统,做一个互联网项目,部署这些东西的时候,第一个问题就是用什么样的架构创建我们这套系统。我们选了SpringCloud,因为SpringCloud确实在这些方面有些优势。 Why SpringCloud? 部署更轻量 第一,SpringCloud是基于SpringBoot的一整套实现微服务的 框架 。它提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是,基于SpringBoot,会让开发微服务架构非常方便。在编译和部署上面,时间上面的开销也非常少,这就带来了时间上的节省,开发效率更高。 第二,SpringCloud的源码更可控

Docker学习笔记

≯℡__Kan透↙ 提交于 2020-07-24 13:55:55
cc老师最新一期的高级架构师课程终于确定日期了,7月6号正式开课,现在618活动,三天限时折扣中6800一人不限时免费更新课程是最大的卖点,里面包含了现在主流的架构,以及最新的技术,据说从理论到运用全部带着做,像现在面试常用的 Netty, Redis, Kafka,Zookeeper, Dubbo, Nginx + openResty + kong + Lua, ElasticSearch等技术都深入源码层级,对于有想跟我一样有着像提高自身技术的同学,课程的详情都在私塾的首页详细说明了,感兴趣的小伙伴,可以一起去 【 私塾在线 】 学习 容器卷管理 简介 Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。 为了能保存数据,我们使用卷。 数据卷 卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性: 数据卷可在容器之间共享或重用数据 卷中的更改可以直接生效 数据卷中的更改不会包含在镜像的更新中 数据卷的生命周期一直持续到没有容器使用它为止 增加数据卷 在docker run 时,使用 –v 路径,例如: -v /tmp/data,这就会在容器的/tmp

锦衣盾:开源WEB应用防火墙介绍

橙三吉。 提交于 2020-05-07 19:32:19
xwaf(锦衣盾)是一款基于openresty(nginx+lua)开发的下一代web应用防火墙,独创的业务逻辑防护引擎和机器学习引擎可以有效对业务安全风险进行防护,解决传统WAF无法对业务安全进行防护的痛点。 jxwaf DjangoPython3 jxwaf(锦衣盾)是一款基于openresty(nginx+lua)开发的下一代web应用防火墙,独创的业务逻辑防护引擎和机器学习引擎可以有效对业务安全风险进行防护,解决传统WAF无法对业务安全进行防护的痛点。内置的语义分析引擎配合机器学习引擎可以避免传统WAF规则叠加太多导致速度变慢的问题,同时增强检测精准性(低误报、低漏报)。 Feature 功能 基础攻击防护 SQL注入攻击 XSS攻击 目录遍历漏洞 命令注入攻击 WebShell上传防护 扫描器攻击等… 机器学习 支持向量机(SVM) 语义分析 SQL注入语义分析 XSS攻击语义分析 业务逻辑漏洞防护 注册保护 登陆保护 活动防刷 短信炸弹防护 越权漏洞防护 短信验证码校验绕过防护等… 高级CC攻击防护 可针对不同URL,不同请求参数单独设置不同防护变量 人机识别 Cookie安全防护 前端参数加密防护 支持AES加解密 支持DES加解密 支持RSA加解密 透明部署动态口令功能 可对后台管理系统和网站用户提供动态口令(OTP)功能 检测缓存功能

openresty开发系列2--nginx的简单安装,正向、反向代理及常用命令和信号控制介绍

南笙酒味 提交于 2020-05-05 23:11:49
openresty开发系列2--nginx的简单安装,正向、反向代理及常用命令和信号控制介绍 一、nginx的安装下载及编译安装 1、Nginx下载:nginx-1.13.0.tar.gz,下载到:/usr/local/src [root@node5 src]# wget http://nginx.org/download/nginx-1.13.0.tar.gz tar xf nginx-1.13.0.tar.gz cd nginx-1.13.0 ./configure --prefix=/usr/local/nginx # make && make install 2、关闭nginx [root@node5 nginx]# ps -ef|grep nginx root 16394 1 0 15:35 ? 00:00:00 nginx: master process ./nginx nobody 16395 16394 0 15:35 ? 00:00:00 nginx: worker process root 16399 1426 0 15:41 pts/0 00:00:00 grep --color=auto nginx [root@node5 nginx]# kill -INT 16394 3、安装依赖 [root@node5 ~]# yum install -y gcc