在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:Lars开源软件地址:https://gitee.com/Aceld/Lars开源软件介绍:(Load balance And Remote service schedule System) 开发者GithubGit: https://github.com/aceld/Lars 码云(Gitee)Git: https://gitee.com/Aceld/Lars 一、系统开发环境:
二、开发技术文档及教程
https://github.com/aceld/Lars_release PC端文档
《Lars-基于C++负载均衡远程服务器调度系统教程》
《Lars-基于C++负载均衡远程服务器调度系统教程》移动端文档三、概述:Lars是一个简单、易用、高性能的服务间远程调用管理、调度、负载均衡系统。 1) 优势
2) 应用场景(1)、大型门户网站 针对大型门户网站访问量高的特点,通过弹性负载均衡将用户的访问流量均匀的分发到多个后端云服务器上,确保业务快速平稳的运行 优势
(2)、跨可用区同城容灾 弹性负载均衡可将流量跨可用区进行分发,建立实时的同城容灾机制,满足银行贸易等企业对系统的高可用性要求。 优势
(3)、电商抢购 电商业务呈现出较强的潮汐效应。Lars通过和弹性伸缩等服务的无缝集成,自动创建后端云服务器,将流量自动分发到新的云服务器,缓解了促销高峰时期的系统压力。 优势
3) Lars系统总体架构 对于一个部门的后台,为增强灵活性,一个服务可以被抽象为命令字:
API :根据自身需要的 LoadBalance Agent:运行于每个服务器上,负责为此服务器上的业务提供节点获取、节点状态汇报、路由管理、负载调度等核心功能 DNSService : 运行于一台服务器上(也可以用LVS部署多实例防单点),负责 Report Service : 运行于DNSService同机服务器上,负责收集各
如图,每个服务器(虚线)部署了一台LoadBalance Agent,以及多个业务服务
四、快速开始(1) 编译及安装代码下载 git clone https://github.com/aceld/Lars.git 编译 cd ./Lars make
(2) 数据库配置创建表 cd ./Lars/base/sql 进入`mysql`,导入表`lars_dns.sql`文件 mysql -u root -p #输入密码 mysql> source ./lars_dns.sql (3) 各子系统配置文档lars reporter
[reactor]maxConn = 1024threadNum = 5ip = 127.0.0.1port = 7779[mysql]db_host = 127.0.0.1db_port = 3306db_user = rootdb_passwd = **Your PassWord**db_name = lars_dns[repoter]db_thread_cnt = 3 lars dns
[reactor]maxConn = 1024threadNum = 5ip = 127.0.0.1port = 7778[mysql]db_host = 127.0.0.1db_port = 3306db_user = rootdb_passwd = **Your PassWord**db_name = lars_dns lars LoadBalance Agent
[reporter]ip = 127.0.0.1port = 7779[dnsserver]ip = 127.0.0.1port = 7778[loadbalance];经过若干次获取请求host节点后,试探选择一次overload过载节点probe_num=10;初始化host_info主机信息访问成功的个数,防止刚启动时少量失败就认为过载init_succ_cnt=180;当idle节点切换至over_load时的初始化失败次数,主要为了累计一定成功次数才能切换会idleinit_err_cnt=5;当idle节点失败率高于此值,节点变overload状态err_rate=0.1;当overload节点成功率高于此值,节点变成idle状态succ_rate=0.5;当idle节点连续失败次数超过此值,节点变成overload状态contin_err_limit=15;当overload节点连续成功次数超过此值, 节点变成idle状态contin_succ_limit=15;整个窗口的真实失败率阈值window_err_rate=0.7;对于某个modid/cmdid下的某个idle状态的host,需要清理一次负载信息的周期idle_timeout=15;对于某个modid/cmdid/下的某个overload状态的host,在过载队列等待的最大时间overload_timeout=15;对于每个NEW状态的modid/cmdid,多久更新一下本地路由,秒update_timeout=15 (4)启动启动 lars reporter serivce cd ./Lars ./run_lars reporter 启动 lars dns service cd ./Lars ./run_lars dns 启动 lars lbagent service cd ./Lars ./run_lars lbagent 启动 lars web service cd ./Lars ./run_lars web (5) Web管理端操作打开浏览器,输入web 服务的ip地址+端口号 配置主机 查看所有主机配置 (6) 模拟效果测试启动模拟器测试 cd ./Lars ./run_lars test simulator 1 1 更多测试工具 cd ./Lars ./run_lars help =======启动子系统==========Usage ./run_lars [reporter|dns|lbagent|web|test]=======测试工具============Usage ./run_lars test gethost ModID CmdIDUsage ./run_lars test getroute ModID CmdIDUsage ./run_lars test report ModID CmdID IP Port 0|1 --- 0:SUCC, 1:OVERLOADUsage ./run_lars test simulator ModID CmdID [errRate(0-10)] [queryCnt(0-999999)]Usage ./run_lars test qps ThreadNumUsage ./run_lars test example ModID CmdID (7)Web查看主机调用状态五、Lars QPS性能测试主机1
主机2
Lars技术讨论社区微信公众号QQ资源分享微信群欢迎大家加入,一起学习分享 |
请发表评论