使用Haproxy搭建Web群集
Haproxy是目前比较流行的一种集群调度工具,与同类集群调度工具LVS和Nginx相比,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持集群功能,但是对集群节点健康检查功能不强,性能没有Haproxy好。
LVS、Haproxy、Nginx最常用的调度算法有三种,分别是RR(Round Robin)轮询、LC(Least Connection)最小连接数、SH(Source Hashing)基于来源访问。
案例环境
单台Haproxy服务器就可以实现多台Web服务器之间的热备和负载均衡,这里使用Keepalived保证了Haproxy本身的高可用。
一、Haproxy服务器的安装与配置
1.编译安装Haproxy
安装两个支持包
将haproxy编译到内核中
安装
2.Haproxy服务器配置
创建配置文件目录
复制源码包中的配置文件作为模版进行修改
Haproxy配置文件通常分为三个部分:global(全局配置)、defaults(默认配置)、listen(应用组件配置)。
以示例参数说明如下:
global
log127.0.0.1 local0 //配置日志记录,local0为日志设备,默认存放到系统日志
log127.0.0.1 local1notice //notice为日志级别,通常有24个级别
maxconn 4096 //最大连接数
uid99 //所属运行的用户UID
gid99 //所属运行的用户GID
pidfile /var/run/haproxy.pid //pid文件存放路径
daemon //以后台形式运行haproxy
defaults
logglobal //定义日志为global配置中的日志定义
mode http //模式为http
option httplog //采用http日志格式几率日志
option dontlognull //不记录健康检查的日志信息
option redispatch //serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option httpclose //每次请求完毕后主动关闭http通道
retries3 //3次连接失败就认为服务不可用
maxconn 2000 //最大连接数
contimeout 5000 //连接超时时间
clitimeout 50000 //客户端超时间
srvtimeout 50000 //服务器超时时间
listen webcluster 0.0.0.0:80
//Frontend和Backend的组合体,监控组的名称,按需自定义名称,点听80端口。
option httpchk POST /index.htm //心跳检测的文件
balance roundrobin //负载调度使用轮询算法
server inst1 192.168.1.20:80 check inter 2000 fall 3
//服务器定义,check inter 2000表示检测心跳频率,fall 3是3次失败认为服务器不可用
server inst1 192.168.1.21:80 check inter 2000 fall 3
3.创建自启动脚本
复制源码包中的服务脚本作为haproxy程序的控制脚本
优化并添加系统服务
启动haproxy服务
开启iptables防火墙80端口的例外
nginx服务器的搭建,这里不再演示,为了测试负载均衡,要在两台web服务器上创建不同的内容的网页。
在客户机上访问haproxy 01,两次看到的内容不同,说明负载均衡已经实现。
如果要测试高可用,只需要停用一台nginx服务器,在客户机上再次访问haproxy 01,这时候只能看到一种内容的网页,并且刷行网页不会出现报错,说明高可用也已经实现。
二、使用keepalived实现Haproxy本身的高可用
1.编译安装keepalived
安装keepalived之前需要安装三个支持包
编译安装keepalived,使用指定的内核位置对keepalived进行配置,并将安装路径指定为根目录,这样就无需额外创建链接文件了。
添加系统服务
2.主服务器的配置
global_defs{…} //指定全局参数
router_id //指定本服务器名称
vrrp_instance 实例名称 { ... } //指定VRRP热备实例
state //指定热备状态
virtual_router_id //虚拟路由器的ID号,每个热备组保持一致
priority //优先级,数值越大优先级越高
advert_int //通告间隔秒数(心跳频率)
authentication {…} //认证信息,每个热备组保持一致
auth_type //认证类型
auth_pass //密码子串
virtual_ipaddress{…} //指定漂移地址,可以有多个
重启keepalived服务
在haproxy 01上部署完keepalived服务后,查看网卡的信息,发现eth0接口自动添加了VIP地址。
3.备用服务器的配置
在haproxy 02上安装keepalived的过程一样,只是配置文件中主要有三处不同:路由器名称、热备状态、优先级。
可以在haproxy 02上直接复制第一台的配置文件
修改这三处即可
重启keepalived服务
查看网络接口信息,发现eth0接口没有添加VIP地址。
在客户机访问VIP的地址,打开两次后发现同样可以实现负载均衡的效果。
如果,要测试haproxy本身的高可用,只要停用haproxy 01,然后在客户端再次访问VIP地址即可。
三、Haproxy日志
Haproxy的日志默认是输出到系统的syslog中(即/var/log/message),查看不方便。所以,可以将其单独定义出来。
1.修改Haproxy配置文件关于日志配置的选项
这里主要是将Haproxy的info及notice日志分别记录到不同的日志文件中。
重启haproxy服务
2.修改rsyslog配置
为了便于管理,将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。
在haproxy.conf中加入以上内容
“& ~”表示当日志写入到日志文件后,rsyslog停止处理这个信息。
重启rsyslog服务
即时查看日志信息,在客户端访问haproxy 01服务器后,便会弹出新的日志信息。
转载于:https://blog.51cto.com/fengjicheng/1888308