设为首页 收藏本站
查看: 2590|回复: 0

[经验分享] 使用Haproxy搭建Web群集

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-1-3 13:25:52 | 显示全部楼层 |阅读模式
Haproxy是目前比较流行的一种集群调度工具,与同类集群调度工具LVS和Nginx相比,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持集群功能,但是对集群节点健康检查功能不强,性能没有Haproxy好。
LVS、Haproxy、Nginx最常用的调度算法有三种,分别是RR(Round Robin)轮询、LC(Least Connection)最小连接数、SH(Source Hashing)基于来源访问。

案例环境
wKiom1hqAZbT_heAAACGeaO_yT4040.jpg
单台Haproxy服务器就可以实现多台Web服务器之间的热备和负载均衡,这里使用Keepalived保证了Haproxy本身的高可用。

一、Haproxy服务器的安装与配置
1.编译安装Haproxy
wKioL1hqAdjiQonmAAACj4xTRh0946.jpg
安装两个支持包

wKiom1hqAdnRdAqnAAAHoyJD5Rw008.jpg
将haproxy编译到内核中

wKioL1hqAdmCvpIDAAACajfyeA0553.jpg
安装

2.Haproxy服务器配置
wKioL1hqAdngtYYXAAAClMB61Fo853.jpg
创建配置文件目录

wKiom1hqAdmzaMDGAAADLew5bk0684.jpg
复制源码包中的配置文件作为模版进行修改

wKiom1hqAdrR9ljdAAACyym84kI381.jpg
wKioL1hqAdri5C0jAAAMAxStPCU006.jpg
wKioL1hqAdqTFIZlAAAIyD0P-3c519.jpg
wKiom1hqAduSkf73AAAIJhG30Xg421.jpg
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.创建自启动脚本
wKioL1hqAdvR0C4WAAADOJk83-4465.jpg
复制源码包中的服务脚本作为haproxy程序的控制脚本

wKiom1hqAx6gb6gfAAADRGFSeJ8521.jpg
wKioL1hqAx7xzI8jAAAFU2pE0UI290.jpg
优化并添加系统服务

wKiom1hqAx6AIIX3AAADq-c-seI871.jpg
启动haproxy服务

wKiom1hqAx_ysKZnAAADC-23VZE032.jpg
开启iptables防火墙80端口的例外

wKioL1hqAx_iLinfAACaRZ0PuRY789.jpg
nginx服务器的搭建,这里不再演示,为了测试负载均衡,要在两台web服务器上创建不同的内容的网页。
在客户机上访问haproxy 01,两次看到的内容不同,说明负载均衡已经实现。
如果要测试高可用,只需要停用一台nginx服务器,在客户机上再次访问haproxy 01,这时候只能看到一种内容的网页,并且刷行网页不会出现报错,说明高可用也已经实现。

二、使用keepalived实现Haproxy本身的高可用
1.编译安装keepalived
wKiom1hqAx_T2M7oAAAC3gyb4Xg530.jpg
安装keepalived之前需要安装三个支持包

wKioL1hqAx-if44BAAALaPf2vfI663.jpg
编译安装keepalived,使用指定的内核位置对keepalived进行配置,并将安装路径指定为根目录,这样就无需额外创建链接文件了。

wKiom1hqAyDxkHCgAAADv1PTeNY966.jpg
添加系统服务

2.主服务器的配置
wKioL1hqAyCgkALsAAACzFxRhFU127.jpg
wKiom1hqAyCyf8hfAAAMQ-ceFvM742.jpg
wKioL1hqA8Szl8bSAAAKX0_3wDo986.jpg
global_defs{…}                     //指定全局参数
router_id                          //指定本服务器名称
vrrp_instance 实例名称 { ... }                   //指定VRRP热备实例
state                              //指定热备状态
virtual_router_id                 //虚拟路由器的ID号,每个热备组保持一致
priority                          //优先级,数值越大优先级越高
advert_int                        //通告间隔秒数(心跳频率)
authentication {…}                                    //认证信息,每个热备组保持一致
auth_type                         //认证类型
auth_pass                         //密码子串
virtual_ipaddress{…}                               //指定漂移地址,可以有多个

wKioL1hqA8TCinfbAAAE4y3uPHs731.jpg
重启keepalived服务

wKiom1hqA8WxTeTwAAAPWasHK-g665.jpg
在haproxy 01上部署完keepalived服务后,查看网卡的信息,发现eth0接口自动添加了VIP地址。

3.备用服务器的配置
在haproxy 02上安装keepalived的过程一样,只是配置文件中主要有三处不同:路由器名称、热备状态、优先级。
wKioL1hqA8bAjGaaAAAET0o7gWc308.jpg
可以在haproxy 02上直接复制第一台的配置文件

wKiom1hqA8bxV2GpAAANdViv1Xs360.jpg
wKioL1hqA8ax88fvAAAQF0lX0QY313.jpg
修改这三处即可

wKiom1hqA8fjD6ylAAAElqasDk4994.jpg
重启keepalived服务

wKiom1hqA8fjK1gXAAAO1kxgj7E620.jpg
查看网络接口信息,发现eth0接口没有添加VIP地址。

wKioL1hqA8nwZ3z6AACdXkdLVVw298.jpg
在客户机访问VIP的地址,打开两次后发现同样可以实现负载均衡的效果。
如果,要测试haproxy本身的高可用,只要停用haproxy 01,然后在客户端再次访问VIP地址即可。

三、Haproxy日志
Haproxy的日志默认是输出到系统的syslog中(即/var/log/message),查看不方便。所以,可以将其单独定义出来。

1.修改Haproxy配置文件关于日志配置的选项
wKioL1hqBM-Clo4fAAACTf70RDo494.jpg
wKiom1hqBNDhSBVSAAACxSModdM819.jpg
这里主要是将Haproxy的info及notice日志分别记录到不同的日志文件中。
重启haproxy服务

2.修改rsyslog配置
wKioL1hqBNCw3RkMAAACh5ANPEM119.jpg
为了便于管理,将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。

wKiom1hqBNDSwp5pAAACjO5Au-M563.jpg
wKiom1hqBNHxYDlxAAAKE5e4cRw377.jpg
在haproxy.conf中加入以上内容
“& ~”表示当日志写入到日志文件后,rsyslog停止处理这个信息。

wKioL1hqBNGxkEz1AAAFcFo9HdU760.jpg
重启rsyslog服务

wKiom1hqBNGyLpgiAAAJpBf0eVo252.jpg
即时查看日志信息,在客户端访问haproxy 01服务器后,便会弹出新的日志信息。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-323334-1-1.html 上篇帖子: RedHat 7配置HAProxy实现Web负载均衡 下篇帖子: haproxy ACL及动静分离
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表