Nginx LB+keepalived+varnish+NAMP架构部署wordpress实现动静分离

Nginxproxy+varnish

Nginx负载均衡它可基于四层和七层之间进行调度,而且对后端各个节点具有健康状态检测的功能,当后端服务器故障时,会自动标记为不可用状态,当后端节点上线时再将请求调度至此节点,配合keepalived利用飘移IP,高可用保证调度器的实时在线。为保证热区数据的快速响应配合varnish缓存加速,并实现动静分离。

案例架构拓扑如下:

拓扑环境如下:

前端:Nginx+keepalived高可用

调度服务器:Varnish1、Varnish2

缓存服务器:Varnish

1、VarnishServer两台
 2、动静分离后端服务器,并动静都提供负载均衡效果

后端服务器:

NginxStaticWebServer+NFS-client
 AMP DynamicWebServer+NFS-server

1.安装nginx和keepalived后做keepalived配置如下:

! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id  node2
   vrrp_mcast_group4 224.0.234.123

}

vrrp_script chk_down {
   script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
   interval  1
   weight -5
}

vrrp_script chk_nginx {
   script "pkill -0 nginx && exit 0 || exit 1"
   interval 1
   weight -5
   fall 2
   rise 1
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 36
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 335566
    }
    virtual_ipaddress {
        192.168.1.98/24 dev eth0                                                                                      
    }                                                                                                                 

track_script {                                   
        chk_down              
        chk_nginx                                               
}                                                        
}                                                    
vrrp_instance VI_2 {                                            
    state BACKUP                                
    interface eth0                                    
    virtual_router_id 37                                        
    priority 99                   
    advert_int 1                                      
    authentication {                                   
        auth_type PASS                               
        auth_pass 33556677                           
    }                                                   
    virtual_ipaddress {                              
        192.168.1.99/24 dev eth0                             
    }                                             
track_script {                            
        chk_down                                   
        chk_nginx                                      
}                                            
}                                                 
#notify_master "/etc/keepalived/notify.sh master"     #notify_backup "/etc/keepalived/notify.sh backup"
#notify_fault "/etc/keepalived/nofify.sh fault"     
}
  1. Nginx负载均衡简单配置如下:
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
stream {
        upstream  nasrvs {
                server 192.168.5.107:80;
                server 192.168.5.108:80;
        }
        server {
                listen 80;
                proxy_pass nasrvs;
                proxy_timeout 60s;
                proxy_connect_timeout 10s;
        }
}

另一台Nginx负载均衡及keepalived基本配置相同更改相应的参数即可。

3.后端Varnish-server配置如下:

vcl 4.0;

# Default backend definition. Set this to point to your content server.
backend default {
    .host = "192.168.20.109";
    .port = "80";
}
backend nginxsrvs {
  .host = "192.168.20.108";
   .port = "80";
}

sub vcl_recv {
    # Happens before we check if we have this in cache already.
    #
    # Typically you clean up the request here, removing cookies you don‘t need,
    # rewriting the request, etc.
    if (req.method == "PURGE") {
         return(purge);
}
    if (req.url ~ "(?i)\.(css|svg|js|jpg|jpeg|png|gif|pdf)") {
         set req.backend_hint = nginxsrvs;
    } else {
         set req.backend_hint =   default;
    }

}

sub vcl_purge {
        return (synth(200,"Purged"));
}

sub vcl_deliver {                                                                                                     
    if (obj.hits>0) {                                                                                                 
        set resp.http.X-Cache = "HIT via " + server.ip;                                                               
    } else {                                                                                                          
        set resp.http.X-Cache = "Miss via " + server.ip;                                                              
    }

两台varnishserver的配置基本一致,更改相应的参数即可。

4.AMP将httpd,mariadb-server,php-mysql,php安装后httpd的配置如下:

<VirtualHost *:80>
        DirectoryIndex index.php index.html
        ServerName www.abc.com
        DocumentRoot /apps/data/wordpress
        <Directory "/apps/data/">
                Options FollowSymLinks
                AllowOverride None
                Require all granted
        </Directory>
</VirtualHost>

5.创建/apps/data目录后将wordpress的程序文件解压缩至此目录在mariadb中创建库及账号,此前文章有介绍到wordpress的部署方法。并配置nfs编辑/etc/exports文件如下:

/apps/data *(rw,all_squash,anonuid=48)

执行exportfs  -ar导出所有目录

6.配置Nginx static web server配置如下:

server {
    listen       80;
    server_name  www.abc.com;
    location / {
        root   /apps/data/wordpress;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}                                                  
}

7.NFS-client的配置将NFS-server的导出目录挂载至/apps/data编辑/etc/fstab:

192.168.20.109:/apps/data /apps/data nfs rw,defaults 0 0

整个配置完成做一下测试访问:

以上内容还有待完善。

时间: 2025-01-03 12:31:43

Nginx LB+keepalived+varnish+NAMP架构部署wordpress实现动静分离的相关文章

nginx反代varnish缓存服务器实现后端amp动静分离架构

1.前端nginx做调度器及反代服务器,将用户的请求调度至后端的两台varnish,缓存调度算法使用一致性hash算法保证缓存命中率: 2.两台varnish反向代理用户请求至三个(组)后端主机,分别为存储静态资源(htm,html,css,js),应用程序服务器(可以部署wordpress或Discuz!),图片统一保存至图片服务器: 3.用户登录后,可以通过wordpress发布新的博文,并且可以上传图片: 4.如果后端主机全部宕机,varnish可以使用过期缓存响应客户端:        

varnish的缓存加速,以及动静分离,负载均衡

一个简单的拓扑如上,varnish1 上还同时开了nginx,用来做静态的http,app1和app2 是nginx+fastcgi,这个拓扑主要做的是Discuz!论坛的动静分离,以及app的负载均衡,varnish起到个反向代理和缓存加速的功能. varnish1:192.168.1.151,172.16.0.51 app1:172.16.0.52 app3:172.16.0.54 varnish 简介 varnish的缓存方式: 1.malloc,通过malloc获取内存,简单,速度. 2

【Linux运维-集群技术进阶】Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Webserver集群

额.博客名字有点长.. . 前言 最终到这篇文章了,心情是有点激动的. 由于这篇文章会集中曾经博客讲到的全部Nginx功能点.包含主要的负载均衡,还有动静分离技术再加上这篇文章的重点.通过Keepalived实现的HA(High Available).为什么要实现高可用呢?曾经在搭建的时候仅仅用了一台Nginxserver,这种话假设Nginxserver宕机了,那么整个站点就会挂掉.所以要实现Nginx的高可用,一台挂掉还会有还有一台顶上去.从而保证站点能够持续的提供服务. 关于负载均衡和动静

实践出真知——一文教你搭建Nginx+Tomcat集群,实现负载均衡及动静分离

实践出真知--一文教你搭建Nginx+Tomcat集群,实现负载均衡及动静分离 前言 ? 想必大家对于Nginx和Tomcat都非常熟悉了,Nginx的应用非常广泛,不仅是对web静态资源非常友好,而且也是非常实用的反向代理和负载均衡软件.结合后端Tomcat的服务,从而搭建Nginx+Tomcat集群. ? 对于直接想要实践的朋友而言可以获取本文的链接中的软件包后直接看第三备份的内容. 一.集群搭建结构及拓扑 1.1集群架构图示 Nginx+Tomcat集群的结构示意图如下: 1.2系统环境与

HAProxy+KeepAlived实现web服务高可用、动静分离等

大致规划: 主机 IP 描述 VIP 192.168.0.222 对外提供高可用IP haproxy+keepalived (node1) 192.168.0.111 haproxy为后端两台WEB服务的做动静分离:keepalived为haproxy做高可用. haproxy+keepalived (node2) 192.168.0.112 WEB                (node3) 192.168.0.113 提供静态请求响应 Apache+PHP+MySQL   (node4)

【金】nginx+uwsgi+django+python 应用架构部署

网上有很多这种配置,但就是没一个靠普的,费了好大的力气才完成架构部署.顺便记录一下. 一.部署前的说明 先安装好 python,django,uwsgi,nginx软件后.后配置运行的软件是分先后的. 第一个.配置好django项目的/opt/web/testsite/目录和文件 第二个.配置好uwsgi.ini 文件并运行,运行后,会在/opt/web/testsite/目录生成一个tests.sock文件(/opt/web/testsite/tests.sock),用于nginx服务器调用,

Nginx加多个tomcat实现负载均衡,动静分离

一:Nginx+Tomcat的动静分离 所谓动静分离就是通过nginx(或apache等)来处理用户端请求的图片.html等静态的文件,tomcat(或weblogic)处理jsp.do等动态文件,从而达到动静页面访问时通过不同的容器来处理. nginx处理静态页面效率远高于tomcat,而tomcat擅长动态页面处理,这样一来就能更好的提高并发,处理性能. 页面压力测试 ab -n 1000 -c 200 http://10.10.54.157/index.html 二:具体步骤 //环境介绍

nginx+uwsgi+django+python 应用架构部署

系统centos6.5 1,安装配置nginx 和Python yum install nginx python 默认安装的是2.6 需要升级到2.7见教程 2,django 安装 下载当前最新的版本:Django-1.8.5.tar.gz $ wget --no-check-certificate https://www.djangoproject.com/download/Django-1.8.5.tar.gz (备注:--no-check-certificate 免证书认证,不然下载不了h

Haproxy+Keepalived高可用环境部署梳理(主主和主从模式)

Nginx.LVS.HAProxy 是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,通常会结合Keepalive做健康检查,实现故障转移的高可用功能. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59