lamp的架构之haproxy
来源:互联网 发布:ubuntu用u盘安装 编辑:程序博客网 时间:2024/05/22 14:42
haproxy
目前较为成熟的网站架构应该是Web前端采用Nginx/Haproxy+Keepalived 作为负载均衡器,后端采用的MySQL数据库,一主多从并且读写分离,读操作采用LVS+keepalive架构。(当然也可以前端采用LVS的full-nat)
下面稍微介绍一下其他两个负载均衡的优缺点。
Nginx:
优点 1.在第七层做负载均衡,可以根据域名,url等等做流量分流。强大的正则匹配比Haproxy更强大。(这也是广泛流行的原因之一)
2.Nginx对网络的依赖小,能ping通就证明负载均衡可用。而LVS不仅需要VIP还需要根据模型需要(如DR)配置一下后台真实主机的ip。麻烦要死。
3.配置简单,error.log的输出齐全,可以在上面查找各种错误。以备解决。
4.高负载,epoll模型的使用,可以支持很大的并发量。
5.Nginx的反向代理,这个功能很强大。
6.nginx可以通过端口检测服务器内部的故障。
缺点 1.支持的应用场景似乎也就web和mail了。
2.对后端的服务器健康检查,只支持通过端口来检测。不支持URL检测。不支持session保存,但可以使用ip_hash解决
LVS:
Haproxy:
[root@proxy ~]# yum -y install haproxy
配置haproxy。
[root@proxy ~]# rpm -ql haproxy/etc/haproxy/etc/haproxy/haproxy.cfg/etc/logrotate.d/haproxy/etc/rc.d/init.d/haproxy其中/etc/haproxy.cfg 是主配置文件
首先修改主配置文件,实现最基本的负载均衡。
global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats#---------------------------------------------------------------------# common defaults that all the 'listen' and 'backend' sections will# use if not designated in their block#---------------------------------------------------------------------defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 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#---------------------------------------------------------------------# main frontend which proxys to the backends#---------------------------------------------------------------------frontend main *:80 default_backend app#---------------------------------------------------------------------# round robin balancing between the various backends#---------------------------------------------------------------------backend app balance roundrobin server app1 192.168.217.14:80 check server app2 192.168.217.15:80 check
好了,启动haproxy。
[root@proxy haproxy]# service haproxy startStarting haproxy: [ OK ]
[root@localhost Desktop]# curl 192.168.217.16node1.example.com[root@localhost Desktop]# curl 192.168.217.16node2.example.com[root@localhost Desktop]# curl 192.168.217.16node1.example.com[root@localhost Desktop]# curl 192.168.217.16node2.example.com[root@localhost Desktop]# curl 192.168.217.16node1.example.com
但是有一个问题就是,日志好像并没有啊。
修改日志配置文件/etc/rsyslog.conf
取消注释(开启udp端口)
将日志写到 /var/log/haproxy.log
重启日志服务。
[root@proxy log]# service rsyslog restartShutting down system logger: [ OK ]Starting system logger: [ OK ]
[root@proxy log]# ls /var/log/haproxy.log -l-rw-------. 1 root root 486 Mar 18 11:51 /var/log/haproxy.log[root@proxy log]#
添加如下选项,可以在浏览器打开一个监控页面。
listen status stats enable bind *:8080 mode http option httplog log global maxconn 10 stats refresh 3s stats uri /admin stats auth admin:admin stats hide-version stats admin if TRUE
实现haproxy + keepalived 。
首先安装keepalived。两个调度器都安装keepalive
先安装工具
解压并且编译
将配置文件链接到正确的位置
配置主配置文件/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost#接受报警的邮箱
}
notification_email_from keepalived@dirmaster.example.com#邮件的发送地址
smtp_server 127.0.0.1
smtp_connect_timeout 30#连接smtp的超时时间
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_http_port {
script "/etc/keepalived/check_haproxy.sh"
}
vrrp_instance VI_1 {
state MASTER#备机需要改为BACKUP
interface eth0#HA的检测网络接口
virtual_router_id 51#主和备机的id必须一样,且在0~255
priority 100#主机的优先级,备机应该此值小点
advert_int 1#主备之间的通告时间间隔秒数
authentication {
auth_type PASS#设置验证类型
auth_pass 1111#设置验证密码
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.2.222#VIP
}
}
#vim /etc/keepalived/check_haproxy.sh#!/bin/bashif [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then /etc/init.d/haproxy startfisleep 2if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then /etc/init.d/keepalived stopfi
改完配置文件就可以直接启动keepalived了,但有时还可能报错,
[root@dirmaster ~]# service keepalived start
/etc/init.d/keepalived: Permission denied
chmod a+x /etc/init.d/keepalived 就好了。
现象:(拥有VIP)
proxy主机关闭。
[root@proxy keepalived]# service keepalived stopStopping keepalived: [ OK ]You have new mail in /var/spool/mail/root[root@proxy keepalived]#
还是可以正常调度。(因为dirslave启动了)
- lamp的架构之haproxy
- LAMP架构之eclipse
- LAMP架构之Tomcat
- Craigslist的LAMP架构
- LAMP架构的网站
- LAMP架构之myeclipse安装
- Wikipedia的LAMP架构分析
- Haproxy+keepalivd+varnish+LAMP实验
- lamp架构
- LAMP架构
- LAMP架构
- LAMP架构
- 构建开源负载均衡架构平台之haproxy
- 企业级高可用Web架构之HAProxy+Keepalived
- 从LAMP到框架式开发的SOA:土巴兔8年架构之道
- Netlog的数据库及LAMP架构
- 用LAMP架构搭建自己的博客
- lnmp和lamp架构的区别
- string类常见函数汇总(二)
- BlockingQueue浅析
- 程序的指令级表示(汇编)
- C++学习记录12--#include<iomanip>成员函数
- dijkstra+heap
- lamp的架构之haproxy
- vue.js 微信浏览器不支持lambda表达式
- vb.net 教程 1-8 日期时间类型1
- 敏捷开发之Scrum扫盲篇
- 数据结构-链表篇
- 计算机基础知识——操作系统(二):进程
- 子沐课堂——学员管理系统(前期准备+Model建立)
- linux重新编译内核
- CSS_5th_定位position