功能描述
图1 传统客户端访问服务器
在图1中,传统的客户端访问服务器模式已经不适应大批量并发用户,当并发请求超过一定数量后,会导致服务器瘫痪。为了缓解这一矛盾,我们提出了两种解决方法:
- 增强服务器本身性能,如cpu、内存、硬盘等硬件设施的提升,但该方法有瓶颈,且高性能的硬件设备花费巨大,不适合普及推广。
- 增加服务器数量,利用“群集”功能,实现多台服务器共同提供服务,缓解单个服务器的工作负担,该方法经济实惠,但需要进行相关的设置才能实施。
综上原因,我们优先推荐使用第二种方法,本讲将通过CentOS服务器搭建负载平衡服务,实现服务器的“群集”功能。
实验一、单点负载平衡
实验环境
- web1:Windows 2012 Server DataCenter(www1.pip.cc)
- web2:Windows 2012 Server DataCenter(www2.pip.cc)
- Haproxy:CentOS7 (hk1.pip.cc)
- client:Windows XP Professional
模拟效果描述:为了能看清楚负载平衡的过程,实验环境下,web1和web2上的网页内容不一样。
图2 单点负载平衡
1、web1和web2用IIS搭建标准的web网站即可(配置过程略)。
2、CentOS7上配置haproxy,实现单点负载平衡。
图3 安装haproxy
图4 haproxy主配置文件
图5 haproxy主配置文件配置样本
图5中,配置了两个部分,前端frontend部分用于监听客户端请求,开启了80端口,采用http模式,并指定默认后端。都断backend部分定义了负载平衡模式,http模式传输,以及后端服务器www1和www2的访问地址,注意这里如果有DNS,可以配置为域名,如果没有,则用IP地址替代。
图6 重启haproxy服务
图6中,完成haproxy设置后,重启该服务,使配置生效。
3、客户端验证
图7 访问hk1.pip.cc负载平衡点
图7中,访问hk1.pip.cc负载平衡点,开启两个页面随机访问,可以看到两个网站的信息,说明两个网站轮流为客户端提供服务,负载功能实现(现实中,两个网站内容要求一致)。
实验环境二、多点负载平衡(双机热备份)
图8 多点负载平衡
实验环境
- web1:Windows 2012 Server DataCenter(www1.pip.cc)
- web2:Windows 2012 Server DataCenter(www2.pip.cc)
- Haproxy1:CentOS7 (hk1.pip.cc)
- Haproxy2:CentOS7(hk2.pip.cc)
- client:Windows XP Professional
图9 安装keepalived
图10 keepalived的配置文件
图11 keepalived.conf的配置文件样本(主节点)
图12 keepalived.conf的配置文件样本(备用节点)
比较图11和图12,两个节点共同的浮动地址172.20.30.69,主节点的优先级(100)比备用节点的优先级(90)略高。
图13 重启keepalived服务,使配置生效
图13 在两个节点上都要执行该命令,使配置生效。
图14 查看主节点,浮动地址在该节点上
图15 查看备用节点,浮动地址不在该节点上
图14和图15是两个节点的对比图,浮动节点只在主节点上有效,当主机点宕机时,浮动地址会出现在备用节点上,“浮动”一词很形象的描绘了两个节点的工作状态。
图16 访问浮动地址
图16中,用户访问浮动地址,从而访问到了web1和web2中任意一台服务器,这里我的浮动地址添加了域名,客户端通过www.pip.cc访问,如果没有DNS,则直接通过IP地址访问即可。
最后附上本案例的DNS信息:
- www1.pip.cc:172.20.30.15网站一
- www2.pip.cc:172.20.30.16网站二
- www.pip.cc:172.20.30.69 浮动地址
- hk1.pip.cc:172.20.30.25 节点一
- hk2.pip.cc:172.20.30.26 节点二
- dns.pip.cc:172.20.30.5 DNS服务器
总结
haproxy+keepalived是Linux环境下的负载均衡和双机热备份功能,该功能填补了Linux服务器操作系统在冗余备份领域的空白,有点类似于windows服务器中“群集”的概念,本讲介绍的知识仅仅是负载平衡和双机热备份功能的基本实现,更深层次功能还需要进一步学习完善。
|