LAMP部署之NFS共享網絡存儲

LAMP部署之NFS共享網絡存儲

架構圖:

29.png

說明:

    當一個網站的訪問量上來之后,一臺WebServer服務器無法應付那么高的并發,需要橫向擴展Web服務器數量,

    當我們訪問網頁,向Web服務器請求資源時,資源主要分為靜態資源和動態資源(程序處理),

    如果擴展Web服務器的數量,就需要考慮每一臺Web服務器上的靜態資源數據是否一致,

    解決方案是采用共享網絡存儲NFS來為前端各個Web服務器提供靜態資源存儲,這樣就避免了靜態資源不一致的問題,

    在一定業務承載量上是可以的,業務規模更大就需要采用分布式文件系統,

實驗拓撲說明:

    1、編譯安裝兩臺httpd服務器,掛載同一臺NFS存儲,存放網站資源,

    2、在兩臺httpd服務器上,編譯安裝php,采用fpm的方式關聯httpd工作,

    3、httpd服務器用到后端一臺Mariadb,二進制解壓縮安裝使用,

    4、采用httpd虛擬主機的方式提供網站,

    5、case1:Mariadb,    ns1:NFS,    case2:httpd+php,    case4:httpd+php

    6、測試網站采用DZ,順便部署一下LogAnalyzer,

實驗步驟(全部采用Centos 6.7_X86-64):

    1、虛擬機環境初始化,

    2、NFS準備(每一臺Web服務器掛載共享存儲之后,對文件的訪問權限為root),

    3、準備Mariadb服務器,

    4、編譯安裝httpd,

    5、編譯安裝php,

    6、上傳網站資源,初始化

    7、修改DNS,測試

    8、測試LogAnalyzer,

開始實驗:

一、虛擬機環境初始化,

    虛擬機恢復快照,略過

二、NFS準備,

    在ns1虛擬機新增一塊磁盤/dev/sdb分區格式化操作,并且啟動NFS,設置掛載點

    [root@ns1 ~]# fdisk /dev/sdb
    [root@ns1 ~]# fdisk -l | grep /dev/sdb1    
    /dev/sdb1               1        2610    20964793+  83  Linux
    [root@ns1 ~]# mke2fs -t ext4 /dev/sdb1
    [root@ns1 ~]# mkdir /www
     [root@ns1 ~]# mount /dev/sdb1 /www
    [root@ns1 ~]# vi /etc/fstab    #新增,開機自動掛載
     /dev/sdb1               /www                    ext4    defaults        0 0
    [root@ns1 ~]# yum install nfs* rpcbind
    [root@ns1 ~]# vi /etc/exports
     /www/   192.168.3.20/24(rw,async,no_root_squash)        
     /www/   192.168.3.21/24(rw,async,no_root_squash)
     [root@ns1 ~]# vi /etc/idmapd.conf    #nfs4新特性,會去找名稱解析,當解析不對,所有掛載客戶端權限都會被壓縮成nobody,所以需要掛載的客戶端需要修改此文件
         #Domain = local.domain.edu
            Domain = neolinux.com
        [root@ns1 ~]# showmount -e    #查看掛載目錄
            Export list for ns1.neolinux.com:
            /www 192.168.3.21/24,192.168.3.20/24
        [root@ns1 ~]# mkdir /www/htdocs/dz -p

三、準備Mariadb數據庫,

    準備Mariadb并作初始化

        [root@case1 local]# tar xf mariadb-5.5.46-linux-x86_64.tar.gz
        [root@case1 local]# ln -sv /usr/local/mariadb-5.5.46-linux-x86_64 /usr/local/mysql
        `/usr/local/mysql' -> `/usr/local/mariadb-5.5.46-linux-x86_64'
        [root@case1 local]# cd mysql
        [root@case1 mysql]# cat INSTALL-BINARY     #查看mysql安裝步驟
        shell> groupadd mysql
        shell> useradd -g mysql mysql
        shell> cd /usr/local
        shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
        shell> ln -s full-path-to-mysql-VERSION-OS mysql
        shell> cd mysql
        shell> chown -R mysql .
        shell> chgrp -R mysql .
        shell> scripts/mysql_install_db --user=mysql
        shell> chown -R root .
        shell> chown -R mysql data
        shell> bin/mysqld_safe --user=mysql &
        [root@case1 mysql]# groupadd -r mysql
        [root@case1 mysql]# useradd -g mysql -r -M -s /sbin/nologin mysql
        [root@case1 mysql]# chown -R mysql:mysql .
        [root@case1 mysql]# mkdir /mydata/data -p
        [root@case1 mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/
        ...安裝完成,可以檢查/mydata/data目錄多了一個文件
        [root@case1 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysq
        [root@case1 mysql]# chkconfig --add mysql
        [root@case1 mysql]# chkconfig mysql on
        [root@case1 mysql]# mkdir /etc/mysql
        [root@case1 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf
        [root@case1 mysql]# vi /etc/mysql/my.cnf
        thread_concurrency = 8    #CPU核心數*2
        datadir=/mydata/data      #定義存放數據的目錄
        [root@case1 mysql]# echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
        [root@case1 mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql
        [root@case1 mysql]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
        [root@case1 mysql]# ldconfig /etc/ld.so.conf.d/mysql.conf
        [root@case1 mysql]# vi /etc/man.config
        MANPATH /usr/local/mysql/man
        [root@case1 mysql]# service mysql start
        Starting MySQL... SUCCESS! 
        [root@case1 mysql]# mysql    #數據庫初始化
                MariaDB [mysql]> DELETE FROM user where user='';    #刪除匿名用戶
                MariaDB [mysql]> UPDATE user SET password=PASSWORD('manager1') where user='root';    #修改root密碼
                MariaDB [(none)]> GRANT ALL ON dz.* TO 'dzuser'@'192.168.3.%' IDENTIFIED BY 'dzpassword';    #為DZ網站數據庫創建用戶
                MariaDB [mysql]> FLUSH PRIVILEGES;    #刷新權限
                MariaDB [mysql]> \q    
                Bye

四、編譯安裝httpd,(另外一臺也類似)

    準備安裝軟件包:apr-1.5.2.tar.gz,apr-util-1.5.4.tar.gz,httpd-2.4.18.tar.gz,php-5.4.26.tar.gz

    [root@case2 src]# tar xf apr-1.5.2.tar.gz 
     [root@case2 src]# cd apr-1.5.2
     [root@case2 apr-1.5.2]# ./configure --prefix=/usr/local/apr
       config.status: executing libtool commands
       rm: cannot remove `libtoolT': No such file or directory    #編譯APR時會有一個BUG,不用管他,如果要解決,可以編輯configure腳本,修改$RM='$RM' 為$RM='$RM -f'
       config.status: executing default commands
     [root@case2 apr-1.5.2]# make -j 4 && make install
     [root@case2 apr-1.5.2]#cd ..
     [root@case2 src]# tar xf apr-util-1.5.4.tar.gz 
        [root@case2 src]# cd apr-util-1.5.4
        [root@case2 apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
        [root@case2 apr-util-1.5.4]# make -j 4 && make install
        [root@case2 httpd-2.4.18]# yum install pcre-devel
        [root@case2 httpd-2.4.18]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event
        [root@case2 httpd-2.4.18]# make -j 4 && make install
        [root@case2 httpd-2.4.18]# echo "export PATH=/usr/local/apache/bin:$PATH" > /etc/profile.d/httpd.conf
        [root@case2 httpd-2.4.18]# . /etc/profile.d/httpd.conf
        [root@case2 httpd-2.4.18]# ln -sv /usr/local/apache/include /usr/include/httpd24
        [root@case2 httpd-2.4.18]# vi /etc/rc.d/init.d/httpd
            apachectl=/usr/local/apache/bin/apachectl
            httpd=${HTTPD-/usr/local/apache/bin/httpd}
            prog=httpd
            pidfile=${PIDFILE-/var/run/httpd24/httpd.pid}
            lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
        [root@case2 httpd-2.4.18]# chmod +x /etc/rc.d/init.d/httpd 
        [root@case2 httpd-2.4.18]# chkconfig --add httpd
        [root@case2 httpd-2.4.18]# chkconfig httpd on
        [root@case2 httpd-2.4.18]# vi /etc/man.config
            MANPATH /usr/local/apache/man
        [root@case2 httpd-2.4.18]# vi /etc/httpd24/httpd.conf
            PidFile "/var/run/httpd24/httpd.pid"
            Listen 192.168.3.20:80
            ServerName localhost:80
            LoadModule proxy_module modules/mod_proxy.so
            LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
            #DocumentRoot "/usr/local/apache/htdocs"
            AddType application/x-httpd-php  .php
            AddType application/x-httpd-php-source .phps
            Include /etc/httpd24/extra/httpd-vhosts.conf
            DirectoryIndex index.php index.html

五、編譯安裝PHP(另外一臺類似)

    在相同的HTTPD服務器上安裝PHP,并且掛載存儲

        [root@case2 src]# tar xf php-5.4.26.tar.gz
        [root@case2 src]# cd php-5.4.26
        [root@case2 php-5.4.26]# yum install pcre-devel openssl-devel libxml2-devel php-gd freetype-devel libjpeg-devel libpng-devel bzip2-devel libmcrypt-devel -y
        [root@case2 php-5.4.26]# ./configure --prefix=/usr/local/php --with-openssl --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
        [root@case2 php-5.4.26]# make -j 4 && make install
        [root@case2 php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
        [root@case2 php-5.4.26]# chmod +x /etc/rc.d/init.d/php-fpm
        [root@case2 php-5.4.26]# chkconfig --add php-fpm
        [root@case2 php-5.4.26]# chkconfig php-fpm on
        [root@case2 php-5.4.26]# cp php.ini-production /etc/php.ini
        [root@case2 php-5.4.26]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
        [root@case2 php-5.4.26]# vi /usr/local/php/etc/php-fpm.conf
                pid = /usr/local/php/var/run/php-fpm.pid
                listen = 192.168.3.21:9000
                pm.max_children = 50    #php最大子進程
                pm.start_servers = 8    #php啟動進程
                pm.min_spare_servers = 5    #最少空閑進程
                pm.max_spare_servers = 10    #最大空閑進程
        [root@case2 php-5.4.26]# service php-fpm start
            Starting php-fpm  done
        [root@case2 ~]# vi /etc/fstab
            192.168.3.10:/www       /www                    nfs     defaults,_netdev 0 0
        [root@case2 ~]# yum install nfs-utils
        [root@case2 ~]# vi /etc/idmapd.conf
            Domain = neolinux.com
        [root@case2 ~]# mount 192.168.3.10:/www /www
        [root@case2 ~]# ll /www
        total 20
        drwxr-xr-x 3 root root  4096 Jun 19 18:21 htdocs
        drwx------ 2 root root 16384 Jun 19 18:03 lost+foun

六、上傳網站資源,并初始化(具體可以參考前一篇博客)

    [root@case2 src]# unzip Discuz_X3.2_SC_UTF8.zip
    [root@case2 dz]# cp -ar upload/* /www/htdocs/dz    #網站初始化就不列出。
    [root@case2 dz]# cd /www/htdocs/dz
        修改DNS信息:
        dz      IN      A       192.168.3.20
        dz      IN      A       192.168.3.21

七、修改DNS,測試查看

    修改了DNS在GOOGLE瀏覽器可以查看,但是火狐不行,用IP直接訪問,也是沒有任何問題

30.png

31.png

通過兩個IP都可以訪問到,并且看到的靜態資源都是一樣。

八、測試練習LogAnalyzer

    Centos6采用rsyslog做日志收集工具,這次我們采用ns1服務器做日志收集,并且把日志發送給Mariadb數據庫,

    接著在httpd服務器上部署Loganalyzer日志前端查看工具查看,與分析。

    日志收集工具需要安裝rsyslog-mysql

    我們先準備Loganalyzer.

    [root@case2 src]# mkdir loganalyzer
        [root@case2 src]# tar xf loganalyzer-3.6.5.tar.gz -C loganalyzer
        [root@case2 src]# cd loganalyzer/loganalyzer-3.6.5/
        [root@case2 loganalyzer-3.6.5]# cp -ar src/* /www/htdocs/log/
        [root@case2 loganalyzer-3.6.5]# cp contrib/*.sh /www/htdocs/log/
        [root@case2 loganalyzer-3.6.5]# chmod +x /www/htdocs/log/*.sh
        [root@case2 loganalyzer-3.6.5]# cd /www/htdocs/log/

    時間同步,在ns1服務器上安裝ntp

            [root@ns1 ~]# rpm -qa ntp*
                ntpdate-4.2.6p5-10.el6.centos.1.x86_64
                ntp-4.2.6p5-10.el6.centos.1.x86_64
            [root@ns1 ~]# vi /etc/ntp.conf    #這里我們的NTP服務器去哪里同步時間呢?可以手動設定,
                restrict 192.168.3.10         
            [root@ns1 ~]# ntpq -p            #我們的NTP服務器當然是去互聯網同步時間咯
             remote           refid      st t when poll reach   delay   offset  jitter
            ==============================================================================
             dns.sjtu.edu.cn .INIT.          16 u    -   64    0    0.000    0.000   0.000
            +news.neu.edu.cn 202.118.1.46     2 u    8   64  177   78.251   -5.149   8.618
            +202.118.1.130   202.118.1.46     2 u    1   64  173   82.994   -7.309   7.136
            *dns1.synet.edu. 202.118.1.48     2 u   70   64  176   76.562   -8.906   4.467
            ==============================================================================
            客戶端:同步時間采用定時計劃任務,都太客戶端都這樣設定。
            [root@case1 mysql]# yum install ntpdate -y
            [root@case1 mysql]# crontab -l
                0 1 * * * ntpdate 192.168.3.10
            [root@case1 mysql]# date    #檢查時間是否同步

    收集日志的數據庫服務器授權用戶使用數據庫:

                MariaDB [(none)]> GRANT ALL ON Syslog.* TO 'syslog'@'192.168.3.%' IDENTIFIED BY 'syslog';

    配置日志服務器:

            [root@ns1 log]# rpm -ql rsyslog-mysql        #查看rsyslog-mysql模塊
                /lib64/rsyslog/ommysql.so
                    /usr/share/doc/rsyslog-mysql-5.8.10
                    /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql    #可以使用此模版創建數據庫
                [root@ns1 log]# mysql -usyslog -psyslog -h192.168.3.11 < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql    #通過此文件在遠程數據庫中定義庫,表,字段等信息,
        $ModLoad ommysql    #加載rsyslog的mysql模塊
        $ModLoad imudp     #UDP收集日志                
        $UDPServerRun 514
        $ModLoad imtcp     #TCP收集日志                
        $InputTCPServerRun 514
        *.*   :ommysql:192.168.3.11,Syslog,syslog,syslog    #*.*表示所有類型所有級別的日志,發送到ommysql模塊中的mysql服務器,地址是192.168.3.10,數據庫名稱為Syslog,帳號密碼為syslog

    配置日志服務器客戶端:

        *.*    @@192.168.3.10:514    #將所有日志發送到日志服務器,接著重啟rsyslog服務

    HTTPD服務器新增加vhosts配置:

<VirtualHost 192.168.3.21:80>
    ServerAdmin logadmiin@neolinux.com
    DocumentRoot "/www/htdocs/log"
    ServerName log.neolinux.com
    ErrorLog "/www/htdocs/logs/log-error_log"
    CustomLog "/www/htdocs/logs/log-access_log" common
    ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.3.21:9000/www/htdocs/log/$1
    <Directory "/www/htdocs/log">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>
并且DNS新增:
log     IN      A       192.168.3.21

     Loganalyzer服務器初始化:

    http://log.neolinux.com/install.php

32.png

33.png

OK,實驗暫時到此。


原創文章,作者:nice_neo_linux,如若轉載,請注明出處:http://www.www58058.com/18778

(0)
nice_neo_linuxnice_neo_linux
上一篇 2016-06-20
下一篇 2016-06-20

相關推薦

  • mysql主從復制

    MySQL主從復制        主從復制原理: mysql主從同步其實是一個異步復制的過程,要實現復制首先在master上開啟bin-log日志功能。整個過程需要開啟3個線程, 分別是master開啟IO線程,slave開啟IO線程和SQL線程. (1) 在slave服務器執行start…

    Linux干貨 2016-06-26
  • Linux-進程管理

    本小節介紹  1、進程的描述  2、用戶怎么樣管理進程  3、進程管理的命令 進程的概念        內核的功能:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等。        Pro…

    2017-07-02
  • 網絡總結

    linux 網絡配置 linux的網絡服務是由內核提供。 網卡在內核看來就是個設備,各種網絡配置不在網卡上。各種配置都是針相應網絡管理程序使用的。 不同發行版的網絡管理工具也是不一樣(net-tools/iproute)。網絡服務的管理程序(守護進程)也是不一樣(腳本/程序)。 網絡管理工具是將用戶的設定直接傳遞給內核的網絡服務,及時有效。 很多管理工具可以…

    Linux干貨 2016-09-09
  • 馬哥教育網絡班20期+第二周博客作業

    1.Linux上的文件管理類命令 2.bash命令學習總結 3.bash命令實例 4.元數據與時間戳 5.命令別名 6.練習題6~12 1.Linux上的文件管理類命令        Linux上的文件管理類命令可分為查看類、目錄管理類、權…

    Linux干貨 2016-06-19
  • 磁盤配額配置

     實現磁盤配額 1、啟用home家目錄下的磁盤配額掛載選項vim /etc/fstab #在vim下可通過r!blkid /dev/sdb1調取UUIDUUID=aqvKA0-bL5B-MsuF-PIzQ-fl3P-G7E0-j3UlOI    /home   ext4  &nb…

    Linux干貨 2016-08-30
  • 系統管理之磁盤管理(二)磁盤配額,RAID,LVM

    上篇博文給大家介紹了磁盤和文件系統的基礎知識,也是最基本的使用.在實際生產環境中,對于磁盤的使用,要求穩定,靈活,那么下面給大家分享下磁盤的高級用法.磁盤配額,RAID,LVM等相關知識. 1.磁盤配額2.磁盤RAID3.LVM 一.磁盤配額 1.概述: ? 在內核中執行 ? 以文件系統為單位啟用 ? 對不同組或者用戶的策略不同…

    Linux干貨 2016-09-05
欧美性久久久久