赞
踩
1、反向代理测试
①启动一个正常的web服务器
也可以使用已经安装的openresty
- #启动web服务器 默认80端口
- /usr/local/openresty/bin/opennresty
- #检测服务是否开启 80端口
- netstat -lntp |grep 80
②配置指向后端服务
到这里还暂时不能使用。需要配置具体路由信息进行转发测试
③配置路由规则信息
④测试查看
通过上图,可以查看到已经转发成功。也就是说明反向代理设置成功。
负载均衡测试
这里简单测试一下负载均衡轮询的效果。故然另外安装一个httpd监听不同端口进行测试。
①安装一个httpd
yum install httpd
②修改httpd默认端口,添加测试页面
默认httpd监听端口80,上面案例中已经启动openresty在80端口,故这里将httpd修改为8080。
vim +42 /etc/httpd/conf/httpd.conf
添加测试页面
echo this is httpd page >> /var/www/html/index.html
③启动并查看httpd服务
- systemctl start httpd
-
- systemctl status httpd
④在upstream中添加后端节点
⑤测试查看负载均衡转发效果
以上案例可以看到路由已经转发,并且负载均衡到这里实现的两个节点。
该样例转发(需要继续完善)
Stream 代理
TCP 作为通信协议:LDAP、 MYSQL 和 RTMP
UDP协议:非事务性的应用如 DNS、 syslog 和 RADIUS
UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。常用的UDP端口号有:53(DNS)、69(TFTP)、161(SNMP),
使用UDP协议包括:TFTP、SNMP、NFS、DNS、BOOTP。
1. 开启端口,APISIX配置:conf/config.yaml
注意这里需要提前添加监听的接口(非全动态,需要完善)
- apisix:
- stream_proxy: # TCP/UDP proxy
- tcp: # TCP proxy address list
- - 9100
- - 13305
- udp: # UDP proxy address list
- - 9200
- - 127.0.0.1:9211
2.新增路由
请求方式: put修改; post新增
head添加key: X-API-KEY:edd1c9f034335f136f87ad84b625c8f1
修改指定id的路由:http://192.168.26.185:9080/apisix/admin/stream_routes/1
新增访问路径:http://192.168.26.185:9080/apisix/admin/stream_routes
提交的json数据:
- {
- "server_addr": "192.168.26.185",
- "server_port":13305,
- "upstream": {
- "nodes": {
- "192.168.26.150:3306": 1
- },
- "type": "roundrobin"
- }
- }
注:新增同样的路由,并不会覆盖,而是新增一条,生效的是第一次新增的路由 [ 理应提示新增失败,或是覆盖比较好些]
3.新增返回结果:
{"node":{"value":{"server_port":13305,"upstream":{"nodes":{"192.168.26.150:3306":1},"hash_on":"vars","type":"roundrobin"},"server_addr":"192.168.26.185"},"createdIndex":45,"key":"\/apisix\/stream_routes\/00000000000000000045","modifiedIndex":45},"action":"create"}
4.修改返回结果
http://192.168.26.185:9080/apisix/admin/stream_routes/00000000000000000053
put提交修改返回结果
- {
- "node": {
- "value": {
- "server_port": 13305,
- "upstream": {
- "nodes": {
- "192.168.26.112:3306": 1
- },
- "hash_on": "vars",
- "type": "roundrobin"
- },
- "server_addr": "192.168.26.185"
- },
- "createdIndex": 57,
- "key": "/apisix/stream_routes/00000000000000000053",
- "modifiedIndex": 57
- },
- "prevNode": {
- "value": "{\"server_port\":13305,\"upstream\":{\"hash_on\":\"vars\",\"nodes\":{\"192.168.26.112:3306\":1},\"type\":\"roundrobin\"},\"server_addr\":\"192.168.26.185\"}",
- "createdIndex": 53,
- "key": "/apisix/stream_routes/00000000000000000053",
- "modifiedIndex": 53
- },
- "action": "set"
- }

5.测试连接成功
UDP同理
支持用 client_id
对 MQTT 进行负载均衡,同时支持 MQTT 3.1.* 和 5.0 两个协议标准
MQTT(Message Queue Telemetry Transport 消息队列遥测传输):
属性
protocol_name
: 必选,协议名称,正常情况下应为“ MQTT” 。protocol_level
: 必选,协议级别,MQTT3.1.*
应为 “4” ,MQTT5.0
应该是“5”。upstream.ip
: 必选,将当前请求转发到的上游的 IP 地址,upstream.port
: 必选,将当前请求转发到的上游的 端口,
1.conf/config.yaml
中首先开启 stream_proxy 配置,比如下面配置代表监听 9100 TCP 端口:
- stream_proxy: # TCP/UDP proxy
- tcp: # TCP proxy port list
- - 9100
2.指定的 route 上开启了 mqtt-proxy 插件:
- curl http://127.0.0.1:9080/apisix/admin/stream_routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
- {
- "remote_addr": "127.0.0.1",
- "plugins": {
- "mqtt-proxy": {
- "protocol_name": "MQTT",
- "protocol_level": 4,
- "upstream": {
- "ip": "127.0.0.1",
- "port": 1980
- }
- }
- }
- }'
3 .禁用插件
当你想去掉插件的时候,很简单,在插件的配置中把对应的 json 配置删除即可,无须重启服务,即刻生效:
$ curl http://127.0.0.1:2379/v2/keys/apisix/stream_routes/1 -X DELETE
现在就已经移除了 mqtt-proxy 插件了。
创建代理 gRPC 的 Route
在指定 Route 中,代理 gRPC 服务接口:
service_protocol
必须设置为 grpc
;- curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
- {
- "methods": ["POST", "GET"],
- "uri": "/helloworld.Greeter/SayHello",
- "service_protocol": "grpc",
- "upstream": {
- "type": "roundrobin",
- "nodes": {
- "127.0.0.1:50051": 1
- }
- }
- }'
LuaJIT - 极速版Lua实现 :
ArrayVarNginxModule - 数组类型的Nginx变量
AuthRequestNginxModule - 鉴权,想象一下以C代码的速度判断一个请求是否合法,是不是很有快感呢?!
DrizzleNginxModule - Nginx-MySQL桥,非阻塞的哦,我又爱又恨的一个模块,值得注意的是,其响应是RDS流
EchoNginxModule - 以非常直观的方式在Nginx配置文件中编写简单的处理逻辑,源码包含大量注释,绝对是入门好例子!!??
EncryptedSessionNginxModule - 加密会话
FormInputNginxModule - 解析post请求中的参数,这下子,简单请求根本不需要PHP/Java来处理啦
HeadersMoreNginxModule - Nginx默认的header模块只能添加或忽略,这个给你CRUD全套的!!
IconvNginxModule - 编码转换,不多说,也不懂
StandardLuaInterpreter - 与Lua官方实现所匹配,一般用不上,因为我们用LuaJIT!!
MemcNginxModule - 与Memcached的绝配,谁用谁知道!!与upstram_keepalive一起用,你能更High!!
Nginx :
NginxDevelKit - N多第三方插件都依赖的东西,不知道为啥 提供一些方便使用的基础API封装
LuaCjsonLibrary - Lua版的Json处理库实在太慢,这个才叫速度!!
LuaNginxModule - 我的最爱,一般逻辑,完全没必要用Java/PHP啦
LuaRdsParserLibrary - 在Lua中直接处理RDS流,速度杠杠的!
LuaRedisParserLibrary - 在Lua中处理Redia模块的响应,暂时我还没用上
PostgresNginxModule - Nginx-Postgres桥,输出的也是RDS流
RdsCsvNginxModule - RDS流转CVS格式,不知道能干啥,报表?
RdsJsonNginxModule - RDS流转JSON字符串,之前经常用这个
Redis2NginxModule - Nginx-Redis2桥
SetMiscNginxModule - 提供很多很实用的方法,例如base64编解码,URL编解码,SQL防注入等等
SrcacheNginxModule - 缓存模块,据说跟Memc模块一起用比较爽
UpstreamKeepaliveNginxModule - 与Memc模块的标配,号称性能提升几倍呢
XssNginxModule - 防跨站攻击的 通过Jsonp进行跨站ajax编程
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。