Centos6.0系统keepalived+Haproxy实现httpd简单负载均衡

简介:

本文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

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

现在打开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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
4月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
920 69
|
2月前
|
监控 关系型数据库 MySQL
在CentOS系统中,如何统计哪个进程打开了文件描述符?
利用上述方法,你可以有效地监控和统计CentOS系统中的进程打开的文件描述符数量,以帮助排查错误或优化系统配置。通过组合使用各种工具和命令,可以获得对系统状态和行为的深入了解,进而做出相应的调整和
159 5
|
4月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
427 78
|
5月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
489 79
|
4月前
|
缓存 监控 Linux
CentOS系统如何查看当前内存容量。
以上方法都不需要特殊软件或者复杂配置即可执行,在CentOS或其他Linux发行版中都适合运行,并且它们各自透露出不同角度对待问题解答方式:从简单快速到深入详尽;从用户态到核心态;从操作层数到硬件层数;满足不同用户需求与偏好。
364 8
|
6月前
|
机器人 Linux
CentOS 7系统中安装特定版本CMake 3.21.2的方法。
到这里,过程已经全部完成。如果你跟随上面的步骤来,那么你现在已经拥有了一个全新的CMake版本在你的CentOS 7系统上了。这个过程就像是你通过一系列仪式,唤醒了一个沉睡已久的古老机器人,它现在完全按照你的意愿来帮你构建和编译软件了。
550 18
|
4月前
|
存储 Linux 数据安全/隐私保护
确定CentOS系统分区表类型(MBR或GPT)
以上方法均能够帮助用户准确地识别出CentOS下连接硬件所应用得具体磁盘标准,并根据实际需求做进一步处理与管理工作。
530 0
|
4月前
|
Ubuntu Linux 云计算
CentOS与Ubuntu:Linux系统的双璧
选择Ubuntu还是CentOS,取决于用户的具体需求,如是否需要图形化界面、对稳定性的要求、软件包管理的偏好以及对商业支持的需求等。两者都是优秀的Linux发行版,只是在设计理念和目标用户群体上有所不同。#深度好文计划#
|
7月前
|
Unix Linux 程序员
在Centos系统上如何有效删除文件和目录的指令汇总
记住,有了这个指南,你就不再为删除文件和目录感到困扰。快去尝试一下,让你的CentOS更上一层楼吧!
505 24
|
6月前
|
安全 Linux 网络安全
在CentOS 7系统上创建SSL/TLS证书以启用HTTPS
请记住,这只是单枚勋章,在野外,CA签发的证书才是堂堂正正的金盾牌。如果您打算让这个小兵走得更远,考虑一下像Let's Encrypt这样的免费CA服务,它会给您的小兵颁发一个大家都认可的荣誉勋章。而且,千万不要忘了定期更新您的装备哦,毕竟,没有哪件盔甲是永远坚不可摧的。
384 4