案例:配置HAProxy负载平衡集群

Posted 吴柯的运维笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了案例:配置HAProxy负载平衡集群相关的知识,希望对你有一定的参考价值。

“每个理性的IT人士都置顶了吴柯的运维笔记”

准备三台Linux服务器,两台做Web服务器,一台安装HAProxy,实现如下功能:

  • 客户端访问HAProxy,HAProxy分发请求到后端Real Server

  • 要求HAProxy可以根据Cookie为客户端分配固定后端服务器

  • 开启HAProxy监控页面,及时查看调度器状态

  • 设置HAProxy为开机启动

使用3台虚拟机,1台作为HAProxy调度器、2台作为Real Server、物理机作为客户端。



一:配置后端Web服务器

1)配置两台Web服务器网络参数

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.1
NETMASK=255.255.255.0
GATEWAY=192.168.0.254
DNS1=202.106.0.10


# service network restart


# iptables -F


# service iptables save


# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.2
NETMASK=255.255.255.0
GATEWAY=192.168.0.254
DNS1=202.106.0.10


# systemctl restart NetworkManager


2)设置后端Web服务

# yum -y install httpd


# systemctl start httpd


# echo “192.168.0.1” > /var/www/html/index.html


# yum -y install httpd


# systemctl start httpd


# echo “192.168.0.2” > /var/www/html/index.html



二:部署HAProxy服务器

1)配置网络,安装软件

# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=202.114.106.20


# vim /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.254
NETMASK=255.255.255.0

DNS1=202.106.0.20


# systemctl restart NetworkManager


# sed -i '/ip_forward/s/0/1/'  sysctl.conf  //开启路由转发


# sysctl -p


# yum -y install haproxy


2)修改配置文件

# vim /etc/haproxy/haproxy.cfgglobal

  1. log 127.0.0.1 local2   ###[err warning info debug]

  2. chroot /usr/local/haproxy

  3. pidfile /var/run/haproxy.pid ###haproxy的pid存放路径

  4. maxconn 4000     ###最大连接数,默认4000

  5. user haproxy

  6. group haproxy

  7. daemon       ###创建1个进程进入deamon模式运行

  8. defaults

  9. mode http    ###默认的模式mode { tcp|http|health } log global   ###采用全局定义的日志

  10. option dontlognull  ###不记录健康检查的日志信息

  11. option httpclose  ###每次请求完毕后主动关闭http通道

  12. option httplog   ###日志类别http日志格式

  13. option forwardfor  ###后端服务器可以从Http Header中获得客户端ip

  14. option redispatch  ###serverid服务器挂掉后强制定向到其他健康服务器

  15. timeout connect 10000 #如果backend没有指定,默认为10s

  16. timeout client 300000 ###客户端连接超时

  17. timeout server 300000 ###服务器连接超时

  18. maxconn  60000  ###最大连接数

  19. retries  3   ###3次连接失败就认为服务不可用,也可以通过后面设置

  20. listen stats

  21. bind 0.0.0.0:1080   #监听端口

  22. stats refresh 30s   #统计页面自动刷新时间

  23. stats uri /stats   #统计页面url

  24. stats realm Haproxy Manager #统计页面密码框上提示文本

  25. stats auth admin:admin  #统计页面用户名和密码设置

  26. #stats hide-version   #隐藏统计页面上HAProxy的版本信息

  27. listen  websrv-rewrite 0.0.0.0:80

  28. cookie  SERVERID rewrite

  29. balance roundrobin

  30. server  web1 192.168.20.101:80 cookie \

  31. app1inst1 check inter 2000 rise 2 fall 5

  32. server  web2 192.168.20.102:80 cookie \

  33. app1inst2 check inter 2000 rise 2 fall 5


3)启动服务器并设置开机启动

# systemctl start haproxy


# systemctl enable haproxy



三:客户端验证


推荐阅读:








吴柯的运维笔记

BY wukeyy18s



以上是关于案例:配置HAProxy负载平衡集群的主要内容,如果未能解决你的问题,请参考以下文章

HAProxy负载平衡集群

Cluster基础:配置HAProxy负载平衡集群Keepalived高可用服务器Keepalived+LVS服务器

弹性负载平衡

Haproxy通过acl';s实现不同后端的负载平衡web集群

HAProxy UDP 负载平衡

我是不是需要在 DB 上进行会话集群以在 AWS/EC2 上使用 HAProxy 对 Jetty WebSockets 服务器进行负载平衡?