拆分?jǐn)?shù)據(jù)庫至獨(dú)立服務(wù)器
| 為什么要進(jìn)行數(shù)據(jù)庫的拆分 |
由于單臺服務(wù)器運(yùn)行LNMP
架構(gòu)會導(dǎo)致網(wǎng)站訪問緩慢袁辈,當(dāng)內(nèi)存被占滿時菜谣,很容易導(dǎo)致系統(tǒng)出現(xiàn)oom
從而kill屌MySQL數(shù)據(jù)庫,所以要將web和數(shù)據(jù)庫進(jìn)行獨(dú)立部署晚缩。
| 數(shù)據(jù)庫拆分后解決了什么問題 |
1.緩解web網(wǎng)站的壓力
2.增強(qiáng)數(shù)據(jù)庫讀寫性能
3.提高用戶訪問速度
| 數(shù)據(jù)庫拆分架構(gòu)演變過程尾膊,如下圖所示 |
| 數(shù)據(jù)庫拆分 |
–
主機(jī)名稱 | 應(yīng)用環(huán)境 | 外網(wǎng)地址 | 內(nèi)網(wǎng)地址 |
---|---|---|---|
web01 | nginx+php | 10.0.0.7 | 172.16.1.7 |
db01 | mysql | 10.0.0.51 | 172.16.1.51 |
| 數(shù)據(jù)庫拆分 |
1.web01網(wǎng)站服務(wù)器操作如下
1)備份web01上的數(shù)據(jù)庫,lzy123.com是數(shù)據(jù)庫密碼
[root@web01 ~]# mysqldump -uroot -p'lzy123.com' -A > mysql-all.sql
2)將web01上備份的數(shù)據(jù)庫拷貝至db01服務(wù)器上
[root@web01 ~]# scp mysql-all.sql root@172.16.1.51:/tmp
2.db01數(shù)據(jù)庫服務(wù)器操作如下
1)將web01服務(wù)器上推送的數(shù)據(jù)庫備份文件恢復(fù)至db01服務(wù)器新數(shù)據(jù)庫中
[root@db01 ~]# yum install mariadb mariadb-server -y
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# systemctl enable mariadb
[root@db01 ~]# mysql -uroot -p'lzy123.com' < /tmp/mysql-all.sql
2)數(shù)據(jù)庫導(dǎo)入完成后荞彼,重啟數(shù)據(jù)庫冈敛,使用新密碼進(jìn)行登錄,并檢查數(shù)據(jù)庫已被導(dǎo)入成功
[root@db01 ~]# systemctl restart mariadb
[root@db01 ~]# mysql -uroot -plzy123.com
mysql> show databases;
3)在新數(shù)據(jù)庫上授權(quán),允許所有網(wǎng)段,通過all賬戶連接并操作該數(shù)據(jù)庫
#授權(quán)所有權(quán)限 grant all
#授權(quán)所有庫所有表 *.*
#將授權(quán)賦予給哪個用戶鸣皂,這個用戶只能通過哪個網(wǎng)段過來(%所有) 'all'@'%'
#授權(quán)該用戶登錄的密碼 identified by
mysql> grant all on *.* to lzy@'%' identified by 'lzy123.com';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
3.web01修改代碼連接新數(shù)據(jù)庫環(huán)境
1)修改Wordpress
產(chǎn)品代碼連接數(shù)據(jù)庫的配置文件
[root@web01 ~]# vim /code/wordpress/wp-config.php
# 數(shù)據(jù)庫名稱
define('DB_NAME', 'wordpress');
# 數(shù)據(jù)庫用戶
define('DB_USER', 'lzy');
# 數(shù)據(jù)庫密碼
define('DB_PASSWORD', 'lzy123.com');
# 數(shù)據(jù)庫地址
define('DB_HOST', '172.16.1.51');
2)修改wecenter
產(chǎn)品代碼連接數(shù)據(jù)庫的配置文件
[root@web01 zh]# grep -iR "lzy123.com"|grep -v cache
system/config/database.php: 'password' => 'lzy123.com',
[root@web01 zh]# vim /code/zh/system/config/database.php
'host' => '172.16.1.51',
'username' => 'lzy',
'password' => 'lzy123.com',
'dbname' => 'zh',
3)最后訪問網(wǎng)站抓谴,成功打開,至此拆分?jǐn)?shù)據(jù)庫完成
擴(kuò)展多臺相同的Web服務(wù)器
| 為什么要擴(kuò)展多臺web節(jié)點(diǎn) |
單臺web服務(wù)器能抗住的訪問量是有限的寞缝,配置多臺web服務(wù)器能提升更高的訪問速度癌压。
| 擴(kuò)展多臺web解決了什么問題 |
1.單臺web節(jié)點(diǎn)如果故障,會導(dǎo)致業(yè)務(wù)down機(jī)
2.多臺web節(jié)點(diǎn)能保證業(yè)務(wù)的持續(xù)穩(wěn)定荆陆,擴(kuò)展性高
3.多臺web節(jié)點(diǎn)能有效的提升用戶訪問網(wǎng)站的速度
3.多臺web節(jié)點(diǎn)技術(shù)架構(gòu)組成滩届,如下圖所示
[圖片上傳失敗...(image-16c1d9-1616497425791)]
| 擴(kuò)展web環(huán)境 |
–
主機(jī)名稱 | 應(yīng)用環(huán)境 | 外網(wǎng)地址 | 內(nèi)網(wǎng)地址 |
---|---|---|---|
web01 | nginx+php | 10.0.0.7 | 172.16.1.7 |
web02 | nginx+php | 10.0.0.8 | 172.16.1.8 |
db01 | mysql | 10.0.0.51 | 172.16.1.51 |
| 快速擴(kuò)展一臺web節(jié)點(diǎn)詳細(xì)步驟 |
通過web01現(xiàn)有環(huán)境快速的擴(kuò)展一臺web02的服務(wù)器,數(shù)據(jù)庫統(tǒng)一使用db01
1)創(chuàng)建www用戶
[root@web02 ~]# groupadd -g666 www
[root@web02 ~]# useradd -u666 -g666 www
2)安裝LNP
[root@web02 ~]# scp -rp root@172.16.1.7:/etc/yum.repos.d/* /etc/yum.repos.d/
[root@web02 ~]# scp -rp root@172.16.1.7:/etc/pki/rpm-gpg/* /etc/pki/rpm-gpg/
[root@web02 ~]# yum install nginx -y
[root@web02 ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
3)將web01的nginx配置文件導(dǎo)入到web02
[root@web02 ~]# scp -rp root@172.16.1.7:/etc/nginx /etc/
4)將web01的php配置文件導(dǎo)入到web02
[root@web02 ~]# scp -rp root@172.16.1.7:/etc/php-fpm.d /etc/
5)將web01的產(chǎn)品代碼打包傳輸?shù)絯eb02服務(wù)器上,在web01上線進(jìn)行打包操作
[root@web01 ~]# tar czf code.tar.gz /code
[root@web01 ~]# scp code.tar.gz root@172.16.1.8:/tmp
#在web02服務(wù)器上進(jìn)行解壓
[root@web02 ~]# tar xf /tmp/code.tar.gz -C /
6)最后啟動nginx與php-fpm,并加入開機(jī)自啟
[root@web02 ~]# systemctl start nginx php-fpm
[root@web02 ~]# systemctl enable nginx php-fpm
拆分靜態(tài)資源至獨(dú)立服務(wù)器
| 為什么拆分靜態(tài)資源至獨(dú)立存儲服務(wù)器 |
當(dāng)后端的web
節(jié)點(diǎn)出現(xiàn)多臺時孙技,會導(dǎo)致用戶上傳的圖片瀑罗、視頻附件等內(nèi)容僅上傳至一臺web
服務(wù)器,那么其他的web服務(wù)器則無法訪問到該圖片券犁。
| 新增一臺nfs存儲解決了什么問題 |
1.保證了多臺web節(jié)點(diǎn)靜態(tài)資源一致。
2.有效節(jié)省多臺web節(jié)點(diǎn)的存儲空間汹碱。
3.統(tǒng)一管理靜態(tài)資源粘衬,便于后期推送至CDN進(jìn)行靜態(tài)資源加速
| 多臺web節(jié)點(diǎn)技術(shù)架構(gòu)組成,如下圖所示 |
–
| 環(huán)境準(zhǔn)備 |
主機(jī)名稱 | 應(yīng)用環(huán)境 | 外網(wǎng)地址 | 內(nèi)網(wǎng)地址 |
---|---|---|---|
web01 | nginx+php | 10.0.0.7 | 172.16.1.7 |
web02 | nginx+php | 10.0.0.8 | 172.16.1.8 |
nfs | nfs | 10.0.0.31 | 172.16.1.31 |
db01 | mysql | 10.0.0.51 | 172.16.1.51 |
| nfs服務(wù)端咳促,操作步驟如下 |
1) 安裝并配置nfs
[root@nfs ~]# yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zh 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
2) 創(chuàng)建共享目錄稚新,并進(jìn)行授權(quán)
[root@nfs01 ~]# mkdir /data/{blog,zh} -p
[root@nfs01 ~]# chown -R www.www /data/
3) 啟動nfs服務(wù),并加入開機(jī)自啟
[root@nfs01 ~]# systemctl restart nfs-server
| web01端操作步驟如下 |
1) web01節(jié)點(diǎn)安裝nfs跪腹,然后使用showmount查看服務(wù)端共享的資源
[root@web01 ~]# yum install nfs-utils -y
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/zh 172.16.1.0/24
/data/blog 172.16.1.0/24
2) 如何查找Wordpress靜態(tài)資源存放的位置
瀏覽器->右鍵->檢查->Network->選擇左上角的Select按鈕->點(diǎn)擊對應(yīng)的圖片褂删,然后能獲取到對應(yīng)的url地址,如下
# http://blog.oldboy.com/wp-content/uploads/2018/11/timg.gif
3) 備份web01服務(wù)器上Wordpress的靜態(tài)資源冲茸,因?yàn)樵摲?wù)器上的資源資源最全
[root@web01 ~]# cd /code/wordpress/wp-content
[root@web01 wp-content]# cp uploads/ uploads_bak/
4) web01客戶端執(zhí)行掛載操作
[root@web01 wp-content]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/
#恢復(fù)對應(yīng)的數(shù)據(jù)
[root@web01 wp-content]# cp -rp uploads_bak/* uploads/
5) 將掛載信息加入開機(jī)自啟
[root@web01 wp-content]# tail -1 /etc/fstab
172.16.1.31:/data/blog /code/wordpress/wp-content/uploads nfs defaults 0 0
[root@web01 wp-content]# mount -a
| web02端操作步驟如下 |
1) web02客戶端直接掛載nfs即可
[root@web02 ~]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/
2) 將掛載信息加入開機(jī)自啟
[root@web02 ~]# tail -1 /etc/fstab
172.16.1.31:/data/blog /code/wordpress/wp-content/uploads nfs defaults 0 0
[root@web02 ~]# mount –a