haproxy+keepalived
来源:互联网 发布:淘宝怎么发布定制商品 编辑:程序博客网 时间:2024/06/06 12:56
Haproxy+keepalived
HAProxy 相比 LVS 的使用要简单很多,功能方面也很丰富。当前,HAProxy 支持两种主要的代理模式:"tcp"也即 4 层(大多用于邮件服务器、内部协议通信服务器等),和 7 层(HTTP)。在 4 层模式 下,HAProxy 仅在客户端和服务器之间转发双向流量。7 层模式下,HAProxy 会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求(request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。HAProxy 主要在于它有以下优点:
一、 免费 开源, 稳定性 也是 非常好 ,这个 可通 过我做 的一 些小项 目可以 看出 来,单Haproxy 也跑得不错,稳定性可以与 LVS 相媲美;
二、HAProxy 可以作为 MySQL、邮件或其它的非 web 的负载均衡,我们常用于它作为MySQL(读)负载均衡;
三、自带强大的监控服务器状态的页面,实际环境中我们结合 Nagios 进行邮件或短信报警;
四、HAProxy 支持虚拟主机。在做反向代理服务器的负载均衡时,我们通常会使用 nginx 的均衡配置。其实,
haproxy 的负载均衡也是属于这一类的。反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会 自 动 将 该 服 务 器 摘 除 , 故 障 恢 复 后 再 自 动 将 该 服 务 器 加 入 。 新 的 1.3 引 入 了frontend,backend;frontend 根据任意 HTTP 请求头内容做规则匹配,然后把请求定向到相关的 backend。
keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层、第 4 层和第 5 层交换。Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自动将 web 服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的 web 服务器。keepalived 可提供 vrrp 以及 health-check 功能,可以只用它提供双机浮动的 vip(vrrp 虚拟路由功能),这样可以简单实现一个双机热备高可用功能。keepalived 是一个类似于layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层、第 4 层和第 5 层交换。Keepalived 的作用是检测 web 服务器的状态。
##解压
[root@server1 ~]# cd keepalived-1.3.5
##进入目录
[root@server1 keepalived-1.3.5]# ls
##显示目录中的内容
[root@server1 keepalived-1.3.5]# ./configure --prefix=/usr/local/keepalived
##配置
[root@server1 keepalived-1.3.5]# yum install libnl* -y
##安装依赖包
[root@server1 keepalived-1.3.5]# make && make install
##安装,配置
修改一下/usr/local/keepalived/etc/keepalived/keppalived.conf 这个配置文件就可以用了,以下是我的环境,172.25.80.1 和 172.25.80.4 是两个 VIP,可以在两台服务器之间飘动:
3 global_defs {
4 notification_email {
6}
7 notification_email_from Alexandre.Cassen@firewall.loc
8 smtp_server 127.0.0.1
9 smtp_connect_timeout 30
10 router_id LVS_DEVEL
11 vrrp_skip_check_adv_addr
12 vrrp_strict
13 vrrp_garp_interval 0
14 vrrp_gna_interval 0
15 }
16
17 vrrp_instance VI_1 {
18 state MASTER
19 interface eth0
20 virtual_router_id 51
21 priority 100
22 advert_int 1
23 authentication {
24 auth_type PASS
25 auth_pass 1111
26}
27 virtual_ipaddress {
28 172.25.80.100
29}
30 }
31
32 virtual_server 172.25.80.100 80 {
33 delay_loop 6
34 lb_algo rr
35 lb_kind DR
36 #persistence_timeout 50
37 protocol TCP
38
39 real_server 172.25.80.2 80 {
40 weight 1
41 TCP_CHECK {
42 connect_timeout 3
43 nb_get_retry 3
44 delay_before_retry 3
45}
46}
47
48
49 real_server 172.25.80.3 80{50 weight 1
51 TCP_CHECK {
52 connect_timeout 3
53 nb_get_retry 3
54 delay_before_retry 3
55 }
56 }
主机和备机的配置文件是一样的,通过启、停 keepalived 这个服务即可观察到 VIP 的飘动。
haproxy+keepalived 实现高可用负载均衡
我的环境:haproxy keepalived 主:172.25.80.1
haproxy keepalived 备:172.25.80.2
vip:172.25.80.100
web:172.25.80.2:80 172.25.80.2:8000
一:安装过程,在 192.168.1.192 上:
keepalived 的安装:tar zxf keepalived-1.3.5tar.gz ##解压
ln -s /usr/src/kernels/2.6.18-128.el5-i686/ /usr/src/linux ##做软连接
cd keepalived-1.3.5 ##进入目录
./configure
--prefix=/--with-kernel-dir=/usr/src/kernels/2.6.18-128.el5-i686/ ##配置
make && make install ##安装,编译
cd /usr/local/keepalived/etc/keepalived ##进入目录
mv keepalived.conf keepalived.conf.default ##重命名vim keepalived.conf ##编辑配置文件
! Configuration File for keepalived
--mandir=/usr/local/share/man/vrrp_script chk_http_port {
script "/etc/keepalived/check_haproxy.sh"
interval 2
weight 2
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER ##172.25.80.4 上改为 BACKUP
interface eth0
virtual_router_id 51
priority 100 ##172.25.80.4 上改为 50
advert_int 1authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
172.25.80.100
}
}
}
vim /etc/keepalived/check_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
#chmod 755 /etc/keepalived/check_haproxy.sh
haproxy 的安装(主备都一样):
tar zxf haproxy-1.4.23.tar.gz ##解压cd haproxy-1.4.23 ##进入目录
make TARGET=linux26 PREFIX=/usr/local/haproxy install ##安装
cd /usr/local/haproxy/ ##进入目录
mkdir conf logs ##创建目录
cd conf ##进入目录
vim haproxy.cfg ##编辑配置文件
global
log 127.0.0.1 local3 info
maxconn 4096
user nobody
group nobody
daemon
nbproc 1pidfile /usr/local/haproxy/logs/haproxy.pid
defaults
maxconn 2000
contimeout 5000
clitimeout 30000
srvtimeout 30000
mode http
log global
log 127.0.0.1 local3 info
stats uri /admin?stats
option forwardfor
frontend http_server
bind :80
log global
default_backend info_cache
acl test hdr_dom(host) -i test.domain.com
use_backend cache_test if test
backend info_cache
#balance roundrobin
balance source
option httpchk HEAD /haproxy.txt HTTP/1.1\r\nHost:172.25.80.2
server inst2 172.25.80.2:80 check inter 5000 fall 3
backend cache_test
balance roundrobin
#balance source
option httpchk HEAD /haproxy.txt HTTP/1.1\r\nHost:test.domain.com
server inst1 192.168.1.187:8000 check inter 5000 fall 3
一.安装过程,在 172.25.80.1 上:
keepalived 的安装:#tar -zxf keepalived-1.1.17.tar.gz
#ln -s /usr/src/kernels/2.6.18-128.el5-i686/ /usr/src/linux
#cd keepalived-1.1.17
#./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.18-128.el5-i686/
#make && make install
#cd /etc/keepalived/
#mv keepalived.conf keepalived.conf.default
#vi keepalived.conf
! Configuration File for keepalived
--mandir=/usr/local/share/man/vrrp_script chk_http_port {
script "/etc/keepalived/check_haproxy.sh"
interval 2
weight 2
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #192.168.1.193 上改为 BACKUP
interface eth0
virtual_router_id 51
priority 150 #192.168.1.193 上改为 120
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port
}
virtual_ipaddress {
192.168.1.200
}
}
}
#vi /etc/keepalived/check_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
#chmod 755 /etc/keepalived/check_haproxy.sh
/etc/init.d/keepalived start (这条命令会自动把 haproxy 启动)
三:测试:
1.再两台机器上分别执行 ip add主: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:98:cd:c0 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.192/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.200/32 scope global eth0
inet6 fe80::20c:29ff:fe98:cdc0/64 scope link
valid_lft forever preferred_lft forever
备: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:a6:0c:7e brd ff:ff:ff:ff:ff:ffinet 192.168.1.193/24 brd 255.255.255.254 scope global eth0
inet6 fe80::20c:29ff:fea6:c7e/64 scope link
valid_lft forever preferred_lft forever
2.停掉主上的 haproxy,3 秒后 keepalived 会自动将其再次启动
3.停掉主的 keepalived,备机马上接管服务
备: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000link/ether 00:0c:29:a6:0c:7e brd ff:ff:ff:ff:ff:ff
inet 192.168.1.193/24 brd 255.255.255.254 scope global eth0
inet 192.168.1.200/32 scope global eth0
inet6 fe80::20c:29ff:fea6:c7e/64 scope link
valid_lft forever preferred_lft forever
4.更改 hosts
192.168.1.200 test.com192.168.1.200 test.domain.com
通过 firefox 测试,可以发现
westos.org 的请求发向了 172.25.80.2:80www.westos.org 的请求发向了 172.25.80.2:8000##172.25.80.4 上改为 BACKUPpriority 100
- haproxy+keepalived
- HAProxy+Keepalived
- haproxy+keepalived
- HAproxy+keepalived
- haproxy+keepalived
- haproxy+keepalived
- Nginx/HAProxy/keepalived 方案
- Haproxy+KeepAlived 负载均衡
- Haproxy+KeepAlived 负载均衡
- Haproxy+keepalived安装配置
- Keepalived+HAproxy负载均衡
- Haproxy+Keepalived主主高可用
- Haproxy+KeepAlived 负载均衡
- impala keepalived+haproxy
- haproxy+keepalived 主备
- haproxy+keepalived的集成
- HA之Haproxy+KeepAlived
- haproxy+keepalived配置
- CS231n——RNN
- HDU 4109 Instrction Arrangement(拓扑排序+bfs)
- Wormholes POJ
- mod与%的区别
- 设计模式之禅笔记-中介者模式
- haproxy+keepalived
- 6.matplotlib基础使用
- 1073 约瑟夫环
- 使用递归打印出计算机某个文件夹下的所有文件夹和子文件
- HDU_【2017 Multi-University Training Contest 2】——1003 Maximum Sequence
- Codeforces Gym
- 1-10 日志
- POJ-1751 Highways (最小生成树)
- Fox And Two Dots(DFS)