基于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实现的反向代理、监控相关推荐

  1. Go语言中的单元测试及反向代理

    一般为了保证整个系统的稳定性,通常都需要编写大量的单元测试,诸如像java的junit,php的phpunit等都提供了类似的功能.golang中的testing包提供了这个测试的功能,结合go te ...

  2. golang go语言 反向 websocket 代理演示代码

    golang go语言 反向 websocket 代理演示代码 通过go语言实现websocket反向代理功能 package mainimport ("fmt""git ...

  3. [python] tornado supervisor监控 以及 Nginx反向代理

    文章目录 Supervisor 简单的tornado supervisor 配置 启动 效果 Nginx反向代理 安装pcre和nginx nginx配置文件 Supervisor Superviso ...

  4. golang反向代理使用

    图片引用网络. 反向代理具体含义这里就不在进行讲述了,想看详细信息,可自行百度查看. 我们这里直接上代码进行描述. package mainimport (_ "fmt"" ...

  5. nginx反向代理原理及配置详解

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  6. beego + nginx 实现反向代理统一认证

    2019独角兽企业重金招聘Python工程师标准>>> 前言 上回在 用 Nginx 的 auth_request 模块集成 LDAP 认证 里介绍了如何用 Nginx 的 auth ...

  7. 彻底吃透Web服务器、容器、应用程序服务器与反向代理

    出处:cnblogs.com/vipyoumay/p/7455431.html 我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难.有意思的是 Web 服务器/Web 容器/Web 应用程序服务器 ...

  8. Nginx(二):反向代理原理 与 配置文件详解

    相关阅读: Nginx(一):Nginx原理概述 与 安装步骤详解 Nginx(二):反向代理原理 与 配置文件详解 Nginx(三):负载均衡策略 与 Nginx静态服务器 Nginx(四):Ngi ...

  9. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    本站点停止更新,请访问:blog.coocap.com 相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tom ...

最新文章

  1. s:select 使用
  2. 百度实名制后如何进行网站优化?
  3. ubuntu各版本代号(更新至15.04)及各版本下载地址等
  4. JFinal的ActiveRecord用法 @JFinal
  5. c语言指针心得6,c语言指针的学习心得
  6. 北京有一个“牧人”合唱团
  7. java 高飞_高飞(土木与水利工程学院)老师 - 合肥工业大学
  8. 卵巢鸿蒙不全怎么检查,卵巢黄体功能不足怎么办 这三个处理方法要了解
  9. jyoryo mysql_分类 Tools 下的文章
  10. D3D游戏关于窗口中如何精确确定鼠标位置的相关讨论
  11. 国际首个!OpenV2X 开源社区成立,填补 5G 路侧开放基础架构(RSOI)空白
  12. ASO优化方法有哪些_五大ASO优化方法
  13. 无聊做做数学题系列1 - 正弦定理及三角公式
  14. 文件及文件夹删除失败的解决方法
  15. leach分簇功能实现matlab,LEACH分簇算法实现和能量控制算法实现
  16. sxt_(015)_request处理表单数据及乱码
  17. 纹理分析及其在医学成像中的应用
  18. 上班需要打卡吗?(开通微信公众号--乘着风筝去火星)
  19. 多线程(一)线程与进程、Thread
  20. matlab标线,如何在matlab中以方位角画线?

热门文章

  1. 淘宝标题,标题权重,何时优化标题,修改标题流量下滑,标题优化的技巧方法
  2. 尼尔 斗技场 机器人_尼尔机械纪元机器人竞速支线过关攻略
  3. 【转】如何写好.babelrc?Babel的presets和plugins配置解析
  4. UML建模-5-类图
  5. 常用的前端开发工具有哪些?
  6. 偶然发现无线路由器的两个新功能。
  7. Alfred3 无法激活workflows解决方法
  8. 详细介绍什么是浏览器指纹
  9. 为什么B站视频的人物可以不被弹幕挡住?
  10. 2021-2027中国雄烯二酮市场现状研究分析与发展前景预测报告