基于Haproxy+Keepalived构建高可用负载均衡集群
实验环境:
|
主机名 |
IP地址 |
|
VIP |
192.168.200.254 |
|
Haproxy-1 |
192.168.200.101 |
|
Haproxy-2 |
192.168.200.102 |
|
Nginx1 |
192.168.200.103 |
|
Nginx2 |
192.168.200.104 |

1、在Nginx1/2上编译安装nginx服务
1.1 首先安装Nginx1
[root@Nginx-1 ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel
[root@Nginx-1 ~]# useradd -M -s /sbin/nologin nginx
[root@Nginx-1 ~]# tar xf nginx-1.6.2.tar.gz -C /usr/src
[root@Nginx-1 ~]# cd /usr/src/nginx-1.6.2
[root@Nginx-1 nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install
[root@Nginx-1 nginx-1.6.2]# cd /usr/local/nginx/html/
[root@Nginx-1 html]# echo "server 192.168.200.103" > index.html
[root@Nginx-1 html]# /usr/local/nginx/sbin/nginx
[root@Nginx-1 html]# netstat -anpt |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4503/nginx
1.2 安装Nginx2, 同Nginx1搭建方式是一样的。
与Nginx1唯一不同的是:
[root@Nginx-2 html]# echo "server 192.168.200.104" > index.html
2、安装Haproxy-1与Haproxy-2 两台机器配置一致:
[root@Haproxy-1 ~]# yum -y install gcc gcc-c++ make pcre-devel bzip2-devel
[root@Haproxy-1 ~]# tar xf haproxy-1.4.24.tar.gz -C /usr/src/
[root@Haproxy-1 ~]# cd /usr/src/haproxy-1.4.24/
[root@Haproxy-1 haproxy-1.4.24]# make TARGET=linux26 && make install
2.1 Haproxy服务器配置
建立haproxy的配置目录及文件
[root@Haproxy-1 haproxy-1.4.24]# mkdir /etc/haproxy
[root@Haproxy-1 haproxy-1.4.24]# cp examples/haproxy.cfg /etc/haproxy/
2.2 haproxy配置项的介绍
haproxy的配置文件通常分为三部分: global(全局配置部分) defaults(默认配置部分) listen(应用组件部分)
[root@Haproxy-1 ~]# vim /etc/haproxy/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/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet defaults
log global
mode http
option httplog
option dontlognull
retries 3
#redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000 listen web-cluster 0.0.0.0:80
option httpchk GET /index.html
balance roundrobin
server inst1 192.168.200.103:80 check inter 2000 fall 3
server inst2 192.168.200.104:80 check inter 2000 fall 3
2.3 创建自启动脚本
[root@Haproxy-1 ~]# cp /usr/src/haproxy-1.4.24/examples/haproxy.init /etc/init.d/haproxy
[root@Haproxy-1 ~]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@Haproxy-1 ~]# chmod +x /etc/init.d/haproxy
[root@Haproxy-1 ~]# /etc/init.d/haproxy start
Starting haproxy: [确定]
2.4 客户端访问测试:
用浏览器打开 http://192.168.200.101 打开一个新的浏览器再次访问 http://192.168.200.101
用浏览器打开 http://192.168.200.102 打开一个新的浏览器再次访问 http://192.168.200.102
可以验证两次访问到的结果分别为:
server 192.168.200.103
server 192.168.200.104
3、编译安装keepalived服务
[root@Haproxy-1 ~]# yum -y install kernel-devel openssl-devel popt-devel
[root@Haproxy-1 ~]# tar xf keepalived-1.2.13.tar.gz
[root@Haproxy-1 ~]# cd keepalived-1.2.13
[root@Haproxy-1 keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.18-194.el5-i686 && make && make install
3.1 配置keepalibed 开机启动脚本
[root@Haproxy-1 ~]# chkconfig --add keepalived
[root@Haproxy-1 ~]# chkconfig keepalived on
[root@Haproxy-1 ~]# chkconfig --list keepalived
3.2.1 配置keepalibed 主配置文件
[root@Haproxy-1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived vrrp_script chk_http_port {
script "/etc/keepalived/check_haproxy.sh"
interval 2 global_defs {
router_id LVS_DEVEL
}
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.200.254
}
}
}
3.2.2 第二台Haproxy配置keepalibed 主配置文件
[root@Haproxy-2 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived 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 BACKUP
interface eth0
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
} track_script {
chk_http_port
} virtual_ipaddress {
192.168.200.254
}
}
}
4、两台机器上都配置haproxy检测脚本
[root@Haproxy-1 ~]# cat /etc/keepalived/check_haproxy.sh
#!/bin/bash
num=`ps -C haproxy --no-header |wc -l`
if [ $num -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 [root@Haproxy-1 ~]# chmod +x /etc/keepalived/check_haproxy.sh
[root@Haproxy-1 ~]# service keepalived start
[root@Haproxy-2 ~]# service keepalived start
5.1、测试VIP地址
[root@Haproxy-1 ~]# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:cc:18:a2 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.101/24 brd 192.168.200.255 scope global eth0
inet 192.168.200.254/32 scope global eth0
inet6 fe80::20c:29ff:fecc:18a2/64 scope link
valid_lft forever preferred_lft forever [root@Haproxy-1 ~]# /etc/init.d/keepalived stop
停止 keepalived: [确定] [root@Haproxy-2 ~]# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:fd:8a:4e brd ff:ff:ff:ff:ff:ff
inet 192.168.200.102/24 brd 192.168.200.255 scope global eth0
inet 192.168.200.254/32 scope global eth0
inet6 fe80::20c:29ff:fefd:8a4e/64 scope link
valid_lft forever preferred_lft forever
5.2、测试Haproxy健康检查
[root@Haproxy-1 ~]# service haproxy stop
Shutting down haproxy: [确定]
[root@Haproxy-1 ~]# service haproxy status
haproxy (pid 59717) 正在运行...
5.3 网页测试:
用浏览器打开 http://192.168.200.254
再次打开一个新的浏览器再次访问 http://192.168.200.254
可以验证两次访问到的结果分别为:
server 192.168.200.103
server 192.168.200.104
基于Haproxy+Keepalived构建高可用负载均衡集群的更多相关文章
- Haproxy+Keepalived构建高可用负载均衡集群
实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...
- haproxy + keepalived 实现高可用负载均衡集群
1. 首先准备两台tomcat机器,作为集群的单点server. 第一台: 1)tomcat,需要Java的支持,所以同样要安装Java环境. 安装非常简单. tar xf jdk-7u65-lin ...
- LVS+Keepalived 实现高可用负载均衡集群
LVS+Keepalived 实现高可用负载均衡集群 随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...
- Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群
一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...
- Heartbeat+LVS构建高可用负载均衡集群
1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里 ...
- Keepalived+LVS高可用负载均衡集群
概述 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器.节点服务器的可用性,及 ...
- HAProxy+Keepalived构建高可用负载均衡
http://www.linuxidc.com/Linux/2012-03/55880.htm web1 IP 192.168.0.47 web2 IP 192.168.0.48 haproxy_ma ...
- Nginx+Keepalived搭建高可用负载均衡集群
本文的重点是Keepalived的配置,Nginx的配置就简略带过.软件:CentOS 7.2 / Nginx 1.12.2 / Keepalived 1.3.9 ha-01:192.168.1.97 ...
- RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群
本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...
随机推荐
- BFC原理
一.BFC是什么? 在解释 BFC 是什么之前,需要先介绍 Box.Formatting Context的概念. Box: CSS布局的基本单位 Box 是 CSS 布局的对象和基本单位, 直观点来说 ...
- Java I/O之NIO概念理解
JDK1.4的java.nio.*包引入了新的Java I/O新类库,其目的在于提高速度.实际上,旧的I/O包已经使用nio重新实现过,以便充分利用这种速度提高,因此即使我们不显式地用nio编码,也能 ...
- 偶尔发生File has been moved - cannot be read again,其实是个误解
使用poi上传.xlsx文件时,出现如下错误 Exception in thread "pool-3-thread-2" java.lang.IllegalStateExcepti ...
- FineUIMvc随笔(6)对比WebForms和MVC中表格的数据库分页
声明:FineUIMvc(基础版)是免费软件,本系列文章适用于基础版. 通过对比WebForms和MVC中表格数据库分页代码的不同,可以对 MVC 中的数据流转有更加深入的了解. WebForms 中 ...
- 485. Max Consecutive Ones
题目 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: ...
- JNDI常见配置方式
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...
- scrapy学习笔记
1.scrapy用哪条命令行重新编辑已有的项目?cd projectname 2.如何在pycharm中开启scrapy?先在终端创建一个项目(即文件夹),再在pycharm中打开.
- 关于Tarjan(1)
众所周知, 求有向图的强连通分量的Tarjan算法是以其发明者Robert Tarjan命名的.Robert Tarjan还发明了求双连通分量的Tarjan算法,以及求最近公共祖先(LCA)的离线Ta ...
- 实现类似MVC ViewBag类型的对象
public class ViewBag : DynamicObject { private readonly Dictionary<string,dynamic> dic=new Dic ...
- 搜索suggestion
题目内容 百度搜索框的suggestion,比如输入北京,搜索框下面会以北京为前缀,展示“北京爱情故事”.“北京公交”.“北京医院”等等搜索词.如何设计使得空间和时间复杂度尽量低. 题目分析 在字 ...