一、HAProxy简介
代理的作用:web缓存(加速)、反向代理、内容路由(根据流量及内容类型等将请求转发至特定服务器)、转码器(将后端服务器的内容压缩后传输给client端)。
缓存的作用:减少冗余内容传输;节省带宽、缓解网络瓶颈;降低了对原始服务器的请求压力,降低了传输延迟。
HAProxy是一种免费的、非常快速且可靠的解决方案,它提供了高可用性、负载平衡和对TCP和基于http的应用程序的代理。它特别适用于非常高的流量网站,并为世界上访问量最大的网站提供了强大的力量。多年来,它已经成为事实上的标准的opensource负载平衡器,现在随大多数主流Linux发行版本一起发布,
并且经常在云平台上默认部署。
HAProxy:只是http协议的反向代理,不提供缓存功能。
二、HAProxy测试环境搭建
1、简单架构图
2、测试环境(说明):
HAProxy:192.168.16.10
web1: 192.168.16.11
web2: 192.168.16.12
操作系统:CentOS Linux release 7.3.1611 (Core)
iptables关闭和selinux为disabled
3、HAProxy服务器安装haproxy
通过yum安装Haproxy:
[root@sheng1 haproxy]# yum -y install haproxy
查看Haproxy版本
[root@sheng1 haproxy]# haproxy -v
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>
web服务器1:192.168.16.11 Web服务器2:192.168.16.11
yum -y install httpd
echo "1111111" > /var/www/html/index.html
systemctl start httpd
然后systemctl start httpd.service
查看和配置haproxy配置文件
cat /etc/haproxy/haproxy.cfg | egrep -v '(#|^$)'
5、配置HAProxy
vim /etc/haproxy/haproxy.cfg
[root@sheng1 haproxy]# pwd
/etc/haproxy
修改haproxy.cfg的配置如下:
global #全局配置
log 127.0.0.1 local2 #日志输出配置
chroot /var/lib/haproxy #haproxy工作目录
pidfile /var/run/haproxy.pid #haproxy的pid目录
maxconn 4000 #最大连接数(默认配置)
user haproxy #运行haproxy用户
group haproxy #haproxy所属组
daemon #后台启动
stats socket /var/lib/haproxy/stats #这个不知道,后续补充
defaults #默认配置
mode http #默认模式mod{tcp|http|health}
log global #日志系统与global段相同
option httplog #日志类别采用httplog
option dontlognull #不记录健康检查日志
option http-server-close #每次请求完毕后主动关闭http通道
option forwardfor except 127.0.0.0/8 #后端服务器需要获得客户端真实ip需要配置的参数
option redispatch #当请求的服务器挂掉之后强行切换到健康的服务器
retries 3 #3次连接服务器失败后确定服务器不可用
timeout http-request 10s #默认http请求超时时间(可优化)
timeout queue 1m #默认队列超时时间(可优化)
timeout connect 10s #默认连接超时时间(可优化)
timeout client 1m #默认客户端超时时间(可优化)
timeout server 1m #默认服务器超时时间(可优化)
timeout http-keep-alive 10s #默认持久连接超时时间(可优化)
timeout check 10s #默认心跳检测超时时间(可优化)
maxconn 3000 #最大连接数,不要超过全局配置最大连接数
listen stats_auth #监控页面及监听端口混合配置,做的有点差,仅做参考
bind 192.168.16.10:8000 #绑定监控页面监听端口
stats uri /status #haproxy监控页面
stats auth admin:westos #配置监控页面账号密码登录
stats refresh 5s #监控页面自动刷新时间
stats hide-version #隐藏监控页面haproxy版本号,保障安全
listen www.jzz.nginx *:8088 #监听的实例名称、地址和端口,可配置多个
server web1 192.168.16.11:80 cookie app1inst1 check inter 2000 rise 2 fall 5
#后端web服务器ip及其他配置
listen www.jzztest.org *:8089 #监听的实例名称、地址和端口,可配置多个
server web2 192.168.16.12:80 cookie app1inst2 check inter 2000 rise 2 fall 5
#后端web服务器ip及其他配置
# 注意参数解释:inter 2000 心跳检测时间;rise 2 三次连接成功,表示服务器正常;
# fall 5 三次连接失败,表示服务器异常; weight 1 权重设置
listen localhost.localdomain *:80
balance roundrobin
#负载均衡算法(有roundrobin、static-rr、leastconn、source、url、url_param、hdr、rdp_cookie)
frontend main *:5000 #frontend前端配置,为haproxy安装时就有,能力有限,不再解释
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
backend static #backend前端配置,为haproxy安装时就有,能力有限,不再解释
balance roundrobin
server static 127.0.0.1:4331 check
backend app #backend前端配置,为haproxy安装时就有,能力有限,不再解释
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
rsyslog 系统日志转发
编辑配置文件/etc/rsyslog.conf
加入如下内容:
$ModLoad imudp
$UDPServerRun 514
local2.* /var/log/haproxy.log
vim /etc/sysconfig/rsyslog
SYSLOGD_OPTIONS=
"-r -m 0"
#接收远程服务器日志
重启rsyslog进程
systemctl restart rsyslog
6. 启动haproxy服务
systemctl start haproxy
三、测试环境是否健康
通过浏览器访问HAProxy
http://192.168.16.10:8000/status
访问haproxy监控页面端口下的/status,为了安全起见,第一次登陆需要账号密码,账号密码就是配置文件里设置的
进入监控页面,在这里可以看到我们的配置
访问haproxy服务器ip的8088端口,可以发现跳转到了Web服务器1
访问haproxy服务器ip的8089端口,可以发现跳转到了Web服务器2
也可以设置域名访问到不同web服务器,但要在本地host绑定域名ip对应关系。
haproxy服务器配置成功
三、haproxy+keepalived简单配置
前提:
1.两台haproxy服务器,配置基本一样,可参考上面haproxy的配置,后端web服务器一样
2.两台haproxy服务器器上都已安装完成keepalived,安装教程参考我的lvs+keepalived配置中的keepalived的安装。
环境:
haproxy服务器1:192.168.16.9
haproxy服务器2:192.168.16.10
haproxy代理web服务器1:192.168.16.11(hostname:www.jzz.nginx 默认页面:1111111)
haproxy代理Web服务器2:192.168.16.12(hostname:www.jzztest.org 默认页面:2222222)
keepalived主服务器:192.168.174.9
keepalived从服务器:192.168.174.10
VIP:192.168.16.8
操作系统:centos7.3 iptables关闭和selinux为disabled
两台keepalived主机的设置
1、配置HAProxy:新加进来的192.168.16.9也要和之前的haproxy做同样的配置。
2、 haproxy服务器两台机均安装keepalived
#安装依赖文件与keepalive
# yum install -y openssl openssl-devel keepalived
keepalived主服务器配置文件
[root@sheng0 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_R1
}
vrrp_strict chk_http_port {
script "/opt/script/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 88
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.16.8
}
track_script {
check_haproxy
}
}
[root@sheng1 /]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_R2
}
vrrp_strict chk_http_port { # Haproxy监控脚本
script "/opt/script/check_haproxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 88
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.16.8
}
track_script {
check_haproxy
}
}
[root@sheng1 script]# cat check_haproxy.sh
#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then
/etc/init.d/haproxy start
fi
sleep 2
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then
/etc/init.d/haproxy stop
fi
*******************************************************************************************************************
附录:
haproxy配置文件:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
listen stats_auth
bind 192.168.16.10:8000
stats uri /status
stats auth admin:westos
stats refresh 5s
stats hide-version
listen www.jzz.nginx *:8088
server web1 192.168.16.11:80 cookie app1inst1 check inter 2000 rise 2 fall 5
listen www.jzztest.org *:8089
server web2 192.168.16.12:80 cookie app1inst2 check inter 2000 rise 2 fall 5
listen localhost.localdomain *:80
balance roundrobin
frontend main *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
backend static
balance roundrobin
server static 127.0.0.1:4331 check
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
推广:haproxy+keepalived(主主模式)实现高可用环境的简单配置
https://blog.51cto.com/sf1314/2384572
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。