xinhu1300 发表于 2018-12-29 14:20:15

haproxy安装配置及haproxy+keepalived简单配置

  一、haproxy安装

操作系统:centos6.5   iptables关闭和selinux为disabled
  haproxy是一个提供高可用、负载均衡的开源的代理服务器,haproxy安装可以源码安装也可以yum安装,本文采用yum安装,yum安装非常便捷。挂载本地镜像,yum安装haproxy。

yum -y install haproxy
http://i2.运维网.com/images/blog/201809/13/891bd404ab1849213dc3530ab58681a1.png
安装成功,是不是非常方便。查询haproxy版本
http://i2.运维网.com/images/blog/201809/13/60dd7c0eb2bc3ff26ccb89120c0b7df6.png
二、haproxy配置
本文已经搭建好两台简单的web服务器,就是nginx的基础页面,但略有不同

web服务器1:192.168.174.128(hostname:www.jzz.nginx 默认页面:helloworld)
Web服务器2:192.168.174.131(hostname:www.jzztest.org 默认页面:nginx安装后默认页面)
  查看和配置haproxy配置文件

cat /etc/haproxy/haproxy.cfg | egrep -v '(#|^$)'
http://i2.运维网.com/images/blog/201809/13/2fd412fb65bfc60ae3ff2f78893415d9.png

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.174.130: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.174.128:80 cookie app1inst1 check inter 2000 rise 2 fall 5 -----后端web服务器ip及其他配置
listen www.jzztest.org *:8089             ----------------监听的实例名称、地址和端口,可配置多个
server web2 192.168.174.131:80 cookie app1inst2 check inter 2000 rise 2 fall 5 -----后端web服务器ip及其他配置
listen localhost.localdomain *:80    -------------------
balance roundrobin                  ------------------------负载均衡算法(有roundrobin、static-rr、leastconn、source、url、url_param、hdr、rdp_cookie)
frontendmain *: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
serverapp1 127.0.0.1:5001 check
serverapp2 127.0.0.1:5002 check
serverapp3 127.0.0.1:5003 check
serverapp4 127.0.0.1:5004 check
  启动haproxy服务

service haproxy start
  访问haproxy监控页面端口下的/status,为了安全起见,第一次登陆需要账号密码,账号密码就是配置文件里设置的
http://i2.运维网.com/images/blog/201809/13/fc59e3213efc5719e28383d95a3ed01a.png
进入监控页面,在这里可以看到我们的配置
http://i2.运维网.com/images/blog/201809/13/61e3c12be1af9488b7fd09f13ee99808.png
访问haproxy服务器ip的8088端口,可以发现跳转到了Web服务器1
http://i2.运维网.com/images/blog/201809/13/203dd294ce91003278aef756647033ce.png
访问haproxy服务器ip的8089端口,可以发现跳转到了Web服务器2
http://i2.运维网.com/images/blog/201809/13/d1f75d0483cb282740f1c1934bad5c6a.png
也可以设置域名访问到不同web服务器,但要在本地host绑定域名ip对应关系。
haproxy服务器配置成功
个人总结:haproxy安装非常方便,但haproxy更多的是要学会haproxy的调优及各种配置,本文只讲解了部分配置,因本人能力有限,还有许多配置未涉及到,但我后期会继续学习,后续再做补充。
补充:
三、haproxy+keepalived简单配置
前提:
1.两台haproxy服务器,配置基本一样,可参考上面haproxy的配置,后端web服务器一样
2.两台haproxy服务器器上都已安装完成keepalived,安装教程参考我的lvs+keepalived配置中的keepalived的安装。
环境:

haproxy服务器1:192.168.174.129
haproxy服务器2:192.168.174.130
haproxy代理web服务器1:192.168.174.128(hostname:www.jzz.nginx 默认页面:helloworld)
haproxy代理Web服务器2:192.168.174.131(hostname:www.jzztest.org 默认页面:nginx安装后默认页面)
keepalived主服务器:192.168.174.129
keepalived从服务器:192.168.174.130
VIP:192.168.174.222
操作系统:centos6.5   iptables关闭和selinux为disabled
  keepalived主服务器配置文件
http://i2.运维网.com/images/blog/201809/14/62bee1e9884e574ae7fbbb278ed0b0d3.png
keepalived从服务器配置文件
http://i2.运维网.com/images/blog/201809/14/03e43c84261ec096e1cd7882cce9dd73.png
keepalived主从配置文件依旧只有很小差别,在这里只有priority和router_id不同,在这里用到了一个检测haproxy存活性的脚本,主从配置文件都有且相同
http://i2.运维网.com/images/blog/201809/14/75a340a7cfc8bad22a3f94cd9c1eed13.png
启动两台服务器的haproxy服务和keepalived服务
http://i2.运维网.com/images/blog/201809/14/805ce826e2c84b42a3fa4029bb931f82.png
http://i2.运维网.com/images/blog/201809/14/a6650fd7874ce3098fdd7f813ccba617.png
查看keepalived主服务器ip绑定情况,可以看到虚拟IP已绑定
http://i2.运维网.com/images/blog/201809/14/4ea9f75cb054312d175f02a6f1c1609f.png
通过虚拟IP的不同端口去访问,成功出现我们想要的结果
http://i2.运维网.com/images/blog/201809/14/0b0f89dba1981d72471cf1f6f78246bc.png
http://i2.运维网.com/images/blog/201809/14/be6d24c2cc401636575393798adf2df3.png
停掉主keepalived服务
http://i2.运维网.com/images/blog/201809/14/7e7ecb0acfa6ac474776cb274a3140cc.png
到从keepalived服务器查看IP绑定情况,可以看到虚拟IP已经绑定到了从keepalived服务器
http://i2.运维网.com/images/blog/201809/14/7c99128ea8c5b1e25e8627e550180ce2.png
通过虚拟IP的端口访问不受影响
http://i2.运维网.com/images/blog/201809/14/388d0cd59f13e58641ed3bc2c5de45ea.png
实验成功。



页: [1]
查看完整版本: haproxy安装配置及haproxy+keepalived简单配置