集群:
将多个物理机器组成⼀个逻辑计算机, 实现负载均衡和容错
组成要素
1) VIP: ⼀个IP地址
2) 分发器: nginx
3) 数据服务器: Web服务器
集群原理:虚拟主机+反向代理+upstream分发模块组成的
虚拟主机: 接受和响应请求
反向代理: 带⽤户去数据服务器拿数据
upstream: 告诉Nginx去哪个数据服务器拿数据
• 数据⾛向
1) 虚拟主机接受⽤户请求
2) 虚拟主机去找反向代理
3) 反向代理让去找upstream
4) upstream 告诉 ⼀个数据服务器IP
5) Nginx去找数据服务器 并发起⽤户的请求
6) 数据服务器接受请求并处理请求
7) 数据服务器响应请求给Nginx
8) 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去完成
基於host分發:
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 軟件,通過寫腳本,來監控nginx
slat
slat-master 安裝
yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm yum install salt-master