需求說明
搭建LAMP平台部署應用discuz,要求如下:
1、為了減輕單個伺服器壓力,部署兩台WEB伺服器,使用LVS-DR模式對伺服器實作負載均衡。
2、将MySQL伺服器和AP進行分離,兩台AP通路同一台Mysql伺服器,實作資料庫資料一緻性。
3、AP的網頁檔案都存儲在NFS共享存儲上,實作網頁檔案一緻性。
架構缺陷:
LVS單點,Mysql單點,NFS單點,交換機單點,這些裝置一旦有一個出現問題,就會導緻網站通路出錯;當然也有很多解決方法,如LVS可以lvs+keeplive避免單點,Mysql可以做主從同步,NFS可以做分布式檔案系統,交換機可以做備援鍊路。這些會在後期博文,給出文章。
實驗拓撲
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmL5kzMjdVe1cHdUVlSBF0XWlkV4JTVR5mVx02bpt0dvw1Q58CXEZzLcJDMN9CXyAzcml3dvwVbvNmLvR3YxUjLzM3Lc9CX6MHc0RHaiojIsJye.jpg)
部署NFS
安裝NFS,系統預設自帶
[[email protected] ~]# rpm -qa | grep nfs
nfs-utils-1.2.3-54.el6.x86_64
nfs-utils-lib-1.1.5-9.el6.x86_64
nfs4-acl-tools-0.3.3-6.el6.x86_64
設定NFS共享,這個共享的目錄以後就是存放web頁面檔案的地方,而且需要保證使用者有寫權限。
[[email protected] ~]# mkdir /LAP
[roo[email protected] ~]# vim /etc/exports
/LAP 172.16.4.101(rw) 172.16.4.102(rw)
啟動nfs,驗證共享
[[email protected] ~]# service nfs start
[[email protected] ~]# showmount -e 172.16.4.136
Export list for 172.16.4.136:
/LAP 172.16.4.102,172.16.4.101
用戶端挂載
[[email protected] ~]# mount -t nfs 172.16.4.136:/LAP /var/www/html/
[[email protected] ~]# mount -t nfs 172.16.4.136:/LAP /var/www/html/
檢視是否挂載
[[email protected] ~]# df -h
172.16.4.136:/LAP 20G 285M 19G 2% /var/www/html
[[email protected] ~]# df -h
172.16.4.136:/LAP 20G 285M 19G 2% /var/www/html
部署Mysql
安裝Mysql
[[email protected] ~]# yum -y install mysql-server
啟動Mysql
[[email protected] ~]# service mysqld start
[[email protected] ~]# netstat -lnt | grep :3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
部署LAP
Centos6.6已經内置了httpd是以無需安裝,安裝Mysql是php依賴Mysql,但是Mysql不許要啟動
[[email protected] ~]# yum -y install php php-mysql mysql mysql-server
[[email protected] ~]# yum -y install php php-mysql mysql mysql-server
設定完成啟動httpd服務即可,其他都無需配置LAMP平台就搭建好了
[[email protected] ~]# service httpd start
[[email protected] ~]# service httpd start
驗證httpd連接配接php
在NFS服務設定測試頁面
[[email protected] ~]# vim /LAP/index.php
<?php
phpinfo();
?>
測試連接配接Mysql
Mysql設定root允許遠端連接配接
mysql> GRANT ALL PRIVILEGES ON *.* TO'root'@'172.16.%.%';
mysql> flush privileges;
nfs建立測試頁面
[[email protected] ~]# vim /LAP/index.php
<?php
$conn=mysql_connect('172.16.4.136','root','');
if ($conn)
echo "連接配接資料庫成功";
else
echo "連接配接資料庫失敗"
?>
分别通路兩台WEB伺服器都可以正常連接配接Mysql
LAMP平台準備ok就可以部署discuz了
部署Discuz
建立Discuz資料庫和連接配接使用者
mysql> create database bbsdb;
mysql> GRANT all ON bbsdb.* TO'runbbs'@'172.16.4.101' IDENTIFIED BY 'adm123';
mysql> GRANT all ON bbsdb.* TO'runbbs'@'172.16.4.102' IDENTIFIED BY 'adm123';
mysql> flush privileges;
将Discuz安裝的網頁檔案放到NFS共享目錄
[[email protected] ~]# unzip Discuz_7.2_FULL_SC_UTF8.zip -dDiscuz
[[email protected] ~]# mv Discuz/upload/* /LAP/
随便輸入LAP中的一個ip位址,url後面+install就可以安裝了
解決問題:
[[email protected] ~]# vim /etc/php.ini
short_open_tag = ON
[[email protected] ~]# scp /etc/[email protected]:/etc/php.ini
設定完成重新開機web伺服器
又有了一個寫權限問題,如下圖所示
由于NFS的權限是更具使用者id進行驗證的,而MN的apache和LAP1,LAP2的apache使用者id一緻,是以直接對apache使用者進行授權寫操作。
[[email protected] LAP]# setfacl -m u:apache:rwx./config.inc.php ./p_w_uploads/ ./forumd
ata/ ./forumdata/cache/ ./forumdata/templates/ ./forumdata/threadcaches/ ./foru
mdata/logs/ ./uc_client/data/cache/
如果檢測都沒有x号就可以繼續了
設定資料庫相關資訊,需要正确填寫資料庫的位址,使用者名和密碼才可以安裝。
安裝完成出現的界面
剛才安裝是在172.16.4.101安裝完成的,在172.16.4.102沒有進行安裝,但是由于NFS共享的原因,在4.101安裝完成的時候,NFS的檔案也就進行修改,是以通路4.102的時候,就是通路安裝好的檔案。
部署LVS-DR
排程器設定
安裝ipvsadm
[[email protected] ~]# yum -y install ipvsadm
設定vip位址
[[email protected] ~]# ifconfig eth0:0 172.16.4.1 netmask255.255.255.255 up
[[email protected] ~]# ifconfig | grep 172.16.4.1
inet addr:172.16.4.100 Bcast:172.16.255.255 Mask:255.255.0.0
inet addr:172.16.4.1 Bcast:172.16.4.1 Mask:255.255.255.255
配置負載均衡政策
[[email protected] ~]# ipvsadm -A -t 172.16.4.1:80 -s rr
[[email protected] ~]# ipvsadm -a -t 172.16.4.1:80 -r172.16.4.101 -g -w 1
[[email protected] ~]# ipvsadm -a -t 172.16.4.1:80 -r172.16.4.102 -g -w 1
[[email protected] ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.4.1:80 rr
->172.16.4.101:80 Route 1 0 0
->172.16.4.102:80 Route 1 0 0
LAP1設定
[[email protected] ~]# echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
[[email protected] ~]# echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
[[email protected] ~]# echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
[[email protected] ~]# echo "2">/proc/sys/net/ipv4/conf/all/arp_announce
[[email protected] ~]# ifconfig lo:0 172.16.4.1 broadcast172.16.4.1 netmask 255.255.255.255 up
[[email protected] ~]# ifconfig | grep 172.16.4.1
inet addr:172.16.4.101 Bcast:172.16.255.255 Mask:255.255.0.0
inet addr:172.16.4.1 Mask:255.255.255.255
[[email protected] ~]# route add -host 172.16.4.1 dev lo:0
LAP2設定
[[email protected] ~]# echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
[[email protected] ~]# echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
[[email protected] ~]# echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
[[email protected] ~]# echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
[[email protected] ~]# ifconfig lo:0 172.16.4.1 broadcast172.16.4.1 netmask 255.255.255.255 up
[[email protected] ~]# ifconfig | grep 172.16.4.1
inet addr:172.16.4.102 Bcast:172.16.255.255 Mask:255.255.0.0
inet addr:172.16.4.1 Mask:255.255.255.255
[[email protected] ~]# route add -host 172.16.4.1 dev lo:0
設定完成就可以使用vip位址通路bbs了。
轉載于:https://blog.51cto.com/ximenfeibing/1656184