部署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博客的各种数据

三、架构图

四、步骤概述
  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,设置管理员的用户名密码,点击安装

  • 输入用户名密码,即可进入博客网站的后台页面。

  • 默认风格的博客页面首页,还是比较好看滴

8. 配置DNS负载均衡

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

到这里基于LAMP+NFS架构的双Web服务器、动静分离网站就搭建完成了。
双WEB服务器架构的好处在于如果有一台服务器宕机不会是整个网站瘫痪。

NFS共享存储的好处在于,DNS负载均衡后,不论用户被分配到哪台主机上,都能看到相同的页面得到相同的结果。

原文出处:linuxidc -> http://www.linuxidc.com/Linux/2017-10/147740.htm

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。