博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Centos6.0系统keepalived+Haproxy实现httpd简单负载均衡
阅读量:6432 次
发布时间:2019-06-23

本文共 3776 字,大约阅读时间需要 12 分钟。

本文Centos6.0

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

这里是两台Haproxy负责后台的控制;使用keepalived实现热备;下面就是正题了:

做的图太恶心了,将就下吧

角色;    主机名;          ip;

Haproxy1; node1             192.168.244.147

Haproxy2; node2             192.168.244.148

S1(web1); lv1               192.168.244.149

S2(web2); lv2               192.168.244.150

Haproxy的两台服务器提供的Vip:192.168.244.200

1、首先在lv1、lv2上部署httpd

1
[root@lv1 ~]# yum install -y httpd
1
[root@lv2 ~]# yum install -y httpd

将这两台的Index.html全部标记;

分别显示lv1、lv2

访问测试是否正常

2、分别在node1、node2上部署haproxy、keepalived

1
[root@node1 ~]# yum install -y keepalived haproxy
1
[root@node2 ~]# yum install -y keepalived haproxy

接下来配置haproxy

node1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
####################全局配置信息########################
global
    
log         
127.0
.
0.1 
local0        #[err warning info debug]
    
chroot      /
var
/lib/haproxy        #chroot运行的路径
    
pidfile     /
var
/run/haproxy.pid 
#haproxy的pid存放路径,启动进程的用户必须有权限访问此文件
    
maxconn     
4000                    
#默认最大连接数
    
user        haproxy                 #所属运行的用户
    
group       haproxy                 #所属运行的用户组
    
nbproc      
1                       
#进程数量(可以设置多个进程提高性能)
    
daemon                              #以后台形式运行haproxy
 
#####################默认的全局设置######################
 
##这些参数可以被利用配置到frontend,backend,listen组件##
defaults
        
mode                    http    #所处理的类别 (#
7
层 http;
4
层tcp  )
    
log                     global
    
option                  httplog     #日志类别http日志格式
    
option                  dontlognull #不记录健康检查的日志信息
    
option                  httpclose   #每次请求完毕后主动关闭http通道
    
option                  forwardfor
#如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip                   
    
option                  redispatch  #serverId对应的服务器挂掉后,强制定向到其他健康的服务器
    
retries                 
3           
#
3
次连接失败就认为服务不可用,也可以通过后面设置
    
stats               refresh 
20      
#统计页面刷新间隔
    
timeout connect         10s         #连接超时
    
timeout client          
5000        
#客户端超时
    
timeout server          
50000       
#服务器超时
    
maxconn                 
3000
    
balance     roundrobin              #默认的负载均衡的方式,轮询方式
    
stats uri /haproxy-stats            #监控页面的url
listen proxy *:
8080
        
option httpchk HEAD /index.html #心跳检测的文件
        
server server1  
192.168
.
244.149
:
80 
cookie server1 check inter 
1500 
rise 
3 
fall 
3
#服务器定义,cookie 
1
表示serverid为web1,check inter 
1500
是检测心跳频率rise 
3
3
次正确认为服务器可用
#fall 
3
3
次失败认为服务器不可用,weight代表权重
        
server server2  
192.168
.
244.150
:
80 
cookie server2 check inter 
1500 
rise 
3 
fall 
3

node2的haproxy配置是一样的,copy过去就可以了

3、在node1、node2上配置keepalived

node1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
! Configuration File 
for 
keepalived
global_defs {
   
notification_email {
     
sysadmin@firewall.loc
   
}
   
notification_email_from Alexandre.Cassen@firewall.loc
   
smtp_server 
192.168
.
200.1
   
smtp_connect_timeout 
30
   
router_id LVS_DEVEL
}
vrrp_script chk_http_port       {
        
script  
"/etc/keepalived/check_haproxy.sh"
        
interval        
2       
#脚本执行间隔
        
weight          -
20     
#脚本结果导致的优先级变更:
20
表示优先级+
20
;-
20
则表示优先级-
20
}
vrrp_instance VI_1 {
    
state MASTER
    
interface 
eth0
    
virtual_router_id 
51
    
priority 
100
    
advert_int 
1
    
authentication {
        
auth_type PASS
        
auth_pass 
1111
    
}
track_script    {
        
chk_http_port
        
}
    
virtual_ipaddress {
        
192.168
.
244.200
    
}
}

编辑脚本:

1
2
3
4
5
6
7
8
9
10
11
12
[root@node1 ~]# cat /etc/keepalived/check_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if 
[ $A -eq 
0 
];then
/etc/init.d/haproxy restart
echo 
"启动haproxy" 
&> /dev/
null
sleep 
3
if 
[ `ps -C haproxy --no-header |wc -l` -eq 
0 
];then
/etc/init.d/keepalived stop
echo 
"关闭keepalived" 
&> /dev/
null
fi
fi

node2和上面的一样,只是将priority 改成 90;state 改成 BACKUP;

4、分别启动keepalived和haproxy

1
2
3
4
[root@node1 ~]# /etc/init.d/haproxy start
正在启动 haproxy:
[root@node1 ~]# /etc/init.d/keepalived start
正在启动 keepalived:                                      [确定]

5、测试

node2:

1
[root@node2 ~]# tcpdump vrrp

说明现在的vip是node1是提供服务

当你在node1上stop掉keepalived后,你会发现

node2进行了顶替

现在进行测试web

 两个浏览器浏览发现,是不同的机器进行了服务

现在打开http://192.168.244.200:8080/haproxy-stats

当你在lv1上将httpd停掉后:

1
2
[root@lv1 ~]# /etc/init.d/httpd stop
停止 httpd:                                               [确定]

你会发现:

haproxy进行了自动剔除,当你恢复后,就自动顶上了;

简单应用就写到这里了~~欢迎大家拍砖,建议~~

本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1212859

转载地址:http://uiaga.baihongyu.com/

你可能感兴趣的文章
淘宝电影联合华谊的数据报告,还有哪些重要信息?
查看>>
编译安装PHP
查看>>
css position:static 的使用
查看>>
nfs永久挂载与临时挂载
查看>>
linux查看网络链接状况命令之-netstat
查看>>
我的友情链接
查看>>
UIView的layoutSubviews和drawRect方法何时调用
查看>>
mysql主从同步
查看>>
制作最简化的Linux系统
查看>>
我的友情链接
查看>>
使用List的remove方法需要的注意的问题
查看>>
Ansible的介绍、安装、配置及常用模块介绍
查看>>
编码列表
查看>>
eigrp 配置
查看>>
谈一谈 redis 集群
查看>>
concurrent包
查看>>
分区和格式化硬盘
查看>>
在Linux下调试Python代码的各种方法
查看>>
centos7塔建MQ服务器
查看>>
Peer authentication failed for user
查看>>