`
wx1568016009
  • 浏览: 23574 次
文章分类
社区版块
存档分类
最新评论

keepalived-nginx-apache-mysql实现高可用、负载均衡的网站(上)

阅读更多

说明:本次实验是需要8台虚拟机的项目 其架构如下图:

简介

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。

Layer3,4,5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:

Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与 否的标准。

Layer4:如果理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer5:Layer5对指定的URL执行HTTP GET。然后使用MD5算法对HTTP GET结果进行求和。如果这个总数与预期值不符,那么测试是错误的,服务器将从服务器池中移除。该模块对同一服务实施多URL获取检查。如果您使用承载多个应用程序服务器的服务器,则此功能很有用。此功能使您能够检查应用程序服务器是否正常工作。MD5摘要是使用genhash实用程序(包含在keepalived软件包中)生成的。

Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,是一款高性能的反向代理服务器。

环境说明

虚拟机数量:四台

操作系统:全部是centos7.3

keepalived版本:keepalived-2.0.7

nginx版本:nginx-1.14.0

主机名称 安装软件 ip地址
keepalived_web_m keepalived+nginx 172.18.74.64
keepalived_web_s keepalived+nginx 172.18.74.65
web1 Apache 172.18.74.66
web2 Apache 172.18.74.69

环境安装

首先关闭所有机器的防火墙和selinux,配置好之后我们开启,然后添加策略。

systemctl stop firewalld
setenforce 0

安装nginx

首先下载并解压需要的包

wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.41/pcre-8.41.tar.gz
tar -zxvf pcre-8.41.tar.gz
wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
tar -zxvf openssl-1.0.2o.tar.gz
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar -zxvf ngx_cache_purge-2.3.tar.gz
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz

进入nginx目录

cd nginx-1.14.0

配置安装选项

./configure --add-module=../ngx_cache_purge-2.3 --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.0.2o

通过/usr/local/nginx配置项可以知道主要生效配置文件在此文件夹中

编译并安装

make&&make install

先备份一份nginx配置文件

cd /usr/local/nginx/conf
cp nginx.conf ./nginx.conf.bak

修改nginx.conf的配置

vim nginx.conf

修改红框里的内容

保存退出,然后在sbin目录重新加载nginx

./nginx -s reload

下载并安装keepalived

yum install wget make gcc gcc-c++ openssl-devel 
wget http://www.keepalived.org/software/keepalived-2.0.7.tar.gz 
tar zxvf keepalived-2.0.7.tar.gz 
cd keepalived-2.0.7 
./configure --prefix=/data/keepalived

如果报以下警告:

WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.

不用担心,我们只需要用到VRRP功能,不需要用IPVS功能,所以请确保以下三项是yes就行了。

编译并安装

make&&make install

将keepalived 以服务方式启动

创建/etc/keepalived目录并把keepalived的配置文件拷贝/etc/keepalived目录下并加入到开机启动。

mkdir /etc/keepalived 
cp /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ \
systemctl enable keepalived

修改keepalived配置文件

! Configuration File for keepalived

global_defs {
   notification_email {
       1070481109@qq.com      #这里是故障会给谁发邮件
   }

   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1     #邮件服务器的地址
   smtp_connect_timeout 30
   router_id xu_ka_web_m     #路由的id 一般写主机名
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" # 检查nginx状态的脚本
interval 2
weight 3
}

vrrp_instance VI_1 {            #vrrp实例定义部分
    state MASTER                #设置lvs的状态,MASTER和BACKUP两种,必须大写
    interface ens160             #设置对外服务的接口
    virtual_router_id 51       #设置虚拟路由标示,这个标示是一个数字,同一个vrrp实例使用唯一标示
    priority 100               #定义优先级,数字越大优先级越高,在一个vrrp——instance下,master的优先级必须大于backup
    advert_int 1              #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {           #设置验证类型和密码
        auth_type PASS         #主要有PASS和AH两种
        auth_pass 1111         #验证密码,同一个vrrp_instance下MASTER和BACKUP密码必须相同
    }
    virtual_ipaddress {         #设置虚拟ip地址,可以设置多个,每行一个
        172.18.74.182
    }
    track_script { ## 将 track_script 块加入 instance 配置块
        chk_nginx
    }
}

virtual_server 172.18.74.182 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    real_server 172.18.74.64 80 {
        weight 1
        TCP_CHECK{
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

备主机里的keepalived配置

! Configuration File for keepalived

global_defs {
   notification_email {
       1070481109@qq.com      #这里是故障会给谁发邮件
   }

   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1     #邮件服务器的地址
   smtp_connect_timeout 30
   router_id xu_ka_web_s     #路由的id 一般写主机名
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script chk_nginx { 
script "/etc/keepalived/nginx_check.sh" # 检查nginx状态的脚本
interval 2
weight 3
}

vrrp_instance VI_1 {            #vrrp实例定义部分
    state BACKUP                #设置lvs的状态,MASTER和BACKUP两种,必须大写
    interface ens160             #设置对外服务的接口
    virtual_router_id 51       #设置虚拟路由标示,这个标示是一个数字,同一个vrrp实例使用唯一标示
    priority 90               #定义优先级,数字越大优先级越高,在一个vrrp——instance下,master的优先级必须大于backup
    advert_int 1              #设定master与backup负载均衡器之间同步检查的时间间隔,单位是秒
    authentication {           #设置验证类型和密码
        auth_type PASS         #主要有PASS和AH两种
        auth_pass 1111         #验证密码,同一个vrrp_instance下MASTER和BACKUP密码必须相同
    }
    virtual_ipaddress {         #设置虚拟ip地址,可以设置多个,每行一个
        172.18.74.182
    }
    track_script { ## 将 track_script 块加入 instance 配置块
        chk_nginx
    }
}


virtual_server 172.18.74.182 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
    persistence_timeout 50
    protocol TCP

    real_server 172.18.74.65 80 {
        weight 1
        TCP_CHECK{
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

添加检查nginx状态的脚本

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

重启keepalived

systemctl restart keepalived

输入命令ip a查看是否有vip

keepalived+nginx+apache+mysql实现高可用、负载均衡的网站

然后关闭master的keepalived

systemctl stop keepalived

查看backup上是否有vip

有说明配置成功

没有说明keepalived.conf存在问题

安装apache服务器

在两台web服务器上安装apache服务

yum install -y httpd

打开服务

systemctl start httpd

编辑默认页面

cd /var/www/html/

vim index.html

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>产品添加-JD产品管理系统</title>
</head>
<body>
<h3>JD产品管理</h3>
<form action="deal.php" method="post" enctype="multipart/form-data">
图书名称:<input type='text' name='title' />
<hr />
销售价格:<input type="text" name='price' />
<hr />
市场价格:<input type="text" name='market_price' />
<hr />
<input type="submit" name="submit" value="添加" />
<input type="reset" name="reset" value="重置" />
</form>
</body>
</html>

同样在web2里安装apache并修改index.html

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>产品添加-JD产品管理系统</title>
</head>
<body>
<h3>web2_JD产品管理</h3>
<form action="deal.php" method="post" enctype="multipart/form-data">
图书名称:<input type='text' name='title' />
<hr />
销售价格:<input type="text" name='price' />
<hr />
市场价格:<input type="text" name='market_price' />
<hr />
<input type="submit" name="submit" value="添加" />
<input type="reset" name="reset" value="重置" />
</form>
</body>
</html>

通过浏览器访问vip

可以看到web1的页面,再次刷新会出现web2的页面

因为在nginx的配置为你教案中设置的web1和web2的权重为100:80

所以每访问180次会出现100次web1,80次web2


报错指南:

原因

未使用nginx -c的参数指定nginx.conf文件的位置

解决

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 执行


不能加空格

分享到:
评论

相关推荐

    keepalived+nginx+tomcat+redis+mysql所需的jdk包

    在构建高性能、高可用性的Web服务环境中,Java开发和运行环境、数据库系统、负载均衡以及缓存服务都是不可或缺的关键组件。这个压缩包包含了"keepalived+nginx+tomcat+redis+mysql"所需的基础组件,特别是Java ...

    Haproxy+Keepalived+Nginx+Lamp+Nfs实现高可用集群练习1

    通过配置 Haproxy 和 Keepalived 实现高可用性,确保集群的可用性和负载均衡。 知识点: 1. 高可用集群的定义和重要性 高可用集群是指一个系统或应用程序在出现故障或宕机时仍能继续提供服务的能力。高可用集群...

    Haproxy+Keepalived+Nginx+Lamp+Nfs实现高可用集群1

    【标题】:“Haproxy+Keepalived+Nginx+Lamp+Nfs实现高可用集群1” 【描述】:“在互联网服务中,高可用性是关键。本案例将通过Haproxy、Keepalived、Nginx、LAMP(Linux、Apache、MySQL、PHP)和NFS(网络文件系统...

    keepalived-1.2.20.tar.gz

    1. 网站高可用:Keepalived结合Nginx或Apache,可以构建高可用的Web服务环境,当主服务器宕机,Keepalived会自动将VIP切换到备用服务器,用户无感知。 2. 数据库集群:在MySQL、PostgreSQL等数据库环境中,...

    keepalived-2.2.2.tar.gz

    Keepalived常用于配合Nginx或LAMP(Linux、Apache、MySQL、PHP)等Web服务环境,提供高可用的Web服务。通过VRRP,可以确保即使单个服务器出现故障,也不会影响Web服务的正常运行。 7. 故障检测和通知 Keepalived...

    keepalived-1.2.16.tar.gz

    总之,Keepalived作为一款强大的高可用工具,其核心在于通过VRRP协议实现服务的故障切换和负载均衡,对于构建健壮的分布式系统具有重要作用。通过深入理解和灵活运用Keepalived,我们可以构建出更加稳定、高效的网络...

    nginx+keepalived部署tomcat,mysql,redis集群部署

    在本部署方案中,我们构建了一个高可用的IT服务架构,包括了Nginx作为反向代理和负载均衡器、Keepalived实现Nginx的高可用、Tomcat作为Java应用服务器集群、MySQL作为关系型数据库,以及Redis作为缓存系统。...

    LVS+keeplived+nginx+apache

    在介绍如何搭建高可用、高性能PHP集群的过程中,涉及的技术点和知识点主要围绕LVS、Keepalived、Nginx和Apache这几个组件展开。下文将详细阐述这些组件的作用以及如何将它们组合起来实现目标。 首先,LVS(Linux ...

    nginx+apache+mysql+php+memcached+squid搭建集群web环境(二)

    【吐血推荐】nginx+apache+mysql+php+memcached+squid搭建集群web环境(二) 此乃本人N次服务器真机实验所得,所以分数高点,望体谅.. 按教程来做,你也可以搭建linux服务器... 注:此乃分卷二,

    keepalived高可用

    【keepalived高可用】是Linux环境中实现服务高可用性的一种解决方案,主要应用于网络和系统管理,特别是对于那些需要保持持续在线的关键服务,如Web服务器(Nginx、Apache)、数据库(MySQL)等。Keepalived的目标是...

    PHP高级工程师必知必会Nginx+keepalived+MongoDB+haproxy+Sphinx实现分布式集群部署实战视频

    **定义**:Keepalived是一款开源的高可用解决方案软件包,主要用于实现Linux平台下的IPVS(Internet Protocol Virtual Server)管理和服务自动故障转移。 - **核心功能**: - IPVS管理:维护一个虚拟服务器集群,...

    企业级web负载均衡完美架构

    在这样的架构中,Nginx+Keepalived是核心组件,它们共同提供了高可用性和负载均衡功能。 Nginx是一款高性能的HTTP和反向代理服务器,常用于负载均衡。其主要优点包括低内存占用、高效的处理静态文件和反向代理能力...

    LVS+Nginx+Lamp+NFS架构

    LVS+Nginx+Lamp+NFS架构 ...该架构使用 LVS 和 Nginx 来实现负载均衡,使用 LAMP 来提供动态内容,使用 Mysql 双主来提供数据库服务,使用 NFS 来提供文件存储服务,并使用 Keepalived 来提供服务器的高可用性。

    keepalived2.0.8

    1. LAMP集群:Keepalived与Nginx或Apache配合,实现Web服务的高可用性和负载均衡。 2. 数据库集群:用于MySQL、PostgreSQL等数据库的主备切换,确保数据服务的稳定运行。 3. API网关:在API网关层部署Keepalived,...

    高并发web集群框架搭建

    该框架的核心组件包括Nginx作为负载均衡器、Keepalived实现高可用性、Apache作为后端服务器、MySQL集群用于数据管理以及Memcached作为缓存服务。 #### 二、负载均衡与高可用性 - **Nginx**:作为主负载均衡器,能够...

    Nginx高性能WEB服务器系列(超级详细)

    通过结合 Nginx 和 Keepalived 实现高可用的集群架构。 - **方案概述**: - Nginx 作为前端负载均衡器。 - Keepalived 用于监控主备节点的状态。 - 实现自动故障转移和负载均衡。 - **配置要点**: - 主备节点...

    集群,高可用,linux

    总的来说,这个集群配置利用了Linux环境,通过Keepalived、Nginx、MySQL和PHP实现了高可用性和负载均衡,确保即使在单个组件故障的情况下,也能提供不间断的Web服务。这种架构对于需要24/7在线的企业级应用至关重要...

Global site tag (gtag.js) - Google Analytics