一、环境介绍

我用的是centos6.7,内核版本为2.6.32-573.el6.x86_64,keepalived版本为keepalived-1.2.22,haproxy版本为haproxy-1.6.4

# yum install libnl* popt* openssl openssl-devel -y

下载并安装ipvsadm-1.26  、libnfnetlink-1.0.1、   libnfnetlink-devel-1.0.1

html-A IP 192.168.1.41

html-B IP 192.168.1.59

haproxy_master 192.168.1.240   主

haproxy_backup 192.168.1.92     备

VIP(virtual IP) 192.168.1.180

二、在192.168.1.240和192.168.1.92上安装Keepalived

1.下载keepalived    http://www.keepalived.org/download.html

2.安装

#tar -zxvf keepalived-1.2.22.tar.gz
        #ln -s /usr/src/kernels/2.6.32-573.el6.x86_64/ /usr/src/linux
        #cd keepalived-1.2.22
    #./configure --prefix=/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-573.el6.x86_64/
    #make

#make install
    #cd /etc/keepalived/
    #mv keepalived.conf keepalived.conf.default

3.编写配置文件

#vim   keepalived.conf

! Configuration File for keepalived

vrrp_script chk_http_port {
         script "/etc/keepalived/check_haproxy.sh"
         interval 2
         weight 2

    global_defs {

#设置邮件报警,可以不设

#  notification_email {
            #  wt@123.com
            #  }
            # notification_email_from wt@123.com
            #  smtp_server 192.168.1.100       #邮件服务器IP
            #  smtp_connect_timeout 30

         router_id LVS_DEVEL
    }
    vrrp_instance VI_1 {
         state MASTER #192.168.1.92上改为BACKUP
         interface eth0
         virtual_router_id 51
         priority 150 #192.168.1.92上改为120
         advert_int 1
         authentication {
             auth_type PASS
             auth_pass 1111
         }

         track_script {
             chk_http_port
         }

         virtual_ipaddress {
             192.168.1.180
         }
   }
   }

4.编写keepalived自启动脚本

#vim  /etc/keepalived/check_haproxy.sh

#!/bin/bash
   A=`ps -C haproxy --no-header |wc -l`
   if [ $A -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

赋予脚本执行权限
      #chmod 755 /etc/keepalived/check_haproxy.sh   该脚本可保证haproxy程序意外挂掉时重新启动程序

三、在192.168.1.240和192.168.1.92上安装Haproxy

1.下载Haproxy http://download.csdn.net/detail/a15134566493/9521419

2.安装配置

#tar -zxvf haproxy-1.6.2.tar.gz
        #cd haproxy-1.6.2

# make TARGET=linux26 PREFIX=/usr/local/haproxy install

    #cd /usr/local/haproxy/

# mkdir conf logs

#cd conf/

# vim haproxy.cfg

######## 全局配置信息 #########
######参数是进程级的,通常和操作系统相关#######

   global
    log 127.0.0.1 local3 info #日志服务器
    maxconn 4096 #最大连接数
    uid nobody #用户身份
    gid nobody #组身份
    daemon #守护进程方式后台运行
    nbproc 1 #工作进程数量

####### 默认设置 ###################
#####这些参数是配置 frontend,backend,listen 组的 ###########
   defaults
    log global
    mode http #工作模式 http ,tcp 是 4 层,http是 7 层
    maxconn 2048 #最大连接数
    retries 3 #3 次连接失败就认为服务器不可用
    option redispatch #如果 cookie 写入了 serverId 而客户端不会刷新 cookie,当serverId 对应的服务器挂掉后,强制定向到其他健康的服务器
    stats uri  /haproxy #使用浏览器访问 http://192.168.1.240/haproxy,可以看到服务器状态
    contimeout 5000
    clitimeout 50000
    srvtimeout 50000

   frontend http-in
    bind 0.0.0.0:80
    mode http
    log global
    option httplog #日志类别 http 日志格式
    option httpclose #打开支持主动关闭功能
       #acl php url_reg  -i  \.php$ #acl <ACL名字>  <类型>  <大小写>  <规则>  有PHP网页就取消注释
       acl html url_reg  -i  \.html$  
#use_backend  <服务器组>  if  <ACL名字>
       #use_backend php-server if  php         有PHP网页就取消注释
       use_backend html-server if  html
       default_backend html-server
#默认使用的服务器组

        ######以下注释的是PHP的配置,没有PHP网页可以不写这个配置#############
   #backend php-server
    #mode http
    #balance roundrobin #负载均衡的方式
    #option httpchk GET /index.php #健康检查
    cookie SERVERID insert indirect nocache #客户端的 cookie 信息
    #server php-A 192.168.1.30:80 weight 1 cookie 1 check inter 2000 rise 2 fall 5
    #server php-B 192.168.1.40:80 weight 1 cookie 2 check inter 2000 rise 2 fall 5
    #cookie 1 标识 serverid 为 1
    #check inter 2000 检测心跳频率
    #rise 2 2 次正确认为服务器可用
    #fall 5 5 次失败认为服务器不可用

   backend html-server
    mode http
    balance roundrobin
    option httpchk GET /index.html
    cookie SERVERID insert indirect nocache
    server html-A 192.168.1.41:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5
    server html-B 192.168.1.59:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5 
3.启动HAproxy
           # /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

4.查看HAproxy状态

由于使用了keepalived虚拟主机,所以可访问192.168.1.180/haproxy查看HAproxy状态

四、搭建网页服务器

1.# yum install httpd -y

2.在/var/www/html/目录下创建index.html,

在192.168.1.41的index.html中写  i am 192.168.1.41

在192.168.1.59的index.html中写  i am 192.168.1.59

3.#service httpd restart

5.在客户端访问 HAproxy 测试

           在浏览器访问192.168.1.180即可访问。其显示的网页内容实际上是192.168.1.41或192.168.1.59的网页。

           实际效果:

          

keepalived+haproxy构建高可用负载均衡的更多相关文章

  1. Keepalived+HAProxy 搭建高可用负载均衡

    转载自:https://mp.weixin.qq.com/s/VebiWftaRa26x1aA21Jqww 1. 概述 软件负载均衡技术是指可以为多个后端服务器节点提供前端IP流量分发调度服务的软件技 ...

  2. Keepalived+HAproxy实现高可用负载均衡

    总概:       Keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态, ...

  3. Keepalived+Haproxy搭建高可用负载均衡

    Keepalived 简单的是一个路由的软件用C写的这个项目的主要目标是提供简单而强大的设施的负载均衡和高可用性对Linux系统和基于Linux的基础设施.负载均衡架构依赖于众所周知的和广泛使用的Li ...

  4. 【线上测试之后的应用】基于MySQL+MHA+Haproxy构建高可用负载均衡数据库集群(详解)

    这里我们先介绍一下MHA是什么,其次就是它的应用与测试,同时为了大家呈现了数据备份案例,最后总结了使用情况以及注意事项和解决办法 一.MHA 概述 MHA(Master High Availabili ...

  5. docker下用keepalived+Haproxy实现高可用负载均衡集群

    启动keepalived后宿主机无法ping通用keepalived,报错: [root@localhost ~]# ping 172.18.0.15 PING () bytes of data. F ...

  6. Haproxy+Keepalived搭建Weblogic高可用负载均衡集群

    配置环境说明: KVM虚拟机配置 用途 数量 IP地址 机器名 虚拟IP地址 硬件 内存3G  系统盘20G cpu 4核 Haproxy keepalived 2台 192.168.1.10 192 ...

  7. LVS+Keepalived搭建MyCAT高可用负载均衡集群

    LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国 ...

  8. CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡

    一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...

  9. 转载--CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡

    源地址:http://www.cnblogs.com/mchina/archive/2012/08/27/2644391.html 一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台: ...

随机推荐

  1. Python之路【第八篇】python实现线程池

    线程池概念 什么是线程池?诸如web服务器.数据库服务器.文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务.构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就 ...

  2. C-指针

    //格式:变量类型 *变量名//定义了一个指针变量p//指针变量只能存储地址//指针就一个作用:能够根据一个地址值,访问对应的存储空间//指针变量p前面的int:指针变量p只能指向int类型的数据in ...

  3. Java备份约9亿条数据

    需求:有一张表9亿多条数据,数据加索引总数据量61GB.考虑到这张表的大部分数据都不会再被使用并且大数据量可能影响整库的性能,所以决定将表里某一个时刻之前的数据备份到一张新表中,待备份完成后将旧表中已 ...

  4. SignalR 资料

    链接:http://www.cnblogs.com/royding/p/3919134.html

  5. winScp如何通过隧道代理进行远程连接

    目标机器:a  ip为192.168.2.150(内网ip)  a.xxx.x.xx(外网ip) 跳板机器:b ip为192.168.2.151(内网ip) b.xxx.xx.xx(外网ip) 目标机 ...

  6. javascript 数据类型转换

    javascrīpt 类型转换函数 在Javascrīpt中,Double类型和Int类型都是看作为Number对象. 1.Number转成String number.toString() Strin ...

  7. [译]ES6箭头函数和它的作用域

    原文来自我的前端博客: http://www.hacke2.cn/arrow-functions-and-their-scope/ 在ES6很多很棒的新特性中, 箭头函数 (或者大箭头函数)就是其中值 ...

  8. jupyter notebook + pyspark 环境搭建

    安装并启动jupyter 安装 Anaconda 后, 再安装 jupyter pip install jupyter 设置环境 ipython --ipython-dir= # override t ...

  9. document.all的详细解释(document.all基本上所有浏览器可用!)

    从何而来从IE4开始IE的object model才增加了document.all对象,MSDN中也对 Object.all 有详细的说明,Object.all是个HTMLCollection,不是数 ...

  10. express 框架之 路由与中间件

    1.  什么是router路径,什么是middleware? 我们输入www.baidu.com 来访问百度的主页,浏览器会自动转换为 http://www.baidu.com:80/(省略一些参数) ...