阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

部署LAMP+NFS实现双Web服务器负载均衡

205次阅读
没有评论

共计 5781 个字符,预计需要花费 15 分钟才能阅读完成。

部署 LAMP+NFS 实现双 Web 服务器负载均衡

一、需求分析

1. 前端需支持更大的访问量,单台 Web 服务器已无法满足需求了,则需扩容 Web 服务器;
2. 虽然动态内容可交由后端的 PHP 服务器执行,但静态页面还需要 Web 服务器自己解析,那是否意味着多台 Web 服务器都需要在各自的系统中都存有一份静态页面数据呢?那么如果能将静态页面集中存放,所有 Web 服务器都来集中地取文件,对于文件的一致性就有了保障,这个集中地就叫做“文件共享服务器”;

二、需求实现:

1.web1 充当 http 服务器和 DNS 解析服务器,客户端到 web1 和 web2 的请求,如果是静态资源请求通过 php 主机的 NFS 服务挂载的存储返回结果
2.web1 和 web2 对于客户端动态资源请求都反向代理到后端 php 服务器进行执行后返回结果
3.web1 和 web2 实现 DNS 轮询,客户端访问博客网站是负载均衡的。
4. 建立 wordpress 博客
5. 数据库存储 wordpress 博客的各种数据

三、架构图

部署 LAMP+NFS 实现双 Web 服务器负载均衡

四、步骤概述

1. 部署 LAMP 环境、配置 NFS 服务器
2.web1、web2、php 服务器全部挂载 NFS 共享目录为网站根目录
3. 配置 httpd 实现动静分离
4. 配置 DNS 实现负载均衡

五、详细过程

1.web1、web2 服务器编译安装 Apache

# 安装依赖包
yum groupinstall "development tools"
yum install openssl-devel expat-devel pcre-devel 
#
# 解压文件
tar xvf apr-1.6.2.tar.gz 
tar xvf apr-util-1.6.0.tar.gz 
tar xvf httpd-2.4.27.tar.bz2 
cp -r apr-1.6.2 httpd-2.4.27/srclib/apr
cp -r apr-util-1.6.0 httpd-2.4.27/srclib/apr-util
#
# 编译安装
cd httpd-2.4.27/
./configure \
--prefix=/app/httpd24 \
--sysconfdir=/etc/httpd24 \
--enable-so --enable-ssl \
--enable-rewrite --with-zlib \
--with-pcre --with-included-apr \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork
#
make && make install
#
# 配置环境变量
vim /etc/profile.d/lamp.sh
    PATH=/app/httpd24/bin/:$PATH
. /etc/profile.d/lamp.sh
#
# 启动服务
apachectl start

2. 数据库服务器二进制安装 mariadb

# 解压文件
tar xvf mariadb-10.2.8-linux-x86_64.tar.gz  -C /usr/local/
cd /usr/local
#
# 创建软连接,mariadb 在 /usr/local 下必须名为 MySQL,可以创建软连接,可以改名
ln -s mariadb-10.2.8-linux-x86_64/ mysql
#
# 创建用户
useradd -r -m -d /app/mysqldb -s /sbin/nologin mysql 
cd mysql/
#
# 初始化数据库
scripts/mysql_install_db --datadir=/app/mysqldb --user=mysql
#
# 创建配置文件
mkdir /etc/mysql
cp support-files/my-large.cnf   /etc/mysql/my.cnf
#
# 修改配置文件,指定数据库存放路径
vim /etc/mysql/my.cnf
[mysqld]
datadir = /app/mysqldb             在 mysqld 下添加这三行
innodb_file_per_table = ON
skip_name_resolve = ON
#
# 复制启动脚本,添加开机自动启动
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list 
service mysqld start
#
# 创建日志目录
mkdir /var/log/mariadb
chown mysql /var/log/mariadb/
#
# 添加环境变量
vim /etc/profile.d/lamp.sh 
   PATH=/app/httpd24/bin/:/usr/local/mysql/bin/:$PATH
. /etc/profile.d/lamp.sh
#
# 调用安全加固脚本,加固数据库。汉字为每一项的翻译
mysql_secure_installation
  是否设置 root 密码
  输入密码
  确认密码
  是否设置匿名用户
  是否允许 root 远程登录
  删除 test 数据库
  现在是否生效

3.PHP 应用服务器编译安装 PHP7

# 安装依赖包
yum install libxml2-devel bzip2-devel libmcrypt-devel gcc openssl-devel
tar xvf  php-7.1.7.tar.bz2
#
# 编译安装
cd php-7.1.7.tar.bz2
./configure \
--prefix=/app/php \
--enable-mysqlnd \                          #mysqlnd 指明 Mysql 不再本地
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--enable-mbstring \
--with-freetype-dir  \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm \                              #用 FPM 模式
--with-mcrypt \
--with-config-file-path=/etc/php \
--with-config-file-scan-dir=/etc/php.d \
--with-bz2
#
# 创建 PHP 配置文件
mkdir /etc/php/
cp php.ini-production /etc/php/php.ini
#
# 复制服务脚本,添加开机自动启动
cp   sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig --list  php-fpm
#
# 创建 fpm 的配置文件
cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cd /app/php/etc/php-fpm.d/
cp www.conf.default www.conf
vim www.conf
    listen = 172.18.68.23:9000              #设置监听的IP,注释监听所有,只写端口监听鄋
    ;listen.allowed_clients = 127.0.0.1.    #把这项注释掉,分号为注释
systemctl start php-fpm

4. 配置 NFS 服务器

NFS 服务器的配置特别简单,最重要的时配置完后就赶紧将 NFS 共享目录挂载至 web1、web2、PHP 服务器的网站根目录。

mkdir -pv /app/nfs/web    # 创建共享目录,此目录为网站的根目录,实现统一管理。
vim /etc/exports
  /app/nfs/web 172.18.0.0/16(ro,sync,root_squash,no_all_squash)
# 允许 172.18.0.1 网段挂载 NFS 共享,如果要提高安全性应该控制到主机
  • Web1 服务器

    mount 172.18.68.24:/app/nfs/web /app/httpd24/htdocs        #/app/httpd24/htdocs 为 httpd.conf 中的根目录
  • Web2 服务器

    mount 172.18.68.24:/app/nfs/web /app/httpd24/htdocs        #/app/httpd24/htdocs 为 httpd.conf 中的根目录
  • PHP 应用服务器

    mkdir /app/httpd24/htdocs                                  #PHP 没有根目录,/app/httpd24/htdocs 为 NFS 的挂载点。
    mount 172.18.68.24:/app/nfs/web /app/httpd24/htdocs        

5. 配置 Apache 实现动静分离

  • 加载模块

    vim /etc/httpd24/httpd.conf
        LoadModule proxy_module modules/mod_proxy.so                       # 取消两行的注释,加载两模块
        LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
  • 动静分离
    在配置文件的末尾追加这四行,利用代理将所有以.php 结尾的文件交给 PHP 服务器处理,实现动静分离

    vim /etc/httpd24/httpd.conf
      AddType application/x-httpd-php .php
      AddType application/x-httpd-php-source .phps
      ProxyRequests Off 关闭正向代理
      ProxyPassMatch  ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1  
    # 要确保 PHP 服务器中有这个目录,(在 NFS 中创建这个目录,且将 NFS 挂载至此目录。)
    apachectl restart

6. 部署 wordpress 博客

因为 web1、web2、PHP 服务器都使用 NFS 共享的目录作为根目录,所以只需要将 wordpress 博客系统部署在 NFS 服务器上即可让所有服务器得到同样的数据。

  • 安装博客程序

    # 解压博客程序
    tar xvf wordpress-4.8.1-zh_CN.tar.gz  -C /app/httpd24/htdocs
    cd /app/httpd24/htdocs
    mv wordpress/ blog/
    # 创建配置文件
    cd /app/httpd24/htdocs/blog/
    cp wp-config-sample.php  wp-config.php
  • 配置数据库
    wordpress 需要数据库,所以在此先创建一个 wordpress 专用的数据库,且创建授权用户。

    mysql -uroot -pCentOS
    create datebase wpdb;
    grant all on wpdb.* to wpuser@'172.18.68.%' identified by 'centos';
  • 配置 wordpress 连接数据库

    # 编辑配置文件,写入创建的 IP、数据库、与用户性
    vim wp-config.php
    define('DB_NAME', 'wpdb');
    #
    /** MySQL 数据库用户名 */
    define('DB_USER', 'wpuser');
    #
    /** MySQL 数据库密码 */
    define('DB_PASSWORD', 'centos');
    #
    /** MySQL 主机 */
    define('DB_HOST', 'localhost');

7. 登录测试

  • 浏览器打开,http://IP,设置管理员的用户名密码,点击安装
    部署 LAMP+NFS 实现双 Web 服务器负载均衡
  • 输入用户名密码,即可进入博客网站的后台页面。
    部署 LAMP+NFS 实现双 Web 服务器负载均衡
  • 默认风格的博客页面首页,还是比较好看滴、
    部署 LAMP+NFS 实现双 Web 服务器负载均衡

8. 配置 DNS 负载均衡

购买了单独域名后,在后台控制面板中添加两条 A 记录,就可以达到负载均衡。

到这里基于 LAMP+NFS 架构的双 Web 服务器、动静分离网站就搭建完成了。
双 WEB 服务器架构的好处在于如果有一台服务器宕机不会是整个网站瘫痪。
NFS 共享存储的好处在于,DNS 负载均衡后,不论用户被分配到哪台主机上,都能看到相同的页面得到相同的结果。

下面关于 LAMP 相关 的内容你可能也喜欢

LAMP 平台安装 Xcache 和 Memcached 加速网站运行  http://www.linuxidc.com/Linux/2015-06/118835.htm

CentOS 7 下搭建 LAMP 平台环境  http://www.linuxidc.com/Linux/2015-06/118818.htm

CentOS 7.3 下配置 LAMP 实现 WordPress  http://www.linuxidc.com/Linux/2017-07/145947.htm

Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境  http://www.linuxidc.com/Linux/2014-10/107924.htm

LAMP 结合 NFS 构建小型博客站点  http://www.linuxidc.com/Linux/2015-08/121029.htm

CentOS7 下安装部署 LAMP 环境  http://www.linuxidc.com/Linux/2016-04/130653.htm

CentOS 7 上安装(LAMP)服务 Linux,Apache,MySQL,PHP  http://www.linuxidc.com/Linux/2017-05/143868.htm

Ubuntu Server 14.04 LTS 下搭建 LAMP 环境图文详解  http://www.linuxidc.com/Linux/2016-12/138758.htm

Ubuntu Server 16.04 下配置 LAMP 环境 http://www.linuxidc.com/Linux/2016-12/138757.htm

在 Ubuntu 17.04 上安装搭建 LAMP 组件环境  http://www.linuxidc.com/Linux/2017-07/145644.htm

CentOS 6.7 编译安装 LAMP 详解 http://www.linuxidc.com/Linux/2017-03/141244.htm

Ubuntu 16.04 搭建 LAMP 开发环境 http://www.linuxidc.com/Linux/2016-10/136327.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147740.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5781字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中