haproxy实现高可用站点架构
2014-10-19 15:37
274 查看
在负载均衡的调度器中,有个lvs,nginx,haproxy,lvs的搭建相比后两者较困难些,而nginx的主要用处是轻量级的web服务器,haproxy是一种很好的高可用软件,它可以基于4层和7层做高可用,分别表现在TCP上和http上,下面我们就通过一幅图来了解haproxy的工作原理。
haproxy的工作模式:调度时发生的协议层次
http:仅用于调度http协议的服务器,7层
会对应用层数据做深入分析,因此支持7层过滤、处理、转换等机制
tcp:非http协议的服务器调度,包含https,4层
通过在客户端和后端的backend server之间建立一个全双工的连接
后端提供两个web服务器的节点,并且提供主页以示区分,两个节点的网段调为自定义的vnet2
node1:
更改haproxy的配置文件,并且备份一份原有配置
在我们的浏览器中进行验证
刷新一次后,根据轮询效果,会返回后端的node1和node2的网站主页
使用基于source方法的haproxy调度
配置文件更改,只改了调度算法
无论刷新多少次,出来的网页都是node2节点上提供的web2的主网页
使用基于cookie算法的haproxy
更改配置:
实现cookie绑定的效果
将我们的调度算法改为roundrobin轮询,更改配置文件为
node1上:
无论我们怎么刷新网页,返回的都是node1上提供的网页,因为这里的cookie实现了绑定的效果
启动haproxy的状态页:stats
修改haproxy的配置文件,使之支持stats状态页显示
图示,node1的web服务在线,node2在线,但是web服务没有启动
active:后端服务器中的active server
backup:后端服务器中的backup server
将backup主机加入健康监测,更改下面选项
对stats网页做网页访问控制
启用stats的管理接口
也可以将stats单独放置在一个段落中,不在backend中了,虽然,这样安全了,但是,看不到后端服务器的状态了
haproxy的工作模式:调度时发生的协议层次
http:仅用于调度http协议的服务器,7层
会对应用层数据做深入分析,因此支持7层过滤、处理、转换等机制
tcp:非http协议的服务器调度,包含https,4层
通过在客户端和后端的backend server之间建立一个全双工的连接
后端提供两个web服务器的节点,并且提供主页以示区分,两个节点的网段调为自定义的vnet2
node1:
<h1>web1 test page</h1>node2:
<h1>this is web2</h1>然后,给这两台主机规划IP地址
node1:211.70.160.15 node2:211.70.160.16 [root@node1 ~]ifconfig eth0 211.70.160.15/24 up [root@node2 ~]ifconfig eth0 211.70.160.16/24 up此时,我们就可以将两个节点上的web服务启动了
[root@node1 ~]service httpd start安装haproxy软件
[root@localhost ~]# yum install -y haproxy将haproxy的日志定向到rsyslog中,在rsyslog的配置文件中更改如下
# Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514 local2.* /var/log/haproxy.log #将haproxy的日志发往local2设施上然后,重启我们的rsyslog服务
[root@localhost ~]# service rsyslog restart查看514端口是否在监听
更改haproxy的配置文件,并且备份一份原有配置
[root@localhost haproxy]# cp haproxy.cfg haproxy.cfg.bak删除defaults段落后的所有内容,添加如下
frontend main *:80 default_backend webs backend webs balance roundrobin server s1 211.70.160.15:80 check server s2 211.70.160.16:80 check 或者修改为listen形式 listen main *:80 balance roundrobin server s1 211.70.160.15:80 check server s2 211.70.160.16:80 check启动haproxy服务
[root@localhost haproxy]# service haproxy start此时,haproxy的主机上已经监听了80端口,可以使用ss查看
在我们的浏览器中进行验证
刷新一次后,根据轮询效果,会返回后端的node1和node2的网站主页
使用基于source方法的haproxy调度
配置文件更改,只改了调度算法
frontend main *:80 default_backend webs backend webs balance source server s1 211.70.160.15:80 check server s2 211.70.160.16:80 check重启服务
[root@localhost haproxy]# service haproxy restart再回到浏览器中查看
无论刷新多少次,出来的网页都是node2节点上提供的web2的主网页
使用基于cookie算法的haproxy
更改配置:
frontend main bind :80 default_backend webs backend webs balance source cookie web insert nocache #inset插入到http首部,nocache是中间的缓存服务器不允许缓存数据 server s1 211.70.160.15 server s2 211.70.160.16重启haproxy服务
[root@localhost haproxy]# service haproxy restart然后在浏览器中访问我们的地址,并且查看http首部信息
实现cookie绑定的效果
将我们的调度算法改为roundrobin轮询,更改配置文件为
frontend main bind :80 default_backend webs backend webs balance roundrobin cookie web insert nocache server s1 211.70.160.15 cookie s1 #指定server的名称,实现cookie绑定 server s2 211.70.160.16 cookie s2 [root@localhost haproxy]# service haproxy reload再为后端的两个web节点提供网页
node1上:
[root@node1~ ]cat /var/www/html/test.html <h1>hello node1 test</h1>node2上:
[root@node2~ ]cat /var/www/html/test.html <h1>hello node2 test</h1>访问我们的资源
无论我们怎么刷新网页,返回的都是node1上提供的网页,因为这里的cookie实现了绑定的效果
启动haproxy的状态页:stats
修改haproxy的配置文件,使之支持stats状态页显示
frontend main maxconn 4000 bind :80 default_backend webs backend webs balance roundrobin server s1 211.70.160.15 check port 80 server s2 211.70.160.16 check port 80 server b1 127.0.0.1:8080 backup stats enable #开启stats此时,将后端的node1的web服务上线
[root@node1 ~]service httpd start重新加载配置文件,在浏览器中访问状态也地址
[root@localhost haproxy]# service haproxy reload
图示,node1的web服务在线,node2在线,但是web服务没有启动
active:后端服务器中的active server
backup:后端服务器中的backup server
将backup主机加入健康监测,更改下面选项
server b1 127.0.0.1:8080 backup check port 8080重新加载配置文件
[root@localhost haproxy]# service haproxy reload
对stats网页做网页访问控制
stats hide-version #隐藏版本号 stats scope . #当前的作用范围 stats uri /haproxyadmin?stats #自定义stats页面的uri stats realm haproxy\ statistics #用于下面选项,提示用户输入用户名密码的显示 stats auth statsadmin:password #基于用户名和密码的认证修改配置文件,使其具有认证功能,在backend中添加
stats enable stats hide-version stats uri /hap?stats stats scope . stats realm INPUT\ your name & password stats auth admin:admin重新加载配置,在浏览器中验证
[root@localhost haproxy]# service haproxy reload
启用stats的管理接口
stats admin if TRUE #添加此项重新加载配置
[root@localhost haproxy]# service haproxy reload再次访问
也可以将stats单独放置在一个段落中,不在backend中了,虽然,这样安全了,但是,看不到后端服务器的状态了
相关文章推荐
- 实现基于Haproxy_NAT+Keepalived负载均衡高可用架构
- haproxy+keepalived来实现mariadb galera cluster的高可用架构
- 基于Haproxy+Keepalived负载均衡实现的高可用架构
- 实现基于haproxy和keepalived的负载均衡和高可用架构
- lvs-nat集群架构的高可用实现WordPress博客站点
- 使用haproxy+keepalived来实现mariadb galera cluster的高可用架构 推荐
- 使用HAproxy,keepalived实现简单LAMP架构的负载均衡与高可用
- 基于amoeba+keepalived+mmm实现mysql读写分离高可用架构 推荐
- Haproxy+keepalived实现高可用负载均衡
- 利用windows 2003 实现***服务器的组建与架构(一) 移动用户到站点之间的***
- haproxy+keepalived实现高可用负载均衡
- HA+LB+NAS:三层架构实现群集高可用和高性能
- HA+LB+NAS:三层架构实现群集高可用和高性能
- Web 负载均衡解决方案——HAproxy+keepalived实现高可用负载均衡 推荐
- 企业级高可用Web架构之HAProxy+Keepalived
- Haproxy+keepalived实现高可用负载均衡
- Haproxy+keepalived实现sphinx高可用负载均衡
- Haproxy+Keepalived实现双机高可用
- 通过LVS实现WEB站点的mysql高可用
- 利用windows 2003 实现***服务器的组建与架构(二) 站点到站点之间的***