課程知識(shí)回顧
1 實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)遷移
1) mysqldump -uroot -poldboy123 -A >/tmp/mysql.bak
2) scp /tmp/mysql.bak 172.16.1.5:/tmp/mysql.bak
3) mysql -uroot -poldboly123 </tmp/mysql.bak
4) grant all on wordpress.* to 'wordpress'@'172.16.1.%' identified by 'oldboy123'
vim/ /thml/blog/wp-config.php
2 實(shí)現(xiàn)網(wǎng)站數(shù)據(jù)共享存儲(chǔ)
1) showmount -e 172.16.1.31
2) wordpress cd/html/bolg/wp-content/uploads
3) mount -t nfs 172.16.1.31:/data/blog /html/bolg/wp-content/uploads
3 實(shí)現(xiàn)網(wǎng)站域名修改
1) 修改nginx配置文件信息
2) 修改代碼或數(shù)據(jù)庫(kù)信息
3) 重啟nginxfuwu
4) 修改本地DNS文件
4 負(fù)載均衡概念
負(fù)載作用
1)對(duì)網(wǎng)站用戶請(qǐng)求進(jìn)行調(diào)度處理
2)減少web網(wǎng)站壓力
負(fù)載均衡實(shí)現(xiàn)
硬件方式實(shí)現(xiàn) F5 A10 (廠商培訓(xùn))
軟件方式實(shí)現(xiàn)
nginx 利用網(wǎng)路4層或7層功能實(shí)現(xiàn)負(fù)載均衡
LVS 利用網(wǎng)路4層或7層功能實(shí)現(xiàn)負(fù)載均衡
haproxy 利用網(wǎng)路4層或7層功能實(shí)現(xiàn)負(fù)載均衡 (功能更強(qiáng)大\圖形界面)
集群 多臺(tái)服務(wù)器完成相同的工作
反向代理 外網(wǎng)用戶 可以訪問內(nèi)網(wǎng)服務(wù)器
正箱代理 內(nèi)網(wǎng)用戶 可以訪問外網(wǎng)服務(wù)器
5 實(shí)現(xiàn)負(fù)載均衡配置
vim /etc/yum/repos.dnginx.repo
yum -y install ngixn
1) 搭建web集群
2) 分發(fā) 測(cè)試
3) 負(fù)載君衡服務(wù)器上配置
負(fù)載均衡詳述部分
Syntax: upstream name { ... } --- 指定可以分配用戶請(qǐng)求web節(jié)點(diǎn)信息
Default: —
Context: http
分配后端節(jié)點(diǎn)方式方法:
1. 根據(jù)能力進(jìn)行分配用戶訪問請(qǐng)求
weight --權(quán)重 按比例進(jìn)行權(quán)重分配訪問資源
upstream oldboy {
server 10.0.0.7:80 weight=3;
server 10.0.0.8:80 weight=1;
server 10.0.0.9:80 weight=2;
}
2. 根據(jù)后端節(jié)點(diǎn)健康狀態(tài)分配資源
max_fails=3 --- 向有問題的節(jié)點(diǎn)發(fā)送請(qǐng)求的次數(shù)
fail_timeout=5s --- 指定多久以后給用問題節(jié)點(diǎn)再次發(fā)送請(qǐng)求
3. 根據(jù)后端節(jié)點(diǎn)狀態(tài)進(jìn)行熱備節(jié)點(diǎn)使用
upstream oldboy {
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80 backup;
}
4. 根據(jù)后端節(jié)點(diǎn)連接數(shù)進(jìn)行分配請(qǐng)求
least_conn 連接數(shù)少的多分配請(qǐng)求;
upstream oldboy {
least_conn;
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
5. 根據(jù)用戶源IP地址hash值分配請(qǐng)求
ip_hash; 缺陷: 負(fù)載不均
10.0.0.1 --- 100 0 - 100 web01 wordpress
10.0.0.2 --- 202 負(fù)載均衡 101 - 200 web02 wordpress
10.0.0.3 --- 300 201 - 300 web03 wordpress
Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
第一個(gè)功能配置: 經(jīng)過(guò)負(fù)載均衡訪問網(wǎng)站看到不同的頁(yè)面信息
環(huán)境準(zhǔn)備:
第一個(gè)歷程: web01-web03服務(wù)器配置三個(gè)網(wǎng)站文件
第二個(gè)歷程: 配置站點(diǎn)目錄資源
web01
mkdir /html/{www,bbs,blog} -p
for name in www bbs blog; do echo "web01 $name.oldboy.com" >/html/$name/oldboy.html;done
web02
mkdir /html/{www,bbs,blog} -p
for name in www bbs blog; do echo "web02 $name.oldboy.com" >/html/$name/oldboy.html;done
web03
mkdir /html/{www,bbs,blog} -p
for name in www bbs blog; do echo "web03 $name.oldboy.com" >/html/$name/oldboy.html;done
proxy_set_header -- 修改請(qǐng)求頭信息
proxy_set_header Host $host;
upstream oldboy {
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://oldboy;
proxy_set_header Host $host;
}
}
第二個(gè)功能配置: 讓web節(jié)點(diǎn)日志中顯示真實(shí)用戶IP地址
proxy_set_header -- 在請(qǐng)求頭中添加信息
upstream oldboy {
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://oldboy;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
第三個(gè)功能配置: 根據(jù)頁(yè)面顯示信息進(jìn)行健康檢查
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://oldboy;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_next_upstream error timeout invalid_header http_404;
}
}
說(shuō)明: 給用戶顯示的頁(yè)面一定是正常的頁(yè)面信息
企業(yè)實(shí)際應(yīng)用過(guò)程:
1) 利用負(fù)載均衡實(shí)現(xiàn)動(dòng)靜分離
準(zhǔn)備環(huán)境:
動(dòng)態(tài)集群: web01 uri /dynamic --- 顯示頁(yè)面 dynamic.oldboy.com
靜態(tài)集群: web02 uri /static --- 顯示頁(yè)面 static.oldboy.com
上傳集群: wen03 uri /upload --- 顯示頁(yè)面 upload.oldboy.com
web01:
echo dynamic.oldboy.com >/html/www/index.html
修改:
mkdir /html/www/dynamic
mv /html/www/index.html /html/www/dynamic
web02:
echo static.oldboy.com >/html/www/index.html
修改:
mkdir /html/www/static/
mv /html/www/index.html /html/www/static
web03:
echo upload.oldboy.com >/html/www/index.html
修改:
mkdir /html/www/upload
mv /html/www/index.html /html/www/upload
負(fù)載均衡服務(wù)器配置:
upstream dynamic {
server 10.0.0.7:80;
}
upstream static {
server 10.0.0.8:80;
}
upstream upload {
server 10.0.0.9:80;
}
server {
listen 80;
server_name localhost;
location /dynamic/ {
proxy_pass http://dynamic;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_next_upstream error timeout invalid_header http_404;
}
location /static/ {
proxy_pass http://static;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_next_upstream error timeout invalid_header http_404;
}
location /upload {
proxy_pass http://upload;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_next_upstream error timeout invalid_header http_404;
}
}
2) 利用負(fù)載均衡根據(jù)客戶端顯示不同頁(yè)面信息
準(zhǔn)備環(huán)境:
iphone iphone web01 iphone.oldboy.com
chrome chrome web02 chrome.oldboy.com
default default web03 default.oldboy.com
web01
echo iphone.oldboy.com > /html/bbs/index.html
web02
echo chrome.oldboy.com > /html/bbs/index.html
web03
echo default.oldboy.com > /html/bbs/index.html
配置負(fù)載均衡服務(wù)器:
location / {
if ($http_user_agent ~* Android) {
proxy_pass http://iphone;
}
if ($http_user_agent ~* chrome) {
proxy_pass http://chrome;
}
proxy_pass http://default;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_next_upstream error timeout invalid_header http_404;
}
課程知識(shí)總結(jié)
1) 負(fù)載均衡服務(wù)部署過(guò)程
upstream 模塊 如何進(jìn)行調(diào)度分配資源
proxy 模塊 proxy_set_header 無(wú)法顯示不同網(wǎng)站頁(yè)面/日志文件記錄真實(shí)IP地址
2) 負(fù)載均衡企業(yè)應(yīng)用過(guò)程
1) 實(shí)現(xiàn)網(wǎng)站動(dòng)靜分配配置
2) 實(shí)現(xiàn)不同客戶端訪問顯示不同頁(yè)面