LNMP实现双主机负载均衡

  • A+
所属分类:运维教程

项目需求

网站创建之初因访问量较少,只放置在一台服务器上。随着访问量的增加,一台服务器已无法负载,打算增加一台服务器做负载均衡。

项目分析

常见的负载均衡有两种,一种基于四层为LVS,一种基于七层为Nginx。两种负载均衡都需要三台服务器才能发挥性能,有悖于预算中的两台服务器,故打算使用动静分离加远程数据库来实现负载均衡。

网络拓扑

LNMP实现双主机负载均衡

设备信息

  1. 客户端192.168.1.250,仅需要浏览器;
  2. 服务器A192.168.1.1,需安装Nginx+PHP,负责分发和动态文件的处理;
  3. 服务器B192.168.1.2,需安装Nginx+MySQL,负责静态文件处理和数据库存储。

实施前提

如上安装好对应的服务,程序以WordPress为例。

项目实施

  • 动静分离

修改服务器A的Nginx配置文件,内容如下:

  1. server
  2. {
  3.     listen 80;
  4.     server_name birdteam.net;
  5.     index index.php;
  6.     root /www/wwwroot/birdteam.net;
  7.     include enable-php-70.conf;
  8.     include /www/server/panel/vhost/rewrite/birdteam.net.conf;
  9.     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
  10.     {
  11.         proxy_pass http://192.168.1.2;
  12.     }
  13. }
  • 数据调用

wp-config.php文件中

  1. define('DB_HOST', 'localhost');

改为

  1. define('DB_HOST', '192.168.1.2');
  • 文件同步

将WordPress中的静态文件,扩展名为gif|jpg|jpeg|png|bmp|swf|js|css复制到服务器B对应的目录中。

数据走向

  1. 服务器组对外公布服务器A的IP地址;
  2. 客户访问服务器A的IP地址;
  3. 服务器A根据请求判断动静解析都有哪些;
  4. 根据请求本地处理动态内容,并把静态请求转发至B;
  5. 如果动态内容需要数据库的支持,则会根据指定地址,找B读取;
  6. B将静态请求、数据信息发送给A,A将所有请求整合返回给客户端。

附加内容

文件同步可使用NFS服务,或RSYNC,这样效率更高!

  • 我的微博
  • 这是微博的扫一扫
  • weinxin
  • 微信公众
  • 微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:7   其中:访客  4   博主  3

    • avatar Azura 2

      老铁设备信息3有点粗心了吗nginx

        • avatar Penn Admin

          @Azura 多谢提醒!

        • avatar 小石博客 2

          暂时还用不到(还有穷病)?

          • avatar Begin 6

            有趣~

              • avatar Penn Admin

                @Begin 关键有用!

              • avatar Galen 4

                签到成功!签到时间:今日的下午9:20:35,每日打卡,生活更精彩哦!