網(wǎng)站架構(gòu)演變 踩身、 LNP+Mariadb數(shù)據(jù)庫分離 、 Web服務(wù)器集群

案例

鏈接

網(wǎng)站架構(gòu)演變

1.1 問題

學(xué)習(xí)從單機(jī)架構(gòu)到集群架構(gòu)的演變之路:

  • 單機(jī)版LNMP
  • 獨立數(shù)據(jù)庫服務(wù)器
  • Web服務(wù)器集群與Session保持
  • 動靜分離社露、數(shù)據(jù)庫集群
  • 各種緩存服務(wù)器
  • 業(yè)務(wù)模型

1.2 步驟

此案例主要是學(xué)習(xí)網(wǎng)站架構(gòu)演變的過程挟阻,以拓?fù)鋱D和理論為主,具體實現(xiàn)還需要結(jié)合具體的軟件峭弟。

步驟一:單機(jī)版LNMP

單機(jī)版網(wǎng)站附鸽,拓?fù)淙鐖D-1所示。

image

圖-1 單機(jī)版網(wǎng)站服務(wù)器

用戶量少時使用瞒瘸,簡單坷备、成本低、存在單點故障情臭。

步驟二:獨立數(shù)據(jù)庫服務(wù)器

獨立數(shù)據(jù)庫服務(wù)器是將網(wǎng)站靜態(tài)文件省撑、代碼文件等資料與數(shù)據(jù)庫分離的架構(gòu),當(dāng)用戶量增加時單機(jī)的處理能力有限俯在,PHP或JAVA代碼的執(zhí)行需要消耗大量CPU資源竟秫,數(shù)據(jù)庫的增刪改查需要調(diào)用大量的內(nèi)存資源,將兩者分離可以減輕服務(wù)器的壓力跷乐,其拓?fù)浣Y(jié)構(gòu)如圖-2所示肥败。

image

圖-2 web服務(wù)器與數(shù)據(jù)庫分離

Web服務(wù)器和數(shù)據(jù)庫服務(wù)器的壓力都可以得到有效改善,訪問量有所增加愕提。但是服務(wù)器依然存在單點故障問題馒稍。

步驟三:Web服務(wù)器集群與Session保持

我們可以通過Nginx、Haproxy代理服務(wù)器實現(xiàn)Web負(fù)載均衡集群浅侨,也可以使用LVS調(diào)度器實現(xiàn)Web負(fù)載均衡集群筷黔。部署完Web集群后還需要考慮如何進(jìn)行Session會話保持,方法很多仗颈,如:根據(jù)源IP保持,代理服務(wù)器重寫Cookie信息,共享文件系統(tǒng)保存session挨决,使用數(shù)據(jù)庫共享session等等请祖。

該架構(gòu)拓?fù)淙鐖D-3所示。

image

圖-3

但是如果只有一臺調(diào)度器依然會導(dǎo)致單點故障的問題脖祈,因此還需要使用Keepalived或Heartbeat之類的軟件進(jìn)行高可用配置肆捕,如圖-4所示。

image

圖-4

對于網(wǎng)站內(nèi)容而言可以分離為動態(tài)頁面和靜態(tài)頁面盖高,靜態(tài)頁面就需要數(shù)據(jù)文件慎陵,動態(tài)頁面則需要CPU解析代碼,需要消耗大量的CPU資源喻奥,因此可以將靜態(tài)和動態(tài)分離為兩組服務(wù)器席纽,動態(tài)頁面有腳本代碼組成,是一種基于網(wǎng)頁的應(yīng)用程序撞蚕,因此這一組服務(wù)器也稱為應(yīng)用服務(wù)器润梯,其架構(gòu)如圖-5所示。

image

圖-5

步驟四:動靜分離甥厦、數(shù)據(jù)庫集群

隨著服務(wù)器的增加纺铭,雖然性能與并發(fā)量得到了明顯的提升,但是數(shù)據(jù)的一致性刀疙、管理的便利性成為了新的問題舶赔,因此就需要增加統(tǒng)一的存儲服務(wù)器,實現(xiàn)數(shù)據(jù)的同步一致谦秧,可以使用NFS竟纳,GlusterFS、Ceph等軟件實現(xiàn)該功能油够,其架構(gòu)如圖-6所示蚁袭。

image

圖-6

此時所有應(yīng)用服務(wù)器都連接一臺數(shù)據(jù)庫服務(wù)器進(jìn)行讀寫操作,而且后期隨著數(shù)據(jù)庫中的數(shù)據(jù)不斷增加石咬,會導(dǎo)致數(shù)據(jù)庫成為整個網(wǎng)站的瓶頸揩悄!這就需要我們對數(shù)據(jù)進(jìn)行分庫分表,創(chuàng)建數(shù)據(jù)庫主從或者數(shù)據(jù)庫集群鬼悠,實現(xiàn)讀寫分離删性,其拓?fù)淙鐖D-7所示。

image

圖-7

步驟五:緩存服務(wù)器與業(yè)務(wù)模型

對于靜態(tài)數(shù)據(jù)我們可以通過varnish焕窝、squid或者nginx進(jìn)行緩存蹬挺,將數(shù)據(jù)緩存到距離用戶更近的位置,構(gòu)建CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))架構(gòu)它掂。

對于傳統(tǒng)的SQL數(shù)據(jù)庫而言巴帮,我們也可以通過增加NoSQL數(shù)據(jù)庫溯泣,實現(xiàn)數(shù)據(jù)緩存的功能,提升數(shù)據(jù)庫的訪問速度榕茧。

備注:數(shù)據(jù)庫相關(guān)知識在第三階段課程有詳細(xì)介紹垃沦,第二階段項目暫時不做數(shù)據(jù)庫優(yōu)化。

最后用押,基于前面的架構(gòu)肢簿,我們還可以將網(wǎng)站按照公司的業(yè)務(wù)進(jìn)行分離,每個業(yè)務(wù)都可以是一個獨立的集群蜻拨,如圖-8所示池充。

image

圖-8

LNP+Mariadb數(shù)據(jù)庫分離

2.1 問題

部署LNP+Mariadb實現(xiàn)數(shù)據(jù)庫與Web服務(wù)器分離,實現(xiàn)以下目標(biāo):

  • 將舊的數(shù)據(jù)庫備份缎讼,遷移到新的服務(wù)器
  • 修改配置調(diào)用新的數(shù)據(jù)庫服務(wù)器

2.2 方案

實驗拓?fù)淙鐖D-9所示收夸,做具體實驗前請先配置好環(huán)境。

image

圖-9

主機(jī)配置如表-1所示休涤。

表-1

image

2.3 步驟

實現(xiàn)此案例需要按照如下步驟進(jìn)行咱圆。

步驟一:部署數(shù)據(jù)庫服務(wù)器

1)準(zhǔn)備一臺獨立的服務(wù)器,安裝數(shù)據(jù)庫軟件包

[root@database ~]# yum -y install mariadb mariadb-server mariadb-devel
[root@database ~]# systemctl start mariadb
[root@database ~]# systemctl enable mariadb
[root@database ~]# firewall-cmd --set-default-zone=trusted
[root@database ~]# setenforce  0
[root@database ~]# sed -i  '/SELINUX/s/enforcing/permissive/'  /etc/selinux/config

2)將之前單機(jī)版LNMP網(wǎng)站中的數(shù)據(jù)庫遷移到新的數(shù)據(jù)庫服務(wù)器功氨。

登陸192.168.2.11主機(jī)序苏,備份數(shù)據(jù)庫并拷貝給新的服務(wù)器,關(guān)閉舊的數(shù)據(jù)庫服務(wù):

[root@centos7 ~]# mysqldump wordpress > wordpress.bak     
#備份數(shù)據(jù)庫到文件(備份的文件名和擴(kuò)展名任意)
[root@centos7 ~]# scp wordpress.bak 192.168.2.21:/root/    #拷貝備份文件到遠(yuǎn)程主機(jī)
[root@centos7 ~]# systemctl stop mariadb
[root@centos7 ~]# systemctl disable mariadb

登陸192.168.2.21主機(jī)捷凄,創(chuàng)建空數(shù)據(jù)庫忱详,使用備份文件還原數(shù)據(jù)庫:

[root@database ~]# mysql
MariaDB [(none)]> create database wordpress character set utf8mb4;
#創(chuàng)建數(shù)據(jù)庫wordpress,該數(shù)據(jù)庫支持中文
MariaDB [(none)]> exit

使用備份文件還原數(shù)據(jù):

[root@database ~]# mysql wordpress < wordpress.bak        
#使用備份文件導(dǎo)入數(shù)據(jù)到wordpress數(shù)據(jù)庫

重新創(chuàng)建賬戶并授權(quán)訪問:

[root@database ~]# mysql
MariaDB [(none)]> grant all on wordpress.* to wordpress@'%' identified by 'wordpress';
#語法格式:grant 權(quán)限 on 數(shù)據(jù)庫名.表名  to 用戶名@客戶端主機(jī) identified by 密碼
#創(chuàng)建用戶并授權(quán)跺涤,用戶名為wordpress匈睁,該用戶對wordpress數(shù)據(jù)庫下的所有表有所有權(quán)限
#wordpress用戶的密碼是wordpress,授權(quán)該用戶可以從localhost主機(jī)登錄數(shù)據(jù)庫服務(wù)器
#all代表所有權(quán)限(wordpress用戶可以對wordpress數(shù)據(jù)庫中所有表有所有權(quán)限)
#wordpress.*代表wordpress數(shù)據(jù)庫中的所有表
MariaDB [(none)]> flush privileges;
#刷新權(quán)限
MariaDB [(none)]> exit

備注:在MySQL和MariaDB中%代表所有桶错,這里是授權(quán)任何主機(jī)都可以連接數(shù)據(jù)庫航唆。

3)修改wordpress網(wǎng)站配置文件,調(diào)用新的數(shù)據(jù)庫服務(wù)器院刁。

Wordpress在第一次初始化操作時會自動生產(chǎn)配置文件:wp-config.php糯钙,登陸192.168.2.11修改該文件即可調(diào)用新的數(shù)據(jù)庫服務(wù)。

[root@centos7 ~]# vim /usr/local/nginx/html/wp-config.php
修改前內(nèi)容如下:
define('DB_HOST', '192.168.2.11');
修改后內(nèi)容如下:
define('DB_HOST', '192.168.2.21');

步驟二:客戶端測試

1)客戶端使用瀏覽器訪問wordpress網(wǎng)站退腥。

客戶端瀏覽器訪問 firefox http://192.168.2.11

Web服務(wù)器集群

3.1 問題

使用HAProxy部署Web服務(wù)器集群任岸,實現(xiàn)以下目標(biāo):

  • 部署三臺Web服務(wù)器
  • 遷移網(wǎng)站數(shù)據(jù),使用NFS實現(xiàn)數(shù)據(jù)共享
  • 部署HAProxy代理服務(wù)器實現(xiàn)負(fù)載均衡
  • 部署DNS域名解析服務(wù)器

3.2 方案

實驗拓?fù)淙鐖D-10所示狡刘,做具體實驗前請先配置好環(huán)境享潜。

image

圖-10

備注:實際操作中DNS服務(wù)代理服務(wù)器部署在同一臺主機(jī)上(節(jié)約虛擬機(jī)資源)。

主機(jī)配置如表-2所示嗅蔬。

表-2

image

3.3 步驟

實現(xiàn)此案例需要按照如下步驟進(jìn)行剑按。

步驟一:部署web2和web3服務(wù)器

1)安裝LNP軟件包

[root@web2 ~]# yum -y install gcc pcre-devel openssl-devel 
[root@web2 lnmp_soft]# tar -xf nginx-1.12.2.tar.gz
[root@web2 lnmp_soft]# cd nginx-1.12.2/
[root@web2 nginx-1.12.2]# ./configure \
--with-http_ssl_module \
--with-http_stub_status_module
[root@web2 nginx-1.12.2]# make && make install
[root@web2 ~]# yum -y install php php-fpm php-mysql mariadb-devel

[root@web3 ~]# yum -y install gcc pcre-devel openssl-devel 
[root@web3 lnmp_soft]# tar -xf nginx-1.12.2.tar.gz
[root@web3 lnmp_soft]# cd nginx-1.12.2/
[root@web3 nginx-1.12.2]# ./configure \
--with-http_ssl_module \
--with-http_stub_status_module
[root@web3 nginx-1.12.2]# make && make install
[root@web3 ~]# yum -y install php php-fpm php-mysql mariadb-devel

2)修改nginx配置實現(xiàn)動靜分離(web2和web3操作)

web2修改默認(rèn)首頁index.php疾就,配置兩個location實現(xiàn)動靜分離。

[root@web2 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
    root   html;
    index  index.php index.html index.htm;
}

location ~ \.php$ {
    root            html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include         fastcgi.conf;
}

web3修改默認(rèn)首頁index.php吕座,配置兩個location實現(xiàn)動靜分離虐译。

[root@web3 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
    root   html;
    index  index.php index.html index.htm;
}

location ~ \.php$ {
    root            html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include         fastcgi.conf;
}

3)啟動相關(guān)服務(wù)、設(shè)置防火墻和SELinux

[root@web2 ~]# echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
[root@web2 ~]# chmod +x /etc/rc.local
[root@web2 ~]# /usr/local/nginx/sbin/nginx
[root@web2 ~]# systemctl start  php-fpm                   #啟動php-fpm服務(wù)
[root@web2 ~]# systemctl enable php-fpm                   #設(shè)置服務(wù)開啟自啟
[root@web2 ~]# firewall-cmd --set-default-zone=trusted
[root@web2 ~]# setenforce  0
[root@web2 ~]# sed -i  '/SELINUX/s/enforcing/permissive/'  /etc/selinux/config

[root@web3 ~]# echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
[root@web3 ~]# chmod +x /etc/rc.local
[root@web3 ~]# /usr/local/nginx/sbin/nginx
[root@web3 ~]# systemctl start  php-fpm                   #啟動php-fpm服務(wù)
[root@web3 ~]# systemctl enable php-fpm                #設(shè)置服務(wù)開機(jī)自啟
[root@web3 ~]# firewall-cmd --set-default-zone=trusted
[root@web3 ~]# setenforce  0
[root@web3 ~]# sed -i  '/SELINUX/s/enforcing/permissive/'  /etc/selinux/config

附加知識:systemdN馀俊!侮攀!

源碼安裝的軟件默認(rèn)無法使用systemd管理锣枝,如果需要使用systemd管理源碼安裝的軟件需要手動編寫服務(wù)的service文件(編寫是可以參考其他服務(wù)的模板文件)。以下是nginx服務(wù)最終編輯好的模板兰英。

Service文件存儲路徑為/usr/lib/systemd/system/目錄撇叁。

[root@centos7 ~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The Nginx HTTP Server
#描述信息
After=network.target remote-fs.target nss-lookup.target
#指定啟動nginx之前需要其他的其他服務(wù),如network.target等

[Service]
Type=forking
#Type為服務(wù)的類型畦贸,僅啟動一個主進(jìn)程的服務(wù)為simple陨闹,需要啟動若干子進(jìn)程的服務(wù)為forking
ExecStart=/usr/local/nginx/sbin/nginx
#設(shè)置執(zhí)行systemctl start nginx后需要啟動的具體命令.
ExecReload=/usr/local/nginx/sbin/nginx -s reload
#設(shè)置執(zhí)行systemctl reload nginx后需要執(zhí)行的具體命令.
ExecStop=/bin/kill -s QUIT ${MAINPID}
#設(shè)置執(zhí)行systemctl stop nginx后需要執(zhí)行的具體命令.

[Install]
WantedBy=multi-user.target

步驟二:部署NFS,將網(wǎng)站數(shù)據(jù)遷移至NFS共享服務(wù)器

1)部署NFS共享服務(wù)器

[root@nfs ~]# yum install nfs-utils
[root@nfs ~]# mkdir /web_share
[root@nfs ~]# vim /etc/exports
/web_share  192.168.2.0/24(rw,no_root_squash)

[root@nfs ~]# systemctl restart rpcbind
[root@nfs ~]# systemctl enable rpcbind

no_root_squash參數(shù)可以在網(wǎng)絡(luò)上搜索擴(kuò)展下自己的知識薄坏。

NFS使用的是隨機(jī)端口趋厉,每次啟動NFS都需要將自己的隨機(jī)端口注冊到rpcbind服務(wù),這樣客戶端訪問NFS時先到rpcbind查詢端口信息胶坠,得到端口信息后再訪問NFS服務(wù)君账。

[root@nfs ~]# systemctl restart nfs
[root@nfs ~]# systemctl enable nfs
[root@nfs ~]# firewall-cmd --set-default-zone=trusted
[root@nfs ~]# setenforce  0
[root@nfs ~]# sed -i  '/SELINUX/s/enforcing/permissive/'  /etc/selinux/config

2)遷移舊的網(wǎng)站數(shù)據(jù)到NFS共享服務(wù)器

將web1(192.168.2.11)上的wordpress代碼拷貝到NFS共享。

[root@web1 ~]# cd /usr/local/nginx/
[root@web1 nginx]# tar -czpf html.tar.gz html/
#-p代表打包時保留文件的權(quán)限
[root@web1 nginx]# scp html.tar.gz 192.168.2.31:/web_share/

登陸nfs服務(wù)器沈善,將壓縮包解壓

[root@nfs ~]# cd /web_share/
[root@nfs web_share]# tar -xf html.tar.gz

3)所有web服務(wù)器訪問掛載NFS共享數(shù)據(jù)乡数。

[root@web1 ~]# rm -rf /usr/local/nginx/html/*
[root@web1 ~]# yum -y install nfs-utils
[root@web1 ~]# showmount -e 192.168.2.31
[root@web1 ~]# echo "192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0" >> /etc/fstab
[root@web1 ~]# mount -a

[root@web2 ~]# yum -y install nfs-utils
[root@web2 ~]# echo "192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0" >> /etc/fstab
[root@web2 ~]# mount -a

[root@web3 ~]# yum -y install nfs-utils
[root@web3 ~]# echo "192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0" >> /etc/fstab
[root@web3 ~]# mount -a

步驟三:部署HAProxy代理服務(wù)器

1)部署HAProxy

安裝軟件,手動修改配置文件闻牡,添加如下內(nèi)容净赴。

[root@proxy ~]# yum -y install haproxy 
[root@proxy ~]# vim /etc/haproxy/haproxy.cfg
listen wordpress *:80        #監(jiān)聽80端口
balance roundrobin         #輪詢算法
server web1 192.168.2.11:80 check inter 2000 rise 2 fall 3
server web2 192.168.2.12:80 check inter 2000 rise 2 fall 3
server web3 192.168.2.13:80 check inter 2000 rise 2 fall 3

[root@proxy ~]# systemctl start haproxy
[root@proxy ~]# systemctl enable haproxy
[root@proxy ~]# firewall-cmd --set-default-zone=trusted
[root@proxy ~]# setenforce  0
[root@proxy ~]# sed -i  '/SELINUX/s/enforcing/permissive/'  /etc/selinux/config

步驟三:部署DNS域名服務(wù)器

1)安裝DNS相關(guān)軟件(192.168.4.5操作)。

[root@proxy ~]# yum -y  install bind bind-chroot

2)修改主配置文件罩润,添加zone玖翅。

[root@proxy ~]# vim /etc/named.conf
options {
    listen-on port 53 { any; };           #服務(wù)監(jiān)聽的地址與端口
    directory       "/var/named";         #數(shù)據(jù)文件路徑
    allow-query     { any; };             #允許任何主機(jī)訪問DNS服務(wù)
    ... ...
};

zone "lab.com" IN {                        #定義正向區(qū)域
    type master;
    file "lab.com.zone";
};

#include "/etc/named.rfc1912.zones";        #注釋掉改行
#include "/etc/named.root.key";              #注釋掉改行

[root@proxy ~]# named-checkconf /etc/named.conf            #檢查語法

3)修改正向解析記錄文件。

注意:保留文件權(quán)限(相關(guān)配置文件知識參考第一階段課程)哨啃。

[root@proxy named]# cp -p /var/named/named.localhost /var/named/lab.com.zone
[root@proxy named]# vim /var/named/lab.com.zone
$TTL 1D
@       IN SOA  @ rname.invalid. (
0       ; serial
1D      ; refresh
1H      ; retry
1W      ; expire
3H )    ; minimum
@        NS     dns.lab.com.
dns      A       192.168.4.5
www      A       192.168.4.5

4)啟動服務(wù)

[root@proxy named]# systemctl start named
[root@proxy named]# systemctl enable named
[root@proxy ~]# firewall-cmd --set-default-zone=trusted
[root@proxy ~]# setenforce  0
[root@proxy ~]# sed -i  '/SELINUX/s/enforcing/permissive/'  /etc/selinux/config

5)客戶端修改DNS

如果客戶端是Linux主機(jī)烧栋,則客戶端修改DNS解析文件

提示:做完實驗修改回原始內(nèi)容。

[root@room9pc01 data]# cat /etc/resolv.conf
# Generated by NetworkManager
search tedu.cn
nameserver 192.168.4.5
nameserver 172.40.1.10
nameserver 192.168.0.220

如何客戶端是Windows則需要在圖形中配置網(wǎng)卡的DNS服務(wù)器拳球。如圖-11所示审姓。

image

圖-11

備注:
如果不做DNS,也可以直接修改hosts解析文件祝峻。
如果是Linux客戶端魔吐,則修改/etc/hosts文件扎筒。
如果是Windows客戶端,則需要以管理員身份啟動記事本修改C:\Windows\System32\drivers\etc\hosts文件酬姆。

步驟四:修改wordpress配置文件

1)修改wp-config.php

在define('DB_NAME', 'wordpress')這行前面添加如下兩行內(nèi)容:

[root@web3 html]# vim /usr/local/nginx/html/wp-config.php
define('WP_SITEURL', 'http://www.lab.com');
define('WP_HOME', 'http://www.lab.com');

如果不添加這兩行配置嗜桌,瀏覽器訪問網(wǎng)站某個子頁面后,URL會固定到某一臺后端服務(wù)器不輪詢辞色。

警告:添加的這兩行必須與前面的域名解析一致9浅琛!O嗦层亿!

附加知識(常見面試題)

1)什么是灰度發(fā)布:

答:灰度發(fā)布(又名金絲雀發(fā)布)是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式立美。

讓一部分用戶繼續(xù)用產(chǎn)品特性A匿又,一部分用戶開始用產(chǎn)品特性B,如果用戶對B沒有什么反對意見建蹄,那么逐步擴(kuò)大范圍碌更,把所有用戶都遷移到B上面來《瓷鳎灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定痛单,在初始灰度的時候就可以發(fā)現(xiàn)、調(diào)整問題拢蛋,以保證其影響度桦他。灰度期:灰度發(fā)布開始到結(jié)束期間的這一段時間谆棱,稱為灰度期快压。

2)DNS服務(wù)器有哪些種,其使用的端口為多少垃瞧?

答:
有 根DNS蔫劣、一級DNS、二級DNS个从、三級DNS脉幢、緩存DNS
主DNS服務(wù)器、從DNS服務(wù)器
端口:53

3)從日志/opt/bjca3/logs/ca_access.log中截取14點到16點的日志嗦锐,將截取的日志導(dǎo)入到/tmp/ca_access.txt中嫌松,日志格式如下:

[Fri Mar 17 13:59:00 2017] [debug] mod_cmp.c(1600):[client 192.168.97.8] [CMP] CMP_set_status: starting …
[Fri Mar 17 13:59:00 2017] [debug] mod_cmp.c(938):[client 192.168.97.8] [CMP] CMP_cu_integer_set: starting …
[Fri Mar 17 13:59:00 2017] [debug] mod_cmp.c(957):[client 192.168.97.8] [CMP] CMP_cu_integer_set: ending ok …
………
[Fri Mar 17 16:36:00 2017] [debug] mod_cmp.c(1014):[client 192.168.97.8] [CMP] cu_octet_str_set: starting …
[Fri Mar 17 16:36:00 2017] [debug] mod_cmp.c(1037):[client 192.168.97.8] [CMP] cu_octet_str_set: ending ok …

答:awk '4>="14:00:00"&&4<="16:59:00"' ca_access.log

4)監(jiān)控檢查,使用ping命令編寫腳本來查詢一組IP地址同時檢測他們是否處于活躍狀態(tài)奕污。要求(range:192.168.1.200-192.168.1.220萎羔,一個IP發(fā)送4個ping包,ping的過程不能輸出信息到終端)碳默?

答:

#!/bin/bash
for i in {200..220}
do
    ping -c 4  -i 0.2  -W 1  192.168.1.$i &>/dev/null
    if [ $? -ne 0 ];then
        echo  "192.168.1.$i is down" >> log.txt
    fi
done

5)假設(shè)nginx的訪問日志格式如下贾陷,統(tǒng)計訪問頁面前10位的IP數(shù)缘眶?

202.101.129.218 - - [26/Mar/2017:23:59:55 +0800] "GET /online/stat_inst.php?
pid=d065HTTP/1.1" 302 20 -"-" "-" "Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1)"

答:
awk '{IP[$1]++} END{for(i in IP){print i,IP[i]}}' access.log \
| sort -n | tail -10

6)請列舉出10個以上的你所知曉的SQL語句?

參考答案:

insert
select
delete
update
create
show
drop
grant
revoke
load data
create view

7)如何切換到某個數(shù)據(jù)庫髓废,并在上面工作巷懈?

答:
use 庫名;

8)列出數(shù)據(jù)庫內(nèi)的所有表?

答:
show tables;

9)如何刪除表慌洪、刪除數(shù)據(jù)庫顶燕?

答:
drop table 表名;drop database 庫名;

10)如何列出表"xrt"內(nèi)name域值為"tecmint",web_address域值為"tecmint.com"的所有數(shù)據(jù)蒋譬?

答:
select * from xrt where name="tecmint" and web_address="tecmint.com";


總結(jié):

案例1:網(wǎng)站架構(gòu)演變
案例2:LNP+Mariadb數(shù)據(jù)庫分離
案例3:Web服務(wù)器集群

常見面試

http://www.lab.com   購買主機(jī)名 
http://192.168.2.11  公網(wǎng)IP

 在國家機(jī)構(gòu)DNS服務(wù)器上添加A 記錄
 www.lab.com   A    192.168.2.11

所有的互聯(lián)網(wǎng)用戶想上網(wǎng)都必須指定DNS服務(wù)器 

http://www.tmall.com



http:// 無狀態(tài)連接協(xié)議   web11 (2)
 
                         web12  (2)
                         web13  (2)
    pc1   6次                                     
                         
     會話ID   SESSION_ID (memcached服務(wù)器 )
     
一個客戶端多次訪問網(wǎng)站服務(wù) 會被平均的方法給lb集群中的
多臺網(wǎng)站服務(wù)器


靜態(tài)網(wǎng)站 任何用戶訪問網(wǎng)站的時候 網(wǎng)站的數(shù)據(jù)的頁面都不會方式改變
html   css   javascript
xx .html  ss.css ss.js
動態(tài)網(wǎng)站 根據(jù)登錄用戶的不同會顯示不同數(shù)據(jù)和頁面割岛。Python PHP  Java


xxx.py    xxx.php    xxx.jsp  xx.jar


a.php    100 
Redis  使用內(nèi)存存儲數(shù)據(jù)  好處是訪問速度快  熱點數(shù)據(jù) 可再生數(shù)據(jù)

CDN 把數(shù)據(jù)放到離用戶最近位置 

CDN 
快遞 要自取   西城    我東城    上海   ----> 訪問上海的服務(wù)器   北京 --->訪問北京服務(wù)區(qū)

案例2 : 把網(wǎng)站和數(shù)據(jù)庫服務(wù)分離,具體步驟如下:
    準(zhǔn)備1臺新的虛擬機(jī)犯助,并配置IP地址192.168.2.21  

    1  在192.168.2.21 安裝mariadb數(shù)據(jù)庫服務(wù)軟件 并運行服務(wù)
    
    2 登陸192.168.2.11主機(jī),備份數(shù)據(jù)庫并拷貝給新的服務(wù)器维咸,關(guān)閉舊的數(shù)據(jù)庫服務(wù) 

    3 登陸192.168.2.21主機(jī)剂买,創(chuàng)建空數(shù)據(jù)庫,使用備份文件還原數(shù)據(jù)庫

    4 修改wordpress網(wǎng)站配置文件癌蓖,調(diào)用新的數(shù)據(jù)庫服務(wù)器瞬哼。

    5 測試配置:在客戶端訪問http://192.168.2.11  依然可以登錄wordpress
    
 案例3:Web服務(wù)器集群
    準(zhǔn)備: 2臺新的虛擬機(jī) 配置IP分別為 192.168.2.12 和 192.168.2.13 
    
    1 部署web2和web3服務(wù)器 (192.168.2.12  和 192.168.2.13)
        1.1  安裝源碼Nginx軟件和PHP相關(guān)軟件
        1.2  修改nginx配置實現(xiàn)動靜分離:修改默認(rèn)首頁index.php,配置兩個location實現(xiàn)動靜分離


    2 部署NFS租副,將網(wǎng)站數(shù)據(jù)遷移至NFS共享服務(wù)器
        準(zhǔn)備1臺新的虛擬機(jī)坐慰,并配置IP地址192.168.2.31
        2.1 安裝提供NFS服務(wù)的軟件
        2.2 修改配置文件 設(shè)置共享目錄和客戶端的訪問權(quán)限
        2.3 啟動服務(wù)
        2.4 查看共享信息
        
    3 遷移舊的網(wǎng)站數(shù)據(jù)到NFS共享服務(wù)器
        3.1  將web1(192.168.2.11)上的wordpress代碼拷貝到NFS共享

        3.2 登陸nfs服務(wù)器,將壓縮包解壓

        3.3 清空192.168.2.11網(wǎng)頁目錄 ]# rm  -rf /usr/local/nginx/html/*

        3.4 清空 192.168.2.12和 13 的 網(wǎng)頁目錄]# rm  -rf /usr/local/nginx/html/*
  
   4 分別在3臺web服務(wù)器掛載NFS共享目錄用僧。
        4.1 查看nfs共享信息
        ]# which showmount  ||  yum -y  install nfs-utils
        [root@web13 ~]# showmount  -e  192.168.2.31
        Export list for 192.168.2.31:
        /web_share 192.168.2.0/24
        [root@web13 ~]# 

        4.2 設(shè)置fstab 開機(jī)掛載且永久掛載
        

  5 部署HAProxy代理服務(wù)器
    準(zhǔn)備1臺新的虛擬機(jī)结胀,在eth1網(wǎng)卡配置IP地址192.168.2.5
  
    5.1 安裝軟件,并手動修改配置文件(自己添加內(nèi)容)
    
    5.2 啟動服務(wù) 并查看服務(wù)狀態(tài)
    
    5.3 測試配置: 客戶端連接192.168.2.5 訪問網(wǎng)站服務(wù) (能夠訪問到頁面為成功)
    
 6 部署DNS域名服務(wù)器    休息 10分鐘  到  17:10 
   說明:為了節(jié)省真機(jī)硬件資源责循,用代理服務(wù)器同時提高dns服務(wù)糟港,
        所以在eth0網(wǎng)卡配置ip地址 192.168.4.5 模擬公網(wǎng)地址
        先前eth1網(wǎng)卡連接的是私有網(wǎng)絡(luò)
        
   6.1 安裝提高dns服務(wù)的軟件
   6.2 修改主配置文件,添加zone (定義管理的區(qū)域)
   
   6.3 修改正向解析記錄文件lab.com.zone
   
   6.4 啟動服務(wù) 
  
   6.5 客戶端指定 192.168.4.5 為DNS服務(wù)器 做主機(jī)名解析
   
   6.6  客戶端通過主機(jī)名訪問網(wǎng)站服務(wù)器 院仿,依然可以訪問網(wǎng)頁就對了 
   
   http://www.lab.com/testa.php
              
  
  6.7 修改wordpress配置文件(如果不添加這兩行配置秸抚,瀏覽器訪問網(wǎng)站某個子頁面后,URL會固定到某一臺后端服務(wù)器不輪詢歹垫。

警告:添加的這兩行必須與前面的域名解析一致0馈!E挪摇吭敢!)
  
     [root@web3 html]# vim /usr/local/nginx/html/wp-config.php
     define('WP_SITEURL', 'http://www.lab.com');
     define('WP_HOME', 'http://www.lab.com');
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市若贮,隨后出現(xiàn)的幾起案子省有,更是在濱河造成了極大的恐慌痒留,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蠢沿,死亡現(xiàn)場離奇詭異伸头,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)舷蟀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門恤磷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人野宜,你說我怎么就攤上這事扫步。” “怎么了匈子?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵河胎,是天一觀的道長。 經(jīng)常有香客問我虎敦,道長游岳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任其徙,我火速辦了婚禮胚迫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘唾那。我一直安慰自己访锻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布闹获。 她就那樣靜靜地躺著期犬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昌罩。 梳的紋絲不亂的頭發(fā)上哭懈,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機(jī)與錄音茎用,去河邊找鬼遣总。 笑死,一個胖子當(dāng)著我的面吹牛轨功,可吹牛的內(nèi)容都是我干的旭斥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼古涧,長吁一口氣:“原來是場噩夢啊……” “哼垂券!你這毒婦竟也來了誊薄?” 一聲冷哼從身側(cè)響起疯溺,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤聪姿,失蹤者是張志新(化名)和其女友劉穎袋励,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凳宙,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡熙揍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了氏涩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片届囚。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖是尖,靈堂內(nèi)的尸體忽然破棺而出意系,到底是詐尸還是另有隱情,我是刑警寧澤饺汹,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布蛔添,位于F島的核電站,受9級特大地震影響兜辞,放射性物質(zhì)發(fā)生泄漏作郭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一弦疮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜘醋,春花似錦胁塞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胎食,卻和暖如春扰才,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厕怜。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工衩匣, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粥航。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓琅捏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親递雀。 傳聞我的和親對象是個殘疾皇子柄延,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容