Haproxy:
haproxy主要是负责做负载均衡的七层,也可以做四层负载均衡
负载均衡是通过OSI协议对应的:
七层负载均衡:用的七层http协议
四层负载均衡:用的是tcp协议加端口号做的负载均衡
haproxy的特点:
1、支持tcp/http两种协议层的负载均衡,使得其负载均衡功能非常丰富。
2、支持八种左右的负载均衡算法,尤其是http模式时,有许多非常实在的负载均衡算法,适用各种需求。
3、性能非常优秀,基于事件驱动的链接处理模式及单进程处理模式(和nginx相似)让其性能卓越。
4、拥有一个功能出色的监控页面,实时了解系统的当前状况。
5、功能强大的ACL支持,给用户极大的方便。
haproxy的配置文件详情介绍:
global //全局配置
log 127.0.0.1 local3 info //日志配置
maxconn 4096 //最大连接限制(优先级低)
user nobody
group nobody
daemon //守护进程运行<br /> nbproc 1 //haproxy进程数<br />defaults //针对(listen和backend块进行设置没如果块中没设置,则使用默认设置)默认配置<br /> log global //日志使用全局配置<br /> mode http //模式7层LB<br /> maxconn 2048 //最大连接数(优先级中)<br /> retries 3 //健康检查。3次连接失败就认为服务不可用<br /> option redispatch //服务不可用后的操作,重定向到其他健康服务器<br /> stats uri /haproxy //web页面状态模块功能开启<br /> stats auth qianfeng:123 //状态模块认证(用户名qianfeng密码123)<br /> contimeout 5000 //定义haproxy将客户端!!!请求!!!转发至后端服务器,所等待的超时时长<br /> clitimeout 50000 //haproxy作为客户,和后端服务器之间!!!空闲连接!!!的超时时间,到时候发送fin指令<br /> srvtimeout 50000 //haproxy作为服务器,和用户之间空闲连接的超时时间,到时候发送fin指令<br /> #timeout connect 5000<br />#timeout client 50000<br />#timeout server 50000<br />frontend http-in //前端配置块。面对用户侧<br /> bind 0.0.0.0:80 //面对用户监听地址和端口<br /> mode http //http模式的LB<br /> log global //日志使用全局配置<br /> option httplog //默认日志格式非常简陋,仅包括源地址、目标地址和实例名称,而“option httplog参数将会使得日志格式变得丰富许多,其通常包括但不限于HTTP请求、连接计时器、会话状态、连接数、捕获的首部及cookie、“frontend”、“backend”及服务器名称,当然也包括源地址和端口号等。<br /> <br /> option httpclose // 每次请求完毕后,关闭http通道<br /> acl html url_reg -i \.html$ //1. 访问控制列表名称html。规则要求访问以html结尾的url时<br /> use_backend html-server if html //2.如果满足acl html规则,则推送给后端服务器 html-server<br /> default_backend html-server // 3:默认的后端服务器是 html-server
backend html-server //后端服务器名称为 html-server
mode http //模式为7层代理
balance roundrobin //轮循(rr)
option httpchk GET /index.html //允许用http协议检查server 的健康
cookie SERVERID insert indirect nocache //轮询的同时,根据插入的cookie SERVERID 的值来做会话保持,将相同的用户请求,转发给相同的真实服务器。
server html-A web1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5
server html-B web2:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5
cookie 3 服务器ID,避免rr算法将客户机请求转发给其他服务器 ,对后端服务器的健康状况检查间隔为2000毫秒,连续2次健康检查成功,则认为是有效的,连续5次健康检查失败,则认为服务器宕机
haproxy负载均衡及keepalived高可用部署:
五台服务器:
client服务器:模拟客户端进行访问测试—->10.0.0.15
haproxy-1:代理服务及高可用—->10.0.0.11
haproxy-2:代理服务及高可用—->10.0.0.12
real-server1(web-1):负责网站发布—->10.0.0.13
real-server2(web-2):负责网站发布—->10.0.0.14
保证防火墙与selinux关闭、切记网络畅通、epel及base仓库可用
web-1服务器部署:
>yum -y isntall nginx && systemctl start nginx && echo “this is web-1” > /usr/share/nginx/html/index.html
#下载并启动nginx服务,在默认网站发布目录内添加测试内容
web-2服务器部署:
>yum -y isntall nginx && systemctl start nginx && echo “this is web-1” > /usr/share/nginx/html/index.html
#下载并启动nginx服务,在默认网站发布目录内添加测试内容
web服务器部署完成后使用client服务器进行访问测试防止环境出错
Haproxy-1服务器部署:
>yum -y install haproxy #下载服务
>cp /etc/haproxy/haproxy.cfg /etx/haproxy/haproxy.cfg.back #备份主配置文件
>vim /etc/haproxy/haproxy.cfg #编辑主配置文件
d+G删除所有内容之后,添加以下内容:
global
log 127.0.0.1 local3
maxconn 4096
uid nobody
# uid 99
gid nobody
# gid 99
daemon
nbproc 1
defaults
log global
mode http
maxconn 2048
retries 3
option redispatch
stats uri /haproxy
stats auth zs:123
contimeout 5000
clitimeout 50000
srvtimeout 50000
#timeout connect 5000
#timeout client 50000
#timeout server 50000
frontend http-in
bind 0.0.0.0:80
mode http
log global
option httplog
option httpclose
acl zs url_reg -i .html$
use_backend bg if zs
default_backend bg
backend bg
mode http
balance roundrobin
option httpchk GET /index.html
cookie SERVERID insert indirect nocache
server zs-A 10.0.0.13:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5
server zs-B 10.0.0.14:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5
保存退出
>systemctl restart haproxy #重启服务使配置生效
Haproxy-2服务器部署:
>yum -y install haproxy #下载服务
>cp /etc/haproxy/haproxy.cfg /etx/haproxy/haproxy.cfg.back #备份主配置文件
>vim /etc/haproxy/haproxy.cfg #编辑主配置文件
d+G删除所有内容之后,添加以下内容:
global
log 127.0.0.1 local3
maxconn 4096
uid nobody
# uid 99
gid nobody
# gid 99
daemon
nbproc 1
defaults
log global
mode http
maxconn 2048
retries 3
option redispatch
stats uri /haproxy
stats auth zs:123
contimeout 5000
clitimeout 50000
srvtimeout 50000
#timeout connect 5000
#timeout client 50000
#timeout server 50000
frontend http-in
bind 0.0.0.0:80
mode http
log global
option httplog
option httpclose
acl zs url_reg -i .html$
use_backend bg if zs
default_backend bg
backend bg
mode http
balance roundrobin
option httpchk GET /index.html
cookie SERVERID insert indirect nocache
server zs-A 10.0.0.13:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5
server zs-B 10.0.0.14:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5
保存退出
>systemctl restart haproxy #重启服务使配置生效
使用client服务端进行访问测试成功后开始配置keepalived
Haproxy-1服务器部署keepalived高可用:
>yum -y install keepalived #下载keepalived服务
>cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.back #备份主配置文件
>vim /etc/keepalived/keepalived.conf #编辑主配置文件
d+G删除所有内容后添加以下内容:
! Configuration File for keepalived
global_defs {
router_id directory1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
nopreempt
virtual_router_id 80
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.10/24
}
}
保存退出
>systemctl start keepalived #启动服务
>ip a查看指定VIP是否正常运转
Haproxy-2服务器部署keepalived高可用:
>yum -y install keepalived #下载keepalived服务
>cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.back #备份主配置文件
>vim /etc/keepalived/keepalived.conf #编辑主配置文件
d+G删除所有内容后添加以下内容:
! Configuration File for keepalived
global_defs {
router_id directory2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
nopreempt
virtual_router_id 80
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.10/24
}
}
保存退出
>systemctl start keepalived #启动服务
修改配置完成后使用client服务器进行访问测试即可
可以关闭主客户端查看master是否转移,模拟master端down掉
使用浏览器访问时地址栏输入:VIP/haproxy 即可进入web监控页面
用户密码是我们主配置文件中指定的
web界面中前端配置块以及后端配置块名称都是可以在主配置文件中自定义的。
