一.Haproxy概念
Haproxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。Haproxy特别适用于那些负载特大的web站点,这些站点通常又需要会保持或七层处理。Haproxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
二.案例环境
1.编译安装nginx服务器
搭建nginx,使用nginx-1.12.0.tar.gz安装包进行编译安装。
Yum -y install pcre-devel zlib-devel
Useradd -M -s /sbin/nologin nginx
Tar zxf nginx-1.12.0.tar.gz
Cd nginx-1.12.0
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
Make && make install
建立测试页面
Cd /usr/local/nginx/html
Echo “server 192.168.1.61” > test.html
/usr/local/nginx/sbin/nginx
Netstat -anpt | grep nginx ----若有端口显示,则表示服务开启成功
Systemctl stop firewalld
安装完成后再客户端访问http://192.168.1.61/test.html测试
另一个nginx服务器安装的步骤和上面的相同,不同的在于建立测试页面
Echo “server 192.168.1.62” > test.html
安装完成后再客户端访问http://192.168.1.62/test.html测试
2.编译安装harpooxy
使用harpoxy-1.5.19.tar.gz安装包进行编译安装
Yum -y install pcre-devel bzip2-devel
Tar zxf harpoxy-1.5.19.tar.gz
Cd harpoxy-1.5.19
Make TARGET=linux26 //64位系统
Make install
建立haproxy的配置文件
Mkdir /etc/haproxy
Cp ~/harpoxy-1.5.19/examples/haproxy.cfg /etc/haproxy
Vim /etc/haproxy/haproxy.cfg
修改配置文件为
创建自启动脚本
Cp ~/harpoxy-1.5.19/example/haproxy.init /etc/init.d/haproxy
Ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Chmod +x /etc/init.d/haproxy
Chkconfig --add /etc/init.d/haproxy
/etc/init.d/haproxy start //执行后出现ok或确定表示服务启动成功
Systemctl stop firewalld
测试web群集
在客户端使用浏览器打开http://192.168.1.60/test.html,刷新,会在两个nginx服务器之间不断跳转。
三.启用Haproxy日志
修改haproxy配置文件中关于日志配置的选项,将原有的日志配置更改为以下配置
重启haproxy,完成haproxy配置
修改rsylog配置,将haproxy相关的配置文件独立定义到harpoxy.conf,并放到/etc/rsyslog.d/下。Rsyslog启动时会自动加载次目录下的所有配置文件。
Touch /etc/rsyslog.d/haproxy.conf
Vim /etc/rsyslog.d/haproxy.conf
加入下面内容
保存配置文件并重启rsyslog服务。完成rsyslog配置
测试日志文件
在客户端访问http://192.168.1.60/test.html后,可以使用tailf -f /var/log/haproxy/haproxy-info.log即时查看haproxy的访问日志请求。
四.haproxy的参数优化
Maxconn 最大连接数
Daemon 守护进程模式
Nbproc 负载均衡的并发进程数
Retries 重试次数
Option http-server-close 主动关闭http请求选项
Timeout http-keep-alive 长时间超时时间
Timeout http-request http请求超时时间
Timeout client 客户端超时时间
Vim /etc/rsyslog.d/haproxy.conf
if ($programname == ‘haproxy’ and KaTeX parse error: Expected 'EOF', got '&' at position 72: …proxy-info.log &̲ ~ if (programname == ‘haproxy’ and $syslogseverity-text == ‘notice’) then -/var/log/haproxy/haproxy-notice.log
& ~
Vim /etc/haproxy/haproxy.cfg
global
log /dev/log local0 info
log /dev/log local0 notice
maxconn 4096
#chroot /usr/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet
defaults
log global
mode http
option httplog
option dontlognull
retries 3
#redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webcluster 0.0.0.0:80
option httpchk GET /index.html
option persist
balance roundrobin
server inst1 192.168.1.3:80 check inter 2000 fall 3
server inst2 192.168.1.2:80 check inter 2000 fall 3