一、實驗拓撲圖
二、實驗步驟
A、實驗環境準備
1、在node2、node3、node4上安裝httpd
[root@localhost ~]# yum -y install httpd
2、在node3和node4上安裝php 、php-mysql
[root@localhost ~]# yum -y install php php-mysql
3、在172.18.250.193上安裝mariadb,並進行配置
[root@byq ~]#yum -y install mariadb
啓動數據庫
[root@byq ~]#systemctl start mariadb
檢查端口
[root@byq ~]#ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 *:3306 *:*
配置數據庫相關內容
[root@byq ~]#mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database dz; MariaDB [(none)]> grant all privileges on dz.* to 'dzadmin'@'%' identified by '123456'; MariaDB [(none)]> grant all privileges on dz.* to 'dzadmin'@'localhost' identified by '123456'; MariaDB [(none)]> flush privileges; MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | dz | | mysql | | performance_schema | | test | +--------------------+ 5 rows in set (0.00 sec) MariaDB [(none)]> exit Bye
遠程登陸測試創建的數據庫用戶是否正常連接
[root@BYQ ~]#mysql -udzadmin -p123456 -h172.18.250.193 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
4、編輯node2、node3、node4中httpd的配置文件httpd.conf
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
修改添加如下內容
ServerName node2.byq.com:80 DocumentRoot "/var/www/html/upload" ServerName node3.byq.com:80 DocumentRoot "/var/www/html/upload" ServerName node4.byq.com:80 DocumentRoot "/var/www/html/upload"
這裏配置完畢是無法啓動httpd服務的,因爲upload目錄還未生成,等下面配置完畢再啓動httpd服務
5、在node3上下載 Discuz安裝文件
[root@BYQ ~]#wget http://download.comsenz.com/DiscuzX/3.3/Discuz_X3.3_SC_UTF8.zip
解壓並安裝
[root@BYQ ~]#mkdir Discuz [root@BYQ ~]#unzip -d /root/Discuz Discuz_X3.3_SC_UTF8.zip
將解壓後的所有文件拷貝至/var/www/html
[root@BYQ ~]#cp -a /root/Discuz/* /var/www/html/
給所有目錄及文件配置權限
[root@BYQ ~]#chmod -R 777 /var/www/html/upload/*
安裝 Discuz
這裏就做解釋了,安裝步驟就是確認,下一步即可
將配置好的文件分別scp到node3和node4的對應目錄下
[root@BYQ ~]#scp -r /var/www/html/* 172.18.249.57:/var/www/html/ [root@BYQ ~]#scp -r /var/www/html/* 172.18.10.11:/var/www/html/
6、將node3和node4的靜態文件存放目錄掛載到node2下
#/var/www/html/upload中需要掛載的目錄如下 /data -----數據緩存及附件 /static -----靜態文件
將node2設置爲NFS服務器
[root@localhost ~]# yum install nfs-utils rpcbind [root@localhost ~]# service rpcbind start
編輯共享文件配置
[root@localhost ~]# vim /etc/exports #NFS輸出目錄爲data,可以訪問這個目錄的主機爲node3和node4,權限爲讀寫,訪問uid爲0(root),允許超過1024的端口號>連接 /var/www/html/upload/data/ 172.18.10.10(rw,all_squash,anonuid=0,insecure) /var/www/html/upload/data/ 172.18.10.11(rw,all_squash,anonuid=0,insecure) #NFS輸出目錄爲data,可以訪問這個目錄的主機爲node3和node 4,權限爲讀寫,訪問uid爲0(root),允許超過1024的端口號>連接 /var/www/html/upload/static/ 172.18.10.10(rw,all_squash,anonuid=0,insecure) /var/www/html/upload/static/ 172.18.10.11(rw,all_squash,anonuid=0,insecure)
啓動nfs服務
[root@localhost ~]# service nfs start
查看共享文件目錄
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/var/www/html/upload/static 172.18.10.11,172.18.10.10
/var/www/html/upload/data 172.18.10.11,172.18.10.10
啓動httpd服務
[root@localhost ~]# service httpd start
7、在node3上掛載共享存儲目錄
[root@BYQ ~]# yum install nfs-utils rpcbind [root@BYQ ~]# service rpcbind start [root@BYQ ~]# service nfs start [root@BYQ ~]#mount 172.18.249.57:/var/www/html/upload/data/ /var/www/html/upload/data/ [root@BYQ ~]#mount 172.18.249.57:/var/www/html/upload/static/ /var/www/html/upload/static/ [root@BYQ ~]#showmount -e 172.18.249.57 Export list for 172.18.249.57: /var/www/html/upload/static 172.18.10.11,172.18.10.10 /var/www/html/upload/data 172.18.10.11,172.18.10.10
8、在node4上掛載共享存儲目錄
[root@localhost ~]# yum install nfs-utils rpcbind [root@localhost ~]# service rpcbind start [root@localhost ~]# service nfs start [root@localhost ~]# yum install nfs-utils rpcbind [root@localhost ~]# service rpcbind start [root@localhost ~]# service nfs start [root@localhost ~]#mount 172.18.249.57:/var/www/html/upload/data/ /var/www/html/upload/data/ [root@localhost ~]#mount 172.18.249.57:/var/www/html/upload/static/ /var/www/html/upload/static/ [root@localhost ~]#showmount -e 172.18.249.57 Export list for 172.18.249.57: /var/www/html/upload/static 172.18.10.11,172.18.10.10 /var/www/html/upload/data 172.18.10.11,172.18.10.10
9、在node上安裝haproxy
開啓日誌功能
[root@localhost ~]# vim /etc/rsyslog.conf #打開或增加一下幾行,讓udp514端口處於監聽狀態,並將日誌紀錄到指定文件中 $ModLoad imudp $UDPServerRun 514 local2.* /var/log/haproxy.log [root@localhost ~]# systemctl restart rsyslog.service [root@localhost ~]# ss -unl | grep 514 UNCONN 0 0 *:514 *:* UNCONN 0 0 :::514 :::*
配置haproxy
[root@localhost ~]#yum install haproxy [root@localhost ~]#cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak [root@localhost ~]#vim /etc/haproxy/haproxy.cfg global #全局配置 log 127.0.0.1 local2 #日誌紀錄位置 chroot /var/lib/haproxy #haproxy的工作目錄 pidfile /var/run/haproxy.pid #pid文件位置 maxconn 4000 #最大連接數 user haproxy #運行時使用的用戶身份 group haproxy #運行時使用的組身份 daemon #啓動爲守護進程,不加此處運行在前臺 stats socket /var/lib/haproxy/stats #本地訪問stats統計信息時以套接字方式通信 defaults #默認配置 mode http #已http模式運行 log global #默認日誌爲全局配置中日誌的設置 option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 #除本機外所有發往服務器的請求首部中加入“X-Forwarded-For”首部 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #前端最大併發連接數 listen static #設置統計報告頁面 bind *:9000 #監聽在本機9000端口 stats enable #打開 stats hide-version #隱藏haproxy版本 stats uri /haadmin?admin #統計頁面路徑 stats realm "HAProxy\ Static" #打開統計頁面的認證功能 stats auth byq:byq123 #進入統計頁面所使用的賬號byq和密碼byq123 stats auth administrator:administrator stats admin if TRUE #條件滿足時進入管理級別 frontend dz #前端設置 bind *:80 #監聽在80端口 acl url_static path_beg -i /data /static /p_w_picpaths /javascript /stylesheets #url開頭爲這些的靜態內容 acl url_static path_end -i .jpg .gif .png .css .js .html .ico #url結尾帶爲這些的靜態內容 use_backend staser if url_static #如果靜態內容符合url_static的條件,就調度到staser中的服務器 default_backend dyser #其他默認調度到dyser中的服務器 backend dyser #後端動態內容服務器設置 cookie srv insert nocache balance roundrobin server node3 172.18.10.10:80 check server node4 172.18.10.11:80 check backend staser #後端靜態內容服務器設置 balance roundrobin server node2 172.18.249.57:80 check [root@localhost ~]# service haproxy start 修改node2、node3、node4的http配置文件,讓他們能收到真實訪問的ip [root@localhost ~]# vim /etc/httpd/conf/httpd.conf #修改一下內容 LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined [root@localhost ~]# service httpd restart #node3和node4執行同樣的操作