集羣:php
將多個物理機器組成⼀個邏輯計算機, 實現負載均衡和容錯
組成要素
1) VIP: ⼀個IP地址
2) 分發器: nginx
3) 數據服務器: Web服務器
html
集羣原理:虛擬主機+反向代理+upstream分發模塊組成的python
虛擬主機: 接受和響應請求
反向代理: 帶⽤戶去數據服務器拿數據
upstream: 告訴Nginx去哪一個數據服務器拿數據
• 數據⾛向
1) 虛擬主機接受⽤戶請求
2) 虛擬主機去找反向代理
3) 反向代理讓去找upstream
4) upstream 告訴 ⼀個數據服務器IP
5) Nginx去找數據服務器 併發起⽤戶的請求
6) 數據服務器接受請求並處理請求
7) 數據服務器響應請求給Nginx
8) Nginx響應請求給⽤戶
nginx
#upstream 模塊 upstream web { server 192.168.10.42; server 192.168.10.43; } server { listen 80; server_name localhost; location / { proxy_pass http://web; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
解析: 當用戶訪問該服務器時,nginx會做用分發至192.168.10.42/43 這個選擇由upstream去完成web
基於host分發:chrome
http { upstream web1 { server 192.168.10.42; } upstream web2 { server 192.168.10.43; } server { listen 80; server_name www.web1.com; location / { proxy_pass http://web1; } } server { listen 80; server_name www.web2.com; location / { proxy_pass http://web2; } } }
基於開發語⾔分發
yum -y install httpd php #安裝phph語言
systemctl start httpd #開啟httpd
echo "<?php phpinfo(); ?>" > /var/www/html/index.php #寫一個php文件
http { upstream php { server 192.168.10.42; } upstream html { server 192.168.10.43; } server { location ~* \.php$ { proxy_pass http://php; } } location ~* \.html$ { proxy_pass http://html; } }
基於瀏覽器的服務器
upstream elinks { server 192.168.10.42; } upstream chrome { server 192.168.10.43; } upstream any { server 192.168.10.42:81; } server { listen 80; server_name www.web1.com; location / { proxy_pass http://any; if ( $http_user_agent ~* Elinks ) { proxy_pass http://elinks; } if ( $http_user_agent ~* chrome ) { proxy_pass http://chrome; } } }
高可用性:併發
簡單說就是提升服務器的可用性,預防各種宕機後能夠重啟負載均衡
使用Keepalived 軟件,通過寫腳本,來監控nginxspa
slat
slat-master 安裝
yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm yum install salt-master