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

[经验分享] Linux系统负载均衡软件之haproxy+apache

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-12-30 08:22:03 | 显示全部楼层 |阅读模式
hproxy提供高可用性、负载均衡和基于TCP和HTTP应用的反向代理,特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.haproxy运行在当前的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合到架构中, 同时可以保护你的web服务器不被暴露到网络上.
环境规划:
tong1:  192.168.1.247   haproxy
tong2:  192.168.1.248   web1
tong3:  192.168.1.249   web2

1.网络配置
tong1节点:
[iyunv@tong1 ~]# hostname
tong1
[iyunv@tong1 ~]# ifconfig | grep Mask
          inet addr:192.168.1.247  Bcast:192.168.1.255  Mask:255.255.255.0
          inet addr:127.0.0.1  Mask:255.0.0.0
[iyunv@tong1 ~]# vim /etc/hosts
192.168.1.247 tong1
192.168.1.248 tong2
192.168.1.249 tong3
[iyunv@tong1 ~]#

tong2节点和tong3节点一样配置

2.在tong1节点安装haproxy软件,开启haproxy日志功能
[iyunv@tong1 ~]# yum install haproxy -y
[iyunv@tong1 ~]# vim /etc/sysconfig/rsyslog           --添加-r参数记录haproxy日志
SYSLOGD_OPTIONS=" -r -c 2"
[iyunv@tong1 ~]# vim /etc/rsyslog.conf               --定义日志存放的路径
local2.*                       /var/log/haproxy.log
[iyunv@tong1 ~]# /etc/init.d/rsyslog  restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
[iyunv@tong1 ~]#
[iyunv@tong1 ~]# cd /etc/haproxy/
[iyunv@tong1 haproxy]# vim haproxy.cfg
global
    log         127.0.0.1 local2              --开启日志功能
    chroot      /var/lib/haproxy            --运行的路径
    pidfile     /var/run/haproxy.pid        --pid文件存放处
    maxconn     4000                   --最大连接数
    user        haproxy                  --所属运行的用户
    group       haproxy                 --所属运行的用户组
    daemon                                --后台运行服务

defaults
    mode                    http               --处理的模式(http是七层,tcp是四层)
    log                     global               --启用全局日志记录
    option                  httplog             --日志类别http格式
    option                  dontlognull        --不记录健康检查日志
    option http-server-close               
    option forwardfor       except 127.0.0.0/8     
    option                  redispatch        --serverId对应的服务器挂掉后强制定向到其它服务器   
    retries                 3                     --3次连接失败就定义服务器不可用
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s    --服务器连接超时
    timeout client          1m        --客户端连接超时
    timeout server          1m      --服务端连接超时
    timeout http-keep-alive 10s     --持久连接
    timeout check           10s        --心跳检查超时
    maxconn                 3000

listen admin_status           --自定义监听名,任意取
    bind 0.0.0.0:80            --绑定端口
    mode http                   --模式
    log 127.0.0.1 local3 err         --记录错误日志
    stats refresh 20s                 --每隔20s刷新
    stats hide-version                --隐藏haproxy版本信息
    stats uri /haproxy-stats        --在域名后面添加/haproxy-stats可以查看haproxy监控状态
    stats auth haproxy:system    --用户名和密码    stats hide-version
    stats admin if TRUE               --可以手动启动和停止服务

listen site_status                   --检查后端主机的健康
    bind 0.0.0.0:80
    mode http
    log 127.0.0.1 local3 err
    monitor-uri /site-stats          --使用url地址检查

frontend  main_status      --定义acl规则
    bind 0.0.0.0:80       --绑定到80端口
    mode http
    log global
    option httplog
    option forwardfor
    acl web1 hdr_reg(host) -i ^(www.itnihao.cn|ww1.itnihao.cn)$  
    --匹配www.itnihao.cn和[url=]ww1.itnihao.[/url][url=]cn[/url]两个域名就放到web1变量中
    acl web2   url_sub          -i  killall=       --请求中包含killall= 就放入到web2变量中
    acl web3   path_beg       -i  /static /images /javascript /stylesheets   

    use_backend  server_web3 if web3     --满足web3变量的就丢到server_web3里面的虚拟主机
    default_backend server_web4             --都不满足就丢到server_web4里面的虚拟主机

backend server_web3
    mode http
    balance     roundrobin
    option httpchk GET /test.html     --定义首页 址
    server  ton1 192.168.1.248:80 check inter 1500 rise 3 fall 3 weight 1  
--后端服务器,inter 1500是检查心跳频率,rise 3是3次正确可用,fall 3是3次失败不可用,weight 1是权重  
    server  ton2 192.168.1.249:80 check inter 1500 rise 3 fall 3 weight 1

backend server_web4
    mode http
    balance     roundrobin
    option httpchk GET /index.html
    server  ton3 192.168.1.248:80 check inter 1500 rise 3 fall 3 weight 1
    server  ton4 192.168.1.249:80 check inter 1500 rise 3 fall 3 weight 1
[iyunv@tong1 haproxy]# /etc/init.d/haproxy restart
Stopping haproxy:                                          [  OK  ]
Starting haproxy:                                          [  OK  ]
[iyunv@tong1 haproxy]#

3.在后端主机安装apache服务
tong2节点:
[iyunv@tong2 ~]# hostname
tong2
[iyunv@tong2 ~]# yum install httpd -y
[iyunv@tong2 ~]# vim /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1
[iyunv@tong2 ~]# echo 'node2' > /var/www/html/index.html
[iyunv@tong2 ~]# echo 'static node2' > /var/www/html/test.html
[iyunv@tong2 ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                        [  OK  ]
[iyunv@tong2 ~]#

tong3节点:
[iyunv@tong3 ~]# hostname
tong3
[iyunv@tong3 ~]# yum install httpd -y
[iyunv@tong3 ~]# vim /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1
[iyunv@tong3 ~]# echo 'node3' > /var/www/html/index.html
[iyunv@tong3 ~]# echo 'static node3' > /var/www/html/test.html
[iyunv@tong3 ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                        [  OK  ]
[iyunv@tong3 ~]#

4.检查haproxy的状态和监控
后台管理和监控url页面
wKioL1ShNDfCMKfuAAI7TuctY-U103.jpg
wKiom1ShM4WhLZz3AAaAPBj69xA900.jpg

后端主机的监控页面
(1)后端主机状态正常
wKioL1ShNFnAiJyyAAEHmLYqac4062.jpg
(2)后端主机不正常,出现宕机
wKioL1ShNJHjkM62AAFqjQ1AGGI830.jpg

正常访问节点
wKioL1ShNLayzfePAAEH8zHJrIg830.jpg
wKiom1ShNAOSikDYAADkTs4RvZA399.jpg


运维网声明 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-39645-1-1.html 上篇帖子: haproxy 防御ddos 下篇帖子: 强大的七层负载均衡方案haproxy.详解 Linux 软件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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