HAproxy配置实例

71 篇文章 4 订阅

------------------------------后端web1-------------------
服务器名称:web1.exmple.com
vim /etc/sysconfig/network-script/ifcfg-eno11111

TYPE=Ethernet
BOOTPROTO=static
DEVICE=eno11111
ONBOOT=yes
IPADDR=192.168.0.1
NETMASK=255.255.255.0
GATEWAY=192.168.0.254

systemctl restart network
yum -y install httpd
echo “192.1680.1” >/var/www/html/index.html
systemctl start httpd
firewall-cmd --set-default-zone=trusted
------------------------------后端web2-------------------
服务器名称:web2.exmple.com
vim /etc/sysconfig/network-script/ifcfg-eno22222

TYPE=Ethernet
BOOTPROTO=static
DEVICE=eno22222
ONBOOT=yes
IPADDR=192.168.0.2
NETMASK=255.255.255.0
GATEWAY=192.168.0.254

systemctl restart network
yum -y install httpd
echo “192.1680.2” >/var/www/html/index.html
systemctl start httpd
firewall-cmd --set-default-zone=trusted
------------------------------后端web3-------------------
服务器名称:web3.exmple.com
vim /etc/sysconfig/network-script/ifcfg-eno22222

TYPE=Ethernet
BOOTPROTO=static
DEVICE=eno333333
ONBOOT=yes
IPADDR=192.168.0.3
NETMASK=255.255.255.0
GATEWAY=192.168.0.254

systemctl restart network
yum -y install httpd
echo “192.1680.3” >/var/www/html/index.html
systemctl start httpd
firewall-cmd --set-default-zone=trusted

前端服务器设置:
服务器名称:haproxy.example.com
对外网卡:
TYPE=Ethernet
BOOTPROTO=static
DEVICE=eno16777736
ONBOOT=yes
IPADDR=10.10.10.10
PREFIX=255.0.0.0

对应网卡:
TYPE=Ethernet
BOOTPROTO=static
DEVICE=eno33554960
ONBOOT=yes
IPADDR=192.168.0.254
NETMASK=255.255.255.0

systecmctl restart network
firewall-cmd --set-default-zone=trusted

vim /etc/security/limits.conf 内核调优,插入两行

  • soft nofile 65535
  • hard nofile 65535

yum -y install haproxy
vim /etc/haproxy/haproxy.cfg

global
maxconn 4096 #最大连接数
log 127.0.0.1 local3 info # log语法:log <address_1>[max_level_1] # 全局的日志配置,使用log关键字,
指定使用127.0.0.1
上的syslog服务中的local0日志设备,记录日志等级为info的日志
chroot /var/haproxy #改变当前工作目录
uid 99
gid 99
daemon #以守护进程方式运行haproxy
nbproc 1
pidfile /var/run/haproxy.pid #当前进程id文件
ulimit-n 65535
stats socket /var/tmp/stats
defaults
mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
log global #应用全局的日志配置
maxconn 20480 #每个进程可用的最大连接数
option httplog # 启用日志记录HTTP请求,默认haproxy日志记录是不记录HTTP请求日志
option httpclose
option dontlognull # 启用该项,日志中将不会记录空连接。所谓空连接就是在上游的负载均衡器
或者监控系统为了探测该 服务是否存活可用时,需要定期的连接或者获取某
一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称为空连接;
官方文档中标注,如果该服务上游没有其他的负载均衡器的话,建议不要使用
该参数,因为互联网上的恶意扫描或其他动作就不会被记录下来
option forwardfor #如果服务器上的应用程序想记录发起请求的客户端的IP地址,需要在HAProxy
上 配置此选项, 这样 HAProxy会把客户端的IP信息发送给服务器,在HTTP
请求中添加"X-Forwarded-For"字段。 启用 X-Forwarded-For,在requests
头部插入客户端IP发送给后端的server,使后端server获取到客户端的真实IP。
option redispatch # 当使用了cookie时,haproxy将会将其请求的后端服务器的serverID插入到
cookie中,以保证会话的SESSION持久性;而此时,如果后端的服务器宕掉
了, 但是客户端的cookie是不会刷新的,如果设置此参数,将会将客户的请
求强制定向到另外一个后端server上,以保证服务的正常。
option abortonclose
starts refresh 30
retries 3 # 定义连接后端服务器的失败重连次数,连接失败次数超过此值后将会将对应后端
服务器标记为不可用
balance roundrobin #负载均衡算法
cookie SRV
timeout connect 5000s #连接超时
timeout client 5000m #客户端超时
timeout server 5000m #服务器端超时
timeout check 2000s #检测超时

listen admin_status
bind 0.0.0.0:6553
mode http
log 127.0.0.1  local3 info
stats enable
stats refresh 5s
stats realm Haproxy\ Statistics
stats uri   /admin?stats
stats auth admin1:AdMiN123
stats hide-version

frontend web_serivce
bind 0.0.0.0:80
mode http
log global
option httplog
option httpclose
option forwardfor
acl inside_src src 192.168.0.0/24
use_backend inside_servers if inside_src
default_backend external_servers
backend external_servers
mode http
balance roundrobin
option httpchk GET /index.html
server web01 192.168.0.1:80 ookie web1 check inter 2000 rise 2 fall 3 weight 1 #定义的多个后端
server web01 192.168.0.2:80 ookie web2 check inter 2000 rise 2 fall 3 weight 1 #定义的多个后端
backend inside_servers
mode http
balance roundrobin
option httpchk GET /index.html
server web01 192.168.0.3:80 ookie web3 check inter 1500 rise 3 fall 3 weight 1 #定义的多个后端

vim /etc/rsyslog.onf 插入以下三行
$ModLoad imudp
$UDPServerRun 514
local13.*

systemctl restat syslog
haproxy -f /etc/haproxy/haproxy.cfg
echo “/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg” >>/etc/rc.local 加入开机启动

外部机进行测试:
http://10.10.10.10:6553/admin?stats打开查看,刷新网页分别轮流出现web1各web2两台服务器的页面
如果客户机是局域网电脑就http://192.168.0.254 打开永远显示web3的页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

项目工程师余工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值