`

keepalived+nginx高可用web架构实践

阅读更多

上一篇文章  《 keepalived+nginx打造高可用web应用的架构方案》 写了web server高可用架构的方案思路。

但是,

陆游教育我们纸上得来终觉浅,绝知此事要躬行。不操作一遍就是不会。

 

所以,这一篇是我对DNS+(keepalived & nginx反向代理)+web server三层架构的实践操作记录。

 

首先,我需要4台机器。两台做keepalived-nginx代理,两台做web server。哪儿来四台机器呢?靠vagrant 。 个人电脑上安装vagrant、virtualbox。vagrant是跨平台虚拟机管理工具,通过下载虚拟机镜像box文件和Vagranfile可以配置以启动N台虚拟机,非常方便。我这里用centos7.box启动四台虚拟机分别是keepalived1、keepalived2、web1、web2 。配置文件如下: 

vagrantfile 配置

 

第二,安装keepalived & nginx。 

登录keepalived1,先安装各种依赖

yum -y install gcc gcc-c++ autoconf automake make

 

yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

yum -y install ipvsadm

 

最后安装keepalived和nginx

   yum -y install keepalived

  下载nginx包,解压安装即可。

 

下面是master机器keepalived.conf配置。

keepaalived配置

设置vip 192.168.200.18 

 

机器192.168.2.11和192.168.2.12上配置keepalived.conf有区别,backup机器需要修改如下:

 

 

vrrp_instanceVI_1 {
    state BACKUP //初始化状态
    interface eth0
    virtual_router_id 51
    priority 99      //优先级,一定要比master的优先级要低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.2.8
    }
}
 

 

 

然后是nginx负载均衡配置,负载量不大的时候这其实是master-backup配置,nginx自带服务检测。

 ngixn反向代理配置

 

机器192.168.2.11和192.168.2.12上nginx配置完全一致。

 

 第三,启动测试web server

web server测试机的准备我打算用docker,下载安装启动docker,因为国内下载镜像实在太慢了,所以配置docker镜像加速。创建 /etc/docker/daemon.json 文件配置如下:

 

{

"registry-mirrors": [

"https://kfwkfulq.mirror.aliyuncs.com",

"https://2lqq34jg.mirror.aliyuncs.com",

"https://pee6w651.mirror.aliyuncs.com",

"https://registry.docker-cn.com",

"http://hub-mirror.c.163.com"

],

"dns": ["8.8.8.8","8.8.4.4"]

}
 

 

这样就快多了,分别下载php-fpm和apache镜像:

 

dmiseev/php-fpm7.1        latest              a496a8708389        12 months ago       675MB

httpd                     2.4-alpine          141bb8d01fbd        3 weeks ago         127MB

 

然后就是启动docker,并且关联两个容器。

启动php-fpm 命令是: 

docker run -d --rm --name fpm -v "/data1/apache2/www:/php" a496a8708389  

-v参数是把镜像中php命令关联到宿主机项目路径下。

 

启动apache命令是:

 

docker run -d -p 80:80  --link fpm:php --rm --name httpd-service -v "/data1/apache2/www:/usr/local/apache2/htdocs/" 141bb8d01fbd

 

对外暴露80端口

-v命令关联项目和容器项目路径

 

配置apache。 需要让apache进行fcgi代理关联,本来可以在宿主机写好httpd.conf 通过-v命令管理,但是不知道为什么我加上 -v "/data1/apache2/conf/:/usr/local/apache2/conf/"  参数dockers启动一直失败。只好先启动docker,然后进入容器修改httpd.conf,然后重启apache。

 

首先测试web server。分别访问http://192.168.2.13/index.php  http://192.168.2.14/index.php 看到如下结果,表示web server启动成功。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最后,启动nginx机器上keepalived,用ip 命令查看虚拟ip已经添加到eth0:,如下图:

 

 

 

 配置虚拟域名,进行访问测试,配置为 192.168.200.18 web.me  浏览器访问呢 web.me,结果如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

多次刷新发现13 、14两个web server依次被访问,这是nginx的反向代理没有设置负载均衡访问配置,默认轮询。  

 

登陆到192.168.2.11 或者 192.168.2.12 机器上kill掉nginx, 刷新浏览器发现web server依然可以访问,keepalived起到检测自动故障转移的功能。

 

这就保证了DNS+(keepalived & nginx反向代理)+web server三层架构的高可用性。

 

  • 大小: 41.3 KB
  • 大小: 27.8 KB
  • 大小: 38.7 KB
  • 大小: 10.6 KB
  • 大小: 10 KB
  • 大小: 53.6 KB
  • 大小: 9 KB
  • 大小: 8.9 KB
分享到:
评论

相关推荐

    Keepalived+Nginx实现高可用Web负载均衡

    ### Keepalived+Nginx 实现高可用Web负载均衡 #### 场景需求 在现代互联网应用中,网站和应用程序需要处理大量的用户请求,并确保即使在服务器出现故障的情况下也能持续提供服务。为了满足这一需求,通常采用高可用...

    第三十三章:Lvs+Keepalived+Nginx+Tomcat高可用集群1

    LVS+Keepalived+Nginx+Tomcat 高可用集群项目 本文主要讲述了如何构建一个高可用集群项目,使用 LVS、Keepalived、Nginx 和 Tomcat 实现高可用性和负载均衡。该项目的架构中,Keepalived 负责对 LVS 架构中的调度器...

    高可用之Keepalived+Nginx实现高可用Web负载均衡

    "高可用之Keepalived+Nginx实现高可用Web负载均衡" Keepsalived 和 Nginx 是实现高可用 Web 负载均衡的关键技术。Keepalived 是一种高性能的服务器高可用或热备解决方案,可以防止服务器单点故障的发生,而 Nginx ...

    Nginx+KeepAlived+Tomcat负载架构

    - **整体架构**:采用Nginx作为反向代理,后端部署多个Tomcat实例,利用KeepAlived实现Nginx的主备切换,形成一套完整的高可用架构。 - **关键组件**: - **Nginx**:作为前端负载均衡器。 - **KeepAlived**:用于...

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

    MySQL和Nginx负责数据管理和流量分配,Tomcat处理Java应用的运行,Redis提供高速缓存,而Keepalived则保障了系统的高可用性。了解并熟练掌握这些组件的配置和使用,对于构建高效、可靠的Web服务环境至关重要。

    分布式架构高可用架构-Keepalived+Nginx实现高可用Web负载均衡.pdf

    ### 分布式架构高可用架构-Keepalived+Nginx实现高可用Web负载均衡 #### 一、场景需求 在互联网应用中,随着用户数量的增长和技术的发展,单一服务器已难以满足日益增长的服务需求。分布式系统架构应运而生于解决...

    线上一键部署keepalived+nginx

    总结来说,"线上一键部署keepalived+nginx"是一种便捷的方法,用于搭建和管理具有高可用性和负载均衡功能的Web服务。通过Keepalived的故障切换机制和Nginx的负载均衡能力,可以显著增强系统的稳定性和性能。而使用...

    Keepalived+Nginx实现高可用Web负载均衡.docx

    在这个高可用架构中,我们使用 Keepalived 来实现 Nginx 的高可用,通过 Keepalived,我们可以将多个 Nginx 服务器组成一个高可用集群,使得我们的 web 服务具有高可用性。同时,我们还可以使用 Nginx 的负载均衡...

    keepalived+nginx实现双机主备

    Keepalived 是一个基于 VRRP 协议的高可用性解决方案,可以与 Nginx 服务器集成,以实现双机主备的高可用性架构。在本文中,我们将详细介绍使用 Keepalived 和 Nginx 实现双机主备的配置和原理。 一、架构概述 在...

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

    结合Haproxy、Keepalived、Nginx、LAMP和Nfs,我们能构建一个高可用的Web服务集群,通过负载均衡和故障转移策略,保证服务的连续性,同时利用Session和Cookie管理用户状态,提供个性化体验。而Nfs的使用则确保了数据...

    Nginx+keepalived+tomcat实现性负载均衡(包含需要的包)

    在构建高性能、高可用性的Web服务时,使用...总之,Nginx+keepalived+tomcat的组合为Web服务提供了高可用性和负载均衡的能力,是企业级应用架构中的常见选择。通过合理的配置和优化,可以极大地提升系统性能和稳定性。

    keepalived+nginx+fastdfs集群安装手册

    《keepalived+nginx+fastdfs集群安装手册》是一份详尽的IT技术文档,旨在指导用户构建基于这三个组件的高可用集群环境。这个集群方案主要用于实现网站服务的负载均衡和文件存储,确保服务的稳定性和数据的安全性。...

    4 lvs+keepalived+nginx+tomcat实现高性能负载均衡集群.docx

    这里提到的“4 lvs+keepalived+nginx+tomcat”架构,就是一种常用的解决方案,用于处理高流量的Web服务。下面将详细解释每个组件的作用和配置方法。 1. LVS(Linux Virtual Server): LVS是Linux内核中的一个负载...

    Keepalived+Nginx实现Web负载均衡

    ### Keepalived+Nginx 实现 Web 负载均衡 #### 一、场景需求与背景 在现代互联网架构中,随着用户量级的增长及业务复杂度的提升,单一服务器往往难以满足高并发访问的需求,同时也面临着单点故障的风险。为了解决...

    keepalived + nginx 主从热备.zip

    【标题】"keepalived + nginx 主从热备"是一个重要的网络服务高可用性解决方案,主要应用于Web服务器集群,确保在主服务器发生故障时,流量能够无缝切换到备用服务器,保持服务的连续性和稳定性。 【描述】这个...

    keepalived + nginx组建高可用负载平衡Web server集群

    为此,我们可以采用`keepalived`与`nginx`相结合的方式,构建一个高可用的负载平衡Web服务器集群。`nginx`作为知名的反向代理和负载均衡器,能够将来自客户端的请求分发到后端的多台Web服务器,从而提高服务处理能力...

    keepalived+nginx双机热备+负载均衡 非抢占模式

    "keepalived+nginx双机热备+负载均衡 非抢占模式"是一种高级的IT解决方案,用于构建高可用、高性能的Web服务环境。通过Keepalived的VRRP和非抢占模式,保证了服务的连续性;Nginx则提供了灵活的负载均衡策略;配合...

    keepalived+haproxy+nginx-脚本

    标题中的"keepalived+haproxy+nginx-脚本"指的是一个集成的高可用性和负载均衡解决方案,其中包含了三个关键组件:Keepalived、HAProxy和Nginx。这个解决方案通常用于构建高可靠的Web服务架构,确保在主服务器故障时...

Global site tag (gtag.js) - Google Analytics