实验环境:

主机名

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. 【转】MyBatis缓存机制

    转载:https://blog.csdn.net/bjweimengshu/article/details/79988252. 本文转载自公众号 美团技术点评 前言 MyBatis是常见的Java数据 ...

  2. Zookeeper分布式锁实战

    场景描述: 在线程高并发场景下,生成唯一的订单编号,如: 2017-10-14-20-52-33-01 年-月-日-时-分-秒-序号 (1)Lock锁接口 package com.zookeeper. ...

  3. source vimrc的时候报错:.vimrc:1: command not found: syntax

    vim的配置如下: 1 syntax enable //语法高亮 2 set number //显示行号 3 set cursorline //突出显示当前行 4 set ruler //打开状态栏标 ...

  4. 从零开始的微信小程序入门教程(一)

    之前说要和同事一起开发个微信小程序项目,现在也在界面设计,功能定位等需求上开始实施了.所以在还未正式写项目前,打算在空闲时间学习下小程序.本意是在学习过程中结合实践整理出一个较为入门且不是很厚的教程, ...

  5. Java 程序员应在2019年学习的10条面向对象(OOP)设计原则

    面向对象的设计原则 是 OOP 编程的核心,但是我看到大多数 Java 程序员都在追求诸如 Singleton 模式,Decorator 模式或 O​​bserver 模式之类的设计模式,而对学习面向 ...

  6. Java语言入门-第一个HelloWorld程序

    1.官网下载Jdk 这里给出官网下载网址:https://www.oracle.com/technetwork/java/javase/downloads . 1.1 打开之后出现如下界面: 1.2选 ...

  7. vue 仿微信朋友圈9张图上传功能

    项目需求要求用户上传商品的时候可以一次性上传9张图,多余9张提示‘只能上传9张图’,并且每张图右上角有个删除按钮,图片也可以点击放大. 出来的效果图如下: 话不多说,上代码: <el-form- ...

  8. @PostConstruct - 静态方法调用IOC容器Bean对象

    需求:工具类里面引用IOC容器Bean,强迫症患者在调用工具类时喜欢用静态方法的方式而非注入的方式去调用,但是spring 不支持注解注入静态成员变量. 静态变量/类变量不是对象的属性,而是一个类的属 ...

  9. SSM(七)在JavaWeb应用中使用Redis

    前言 先来看一张效果图: 作用就是在每次查询接口的时候首先判断Redis中是否有缓存,有的话就读取,没有就查询数据库并保存到Redis中,下次再查询的话就会直接从缓存中读取了.Redis中的结果:之后 ...

  10. python基础(1):python介绍、python发展史

    1. python介绍 1.1 python是什么样的语言 编程语⾔主要从以下⼏个⻆度为进⾏分类,编译型和解释型.静态语⾔和动态语⾔.强类型定义语⾔和弱类型定义语⾔,我们先看编译型语⾔和解释型语⾔.稍 ...