天天看點

部署LAMP+NFS實作雙Web伺服器負載均衡一、需求分析二、需求實作:三、架構圖四、步驟概述五、詳細過程

部署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負載均衡後,不論使用者被配置設定到哪台主機上,都能看到相同的頁面得到相同的結果。