|
一 应用场景描述
我们将要上线的一款手游后端游戏代码采用HAProxy+Keepalived+后端服务器的方式来部署。HAProxy根据游戏域名进行负载均衡,Keepalived为HAProxy提供高可用方案。最近有空就深入研究了一下HAProxy的官方架构文档。这里提一下,很多游戏公司在部署游戏服的时候,没有采用负载均衡的方式,而是采用一台服务器上部署很多个区服这种模式,实际上根本不能达到节省系统资源的目的,因为一台服务器能够承载的游戏区服是不好控制的,这种模式也不好对后端游戏服务器进行容量规划和动态增减。主要还是运维同事没有和开发同事关于游戏代码部署没有沟通好,如果开发同事在开发期间没有考虑部署的方便性,那后期游戏上线后,运维同事就会一直做些没有技术含量的重复劳作。
二 HAProxy简单介绍
HAProxy是一个为基于TCP和HTTP应用提供免费的,快速的,可靠的高可用功能,负载均衡均衡功能和反向代理功能的方案。它特别适合应用在那些需要高并发访问并需要作七层处理和会话保持的高负载网站。
目前主要使用的两个版本是1.3和1.4.
三 HAProxy配置案例
HAProxy作者在http://haproxy.1wt.eu/download/1.3/doc/architecture.txt 文档中详细描述了HAProxy相关的配置案例。以下内容主要来自这个文档的翻译。
在以下各个案例中将省略全局配置参数和默认配置参数。使用以下gloabl和defaults配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| global
chroot /usr/share/haproxy
log 127.0.0.1 local3 notice
maxconn 65536
spread-checks 3
defaults
log global
mode http
balance roundrobin
option abortonclose
option httpclose
option forwardfor except 127.0.0.1
option redispatch
timeout client 45s
timeout connect 45s
timeout server 45s
timeout check 10s
|
案例1.带cookie插入的简单HTTP负载均衡
如上图所示,一台WEB服务器上面运行Nginx和PHP-FPM服务,后端是一台MySQL数据库。由于用户访问量增加,这台WEB服务器的CPU已经趋于饱和状态。MySQL数据库服务器的压力不大。如果将这台WEB服务器替换成一台处理能力更强的高配置服务器,可能比增加同样的几台低配置服务器的成本更高。所以考虑增加几台低配置服务器并部署相同的服务。但是由于一些用户数据如用户会话等没有存储在后端MySQL数据库中,而是存储在WEB服务器上,所以,简单的利用IP或TCP负载均衡调度增加几台WEB服务器将不能满足需求。
|
|
|
|
|
|
|