ActivedRouter--golang实现的反向代理、监控
基于golang 实现了简单的http反向代理服务器,监控服务器,客户端程序 ,和一个基于web的监控页面。
通过ActivedRouter 可实现自动摘除宕机服务器,的真机负载。
也可以实现IP轮训负载。
项目地址: github
简单介绍
一、通过ActivedRouter可以实现什么功能?
1、可以集群服务器的监控,通过提供的web Dashboard可以时刻监控每一台服务器的负载、内存、网络、
磁盘等信息。2、反向代理服务器功能,例如Nginx的功能,可以针对不同的域名对不同的业务服务器集群进行反向代理。3、Server & Client 模式组合下,可以用作服务器监控使用,并且可以设置监控报警,Server端可以选择性
开启监控Dashboard,用于直观的web界面监控。4、服务器监控报警,通过配置每一台服务器的监控报警阀值,来触发不同的脚本,从而达到服务器报警功能,
后期支持:短信报警、邮件报警等等。5、实现基于真实负载的反向代理和请求路由。 支持 Random 和 Alived 模式,分别代表随机转发和基于负载转发。6、快速配置反向代理服务,省去配置nginx反向代理的麻烦步骤,一般流量下的负载足以应付。
二、快速入门
2.1、编译安装
在系统下运行如下脚本,会在当前目录生成ActivedRouter二进制程序,然后我们配置相应的配置文件,并且运行二进制程序即可启动服务。
linux64下 boot_linux64.sh
darwin64下 boot_darwin64.sh
linux32下 boot_linux32.sh
四、工作模式和配置文件
4.1、http/https反向代理模式(Reserve Proxy),类似nginx的反向代理功能。
编译命令: boot_*.sh 选择不通平台的boot文件开始编译安装
运行命令: ActivedRouter --runmode=proxy 运行反向代理服务
配置文件:
{ "http_switch":"on", //http开关 on off"proxy_addr":"127.0.0.1:80", //http监听端口"proxy_method":"random", //proxy方法 random 混合模式下可支持alived方法"https_switch":"off", //是否开启https on开启https 支持"https_crt":"a.crt", //https证书"https_key":"a.key", //https key"https_proxy_addr":"127.0.0.1:443",//https监听地址"reserve_proxy":[{"domain":"1.12xue.com","clients":[{"host":"12xuetest.com","port":"80" }]}]
}
4.2、server和client模式可以配合完全服务器监控,提供web仪表盘。
客户端运行: ActivedRouter --runmode=server
client.json
{"domain":"wwww.xxx.com", //客户端服务器的域名可空"cluster":"UIA集群", //服务器集群的标志 可自定义"router_list":[ //要连接的远程路由服务器列表"127.0.0.1:8888","172.16.200.202:9999"]}
服务器运行: ActivedRouter --runmode=client
server.ini
#服务器模式下的配置选项#路由服务器监听的地址host=127.0.0.1#服务器监听的端口号port=8888 #服务模式 moniter & router srvmode=router#http 提供http路由服务的ip,端口。httphost=127.0.0.1httpport=8080
4.3、服务器监控模式触发脚本
当监控服务器下,路由服务器开启srvmode=moniter之后才会触发
{ "script":[{"host":"127.0.0.1","hookscript":[{"eventtarget":"disk","attr":"used","gt":"15","callback":"ls"},{"eventtarget":"load","attr":"load","gt":"1.5","callback":"ls"},{"eventtarget":"mem","attr":"used","gt":"75","callback":"netstat -ant"}]}]
}
运行模式
服务器模式和客户端模式
运行模式 | 介绍 |
---|---|
ServerMode |
在服务器模式下监听客户端的状态 1、 第三方应用通过sdk提供的功能进行自动路由到合适的api服务器上,此处属于代理转发功能。 2、 第三方应用通过sdk提供的功能获取到一个空闲合适的服务器域名或ip。 3、 监听客户端模式下的服务器的服务状态 |
ClientMode |
在客服端模式下通告服务器当前服务状态 1、 启动挂在到路由服务器 可以挂在到一个至个服务器上。 2、 实时通告路由服务器当前服务器信息,用作路由分析。 |
Reserve Proxy | 内网集群配置反向代理功能 |
MixProxy | 基于监控模式下,真机负载的反向代理服务。 |
ThirdPartSDK | 针对第三方提供php golang 等sdk,提供基于路由负载、以及反向代理负载的http请求机制。 |
提供api服务器监控功能可以实时返回各服务器状态
监控功能 | 介绍 |
---|---|
虚拟内存 | 时刻监控服务器的虚拟内存 |
load average | 时刻监控服务器的负载状态 |
网络连接 | 时刻监控服务器的网络连接状态 |
CPU使用率 | 时刻监控CPU的使用率 |
磁盘状态 | 时刻监控服务器的磁盘存储容量 |
ThirdPartSDK | 为应用提供监控接口,可直接展示监控内容 |
ActivedRouter--golang实现的反向代理、监控相关推荐
- Go语言中的单元测试及反向代理
一般为了保证整个系统的稳定性,通常都需要编写大量的单元测试,诸如像java的junit,php的phpunit等都提供了类似的功能.golang中的testing包提供了这个测试的功能,结合go te ...
- golang go语言 反向 websocket 代理演示代码
golang go语言 反向 websocket 代理演示代码 通过go语言实现websocket反向代理功能 package mainimport ("fmt""git ...
- [python] tornado supervisor监控 以及 Nginx反向代理
文章目录 Supervisor 简单的tornado supervisor 配置 启动 效果 Nginx反向代理 安装pcre和nginx nginx配置文件 Supervisor Superviso ...
- golang反向代理使用
图片引用网络. 反向代理具体含义这里就不在进行讲述了,想看详细信息,可自行百度查看. 我们这里直接上代码进行描述. package mainimport (_ "fmt"" ...
- nginx反向代理原理及配置详解
nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...
- beego + nginx 实现反向代理统一认证
2019独角兽企业重金招聘Python工程师标准>>> 前言 上回在 用 Nginx 的 auth_request 模块集成 LDAP 认证 里介绍了如何用 Nginx 的 auth ...
- 彻底吃透Web服务器、容器、应用程序服务器与反向代理
出处:cnblogs.com/vipyoumay/p/7455431.html 我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难.有意思的是 Web 服务器/Web 容器/Web 应用程序服务器 ...
- Nginx(二):反向代理原理 与 配置文件详解
相关阅读: Nginx(一):Nginx原理概述 与 安装步骤详解 Nginx(二):反向代理原理 与 配置文件详解 Nginx(三):负载均衡策略 与 Nginx静态服务器 Nginx(四):Ngi ...
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
本站点停止更新,请访问:blog.coocap.com 相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tom ...
最新文章
- s:select 使用
- 百度实名制后如何进行网站优化?
- ubuntu各版本代号(更新至15.04)及各版本下载地址等
- JFinal的ActiveRecord用法 @JFinal
- c语言指针心得6,c语言指针的学习心得
- 北京有一个“牧人”合唱团
- java 高飞_高飞(土木与水利工程学院)老师 - 合肥工业大学
- 卵巢鸿蒙不全怎么检查,卵巢黄体功能不足怎么办 这三个处理方法要了解
- jyoryo mysql_分类 Tools 下的文章
- D3D游戏关于窗口中如何精确确定鼠标位置的相关讨论
- 国际首个!OpenV2X 开源社区成立,填补 5G 路侧开放基础架构(RSOI)空白
- ASO优化方法有哪些_五大ASO优化方法
- 无聊做做数学题系列1 - 正弦定理及三角公式
- 文件及文件夹删除失败的解决方法
- leach分簇功能实现matlab,LEACH分簇算法实现和能量控制算法实现
- sxt_(015)_request处理表单数据及乱码
- 纹理分析及其在医学成像中的应用
- 上班需要打卡吗?(开通微信公众号--乘着风筝去火星)
- 多线程(一)线程与进程、Thread
- matlab标线,如何在matlab中以方位角画线?