实验环境:

主机名

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构建高可用负载均衡集群的更多相关文章

  1. 基于Haproxy+Keepalived构建高可用负载均衡集群

    实验环境: 主机名 IP地址 VIP 192.168.200.254 Haproxy-1 192.168.200.101 Haproxy-2 192.168.200.102 Nginx1 192.16 ...

  2. haproxy + keepalived 实现高可用负载均衡集群

    1. 首先准备两台tomcat机器,作为集群的单点server. 第一台: 1)tomcat,需要Java的支持,所以同样要安装Java环境. 安装非常简单. tar xf  jdk-7u65-lin ...

  3. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  4. LVS+Keepalived 实现高可用负载均衡集群

    LVS+Keepalived  实现高可用负载均衡集群     随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...

  5. Heartbeat+LVS构建高可用负载均衡集群

    1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里 ...

  6. Keepalived+LVS高可用负载均衡集群

    概述 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器.节点服务器的可用性,及 ...

  7. 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 ...

  8. Nginx+Keepalived搭建高可用负载均衡集群

    本文的重点是Keepalived的配置,Nginx的配置就简略带过.软件:CentOS 7.2 / Nginx 1.12.2 / Keepalived 1.3.9 ha-01:192.168.1.97 ...

  9. RabbitMQ(四):使用Docker构建RabbitMQ高可用负载均衡集群

    本文使用Docker搭建RabbitMQ集群,然后使用HAProxy做负载均衡,最后使用KeepAlived实现集群高可用,从而搭建起来一个完成了RabbitMQ高可用负载均衡集群.受限于自身条件,本 ...

随机推荐

  1. MySQL InnoDB 索引 (INDEX) 页结构

    MySQL InnoDB 索引 (INDEX) 页结构 InnoDB 为了不同的目的而设计了不同类型的页,我们把用于存放记录的页叫做索引页 索引页内容 索引页分为以下部分: File Header:表 ...

  2. Spring Cloud Zuul 那些你不知道的功能点

    本文摘自于 <Spring Cloud微服务 入门 实战与进阶> 一书. 1. /routes 端点 当@EnableZuulProxy与Spring Boot Actuator配合使用时 ...

  3. spring cloud 2.x版本 Gateway自定义过滤器教程

    前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...

  4. GPU跑tf-faster-rcnn demo以及训练自己的数据

    https://blog.csdn.net/qq_39123369/article/details/85245512

  5. Netty - 粘包和半包(下)

    上一篇介绍了粘包和半包及其通用的解决方案,今天重点来看一下 Netty 是如何实现封装成帧(Framing)方案的. 解码核心流程 之前介绍过三种解码器FixedLengthFrameDecoder. ...

  6. 用户和登录的ID、Name和SID

    SQL Server的安全主体主要分为Login.User和Role,不仅有ID属性,还有Name属性和SID属性,SID是指Security ID.在查看用户和登录的时候,受到模拟上下文的影响.当执 ...

  7. C# recording audio based on audio in Console

    1. Install-package naudio -v 1.9.0 2. using NAudio.Wave; 3. public class NAudioHelper { public WaveI ...

  8. vue-基本动画

    不使用动画 <div id="app"> <input type="button" value="toggle" @cli ...

  9. Python切片中的误区与高级用法

    众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串.列表.元组...)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice)就是一种截取索引片段的技术,借助切片 ...

  10. 通过SSH通道来访问MySQL

     许多时候当要使用Mysql时,会遇到如下情况: 1. 信息比较重要,希望通信被加密.2. 一些端口,比如3306端口,被路由器禁用. 对第一个问题的一个比较直接的解决办法就是更改mysql的代码,或 ...