haproxy+keepalived实现高可用负载均衡
来源:互联网 发布:网络推广微商seocnm 编辑:程序博客网 时间:2024/06/05 05:57
工作原理:
Keepalived检测HAproxy主备服务器,利用Keepalived的VIP漂移技术,若HAprox主备都工作正常,则VIP与优先级别高的服务器(主服务器)绑定,当主服务器当掉时,则与备服务器绑定,而VIP则是暴露给外部访问的ip;HAproxy利用Keepalived生产的VIP对web服务器集群进行读负载,当某台we服务器当掉,则将其移除,恢复后再将其加入集群。
说明:
haproxy+keepalived 主:172.16.0.111
haproxy+keepalived 备:172.16.0.112
web-1:172.16.0.113
web-2:172.16.0.114
VIP:172.16.0.110
haproxy-1.5.19.tar.gz
keepalived-1.2.23
1、web服务器上
[root@web-1 ~]# vim /var/www/html/index.php<h1>web-1 172.16.0.113</h1><?php phpinfo(); ?>
2、安装haproxy,主备配置一样
[root@haproxy-master ~]# tar -zxvf haproxy-1.5.19.tar.gz [root@haproxy-master ~]# cd haproxy-1.5.19[root@haproxy-master haproxy-1.5.19]# make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy[root@haproxy-master haproxy-1.5.19]# make install PREFIX=/usr/local/haproxy
编辑配置文件(自己创建,examples目录下有模板)
[root@haproxy-master haproxy-1.5.19]# mkdir -p /usr/local/haproxy/etc[root@haproxy-master haproxy-1.5.19]# cp ~/haproxy-1.5.19/examples/haproxy.cfg /usr/local/haproxy/etc/[root@haproxy-master haproxy-1.5.19]# vim /usr/local/haproxy/etc/haproxy.cfg# this config needs haproxy-1.1.28 or haproxy-1.2.1 global log 127.0.0.1 local0 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 4096 #最大连接数 chroot /usr/local/haproxy uid 99 #所属运行的用户UID gid 99 #所属运行的用户组 daemon #以后台形式运行HAProxy #debug #quieti nbproc 1 #启动1个实例,可以启多个来提高效率 pidfile /var/run/haproxy.pid defaults log global mode http option httpclose #每次请求完毕后主动关闭http通道 option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器 option forwardfor option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接 option dontlognull #保证HAProxy不记录上级负载均衡发送过来的用于检测状态没有数据的心跳包 retries 2 #重试次数 maxconn 2000 #最大连接数 balance source #如果想让HAProxy按照客户端的IP地址进行负载均衡策略,即同一IP地址的所有请求都发送到同一服务器时需要配置此选项 timeout connect 5000 timeout client 50000 timeout server 50000 listen admin_stats bind *:8888 #监听端口,后面打开网页时要用到,不要和已打开的端口冲突 mode http #http的7层模式 option httplog #采用http日志格式 log 127.0.0.1 local0 err maxconn 10 stats refresh 30s #统计页面自动刷新时间 stats uri /stats #统计页面url stats auth admin:admin #统计页面用户名和密码设置 stats hide-version #隐藏统计页面上HAProxy的版本信息 #关键设置,添加负载均衡服务器只需设置这里 listen web_cluster 0.0.0.0:8090 mode http balance roundrobin server web1 172.16.0.113:80 cookie app1inst1 check inter 2000 rise 2 fall 5 server web2 172.16.0.114:80 cookie app1inst2 check inter 2000 rise 2 fall 5
启动
[root@localhost sbin]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
停止
[root@localhost sbin]# killall haproxy 或者kill -9 端口
监控页面
http://172.16.0.111:8888/stats
负载均衡测试
3、安装keepalived
[root@haproxy-master ~]# tar zxvf keepalived-1.2.7.tar.gz -C /usr/local/keepalived[root@haproxy-master ~]# cd /usr/local/keepalived[root@haproxy-master ~]# ./configure[root@haproxy-master ~]# make && make install
编辑配置文件
[root@haproxy-master keepalived-1.2.23]# vim /usr/local/keepalived/etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs { notification_email { acassen@firewall.loc failover@firewall.loc 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_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0}vrrp_instance VI_1 { state MASTER #备服务器上改为BACKUP interface eth0 virtual_router_id 51 priority 100 #被服务器上改为小于100的数字,如99 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.16.0.110 #虚拟ip,自己设定 }}
指定配置文件路径
[root@haproxy-master keepalived]# vim /usr/local/keepalived/etc/sysconfig/keepalived KEEPALIVED_OPTIONS="-D -f /usr/local/keepalived/etc/keepalived/keepalived.conf"
因为我们使用非默认路径(/usr/local)安装keepalived,需要设置一些软链接以保证keepalived能正常启动
[root@haproxy-master keepalived]# ln -s /usr/local/keepalived/sbin/keepalived /usr/bin[root@haproxy-master keepalived]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/[root@haproxy-master keepalived]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
启动
[root@haproxy-master keepalived]# service keepalived startStarting keepalived: [ OK ][root@haproxy-master keepalived]# chkconfig keepalived on
查看主服务器虚拟ip
[root@haproxy-master keepalived]# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ef:78:76 brd ff:ff:ff:ff:ff:ff inet 172.16.0.111/23 brd 172.16.1.255 scope global eth0 inet 172.16.0.110/32 scope global eth0 inet6 fe80::20c:29ff:feef:7876/64 scope link valid_lft forever preferred_lft forever
测试vip是否正常提供服务,可以看到与master的监控界面一致
测试keepalived是否实现故障转移功能
停止master上的keepalived服务
[root@haproxy-master ~]# service keepalived stopStopping keepalived: [ OK ]
在backup上查看是否接管vip
[root@haproxy-backup sbin]# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:6d:1a:b7 brd ff:ff:ff:ff:ff:ff inet 172.16.0.112/23 brd 172.16.1.255 scope global eth0 inet 172.16.0.110/32 scope global eth0 inet6 fe80::20c:29ff:fe6d:1ab7/64 scope link valid_lft forever preferred_lft forever
再访问监控页面,可以看到
参考链接:
http://www.cnblogs.com/MacoLee/p/5853356.html
http://blog.csdn.net/aa168b/article/details/50372649
http://7424593.blog.51cto.com/7414593/1764640
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- Keepalived+Haproxy实现高可用负载均衡
- Haproxy+keepalived实现高可用负载均衡
- Haproxy+keepalived实现高可用负载均衡
- Haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- haproxy+keepalived实现高可用负载均衡
- linux初接触
- 第30课:彻底解密Spark 2.1.X中Shuffle中JVM Unified Memory内幕详情:Spark Unified Memory的运行原理和机制是什么?Spark JVM最小配置是什么
- LeetCode Week11: Burst Ballons
- old stream I/O new nio mapped file performance
- sp_addextendedproperty
- haproxy+keepalived实现高可用负载均衡
- 预防SQL注入攻击之我见
- ASR插座研发进度及功能概述
- ping: Network is unreachable
- AJAX
- 300. Longest Increasing Subsequence
- CSS学习笔记
- 兼容性管理
- 电脑入门知识