web网站架构和Nginx ①:网站架构原理
②:LNMP(基于python的web架构) Linux+nginx+mysql+python 静态资源:客户端从服务器获得的资源表现形式与原文件相同 动态资源:通常是程序文件,需要服务器执行后,将执行结果返回给客户端。
注意:httpd服务器是纯静态的web服务器。
③:主流httpd服务器:Apache Nginx
④:WSGI:Web服务器网关接口(Python Web Server Gateway Interface) Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。 自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。
⑤:Nginx介绍 是一款开源的轻量级的高性能的静态资源web服务器、同时也是非常优秀反向代理服务器、缓存服务器、邮件代理服务器。 最早由俄罗斯程序员伊戈尔•赛索耶夫开发,官方主页http://nginx.org 理念和apache不一样,占用内存少、并发能力强、在中国大陆绝大部分的网站服务器都在使用。 属于web服务器解决方案领域的新贵,市场份额一路飙升。基于异步非阻塞I/O模型
安装方法: 源码:编译安装 官方的deb包 sudo apt-get -y install nginx
配置文件目录:/etc/nginx 主配置文件: /etc/nginx/nginx.conf uwsgi参数配置文件:/etc/nginx/uwsgi_params 被主配置文件包含的配置文件:/etc/nginx/sites-available/default 网页根路径:/var/www/html
⑥:wsgi的web实现 cd /tmp sudo apt-get -y install build-essential python3-dev python3-pip python-pip curl sudo pip3 install uwsgi sudo curl http://uwsgi.it/install | bash -s default /tmp/uwsgi sudo mkdir /myweb cd /myweb sudo vim test.py
def application(env,start_response): body = ‘hello ujiuye.’ status = ‘200 OK’ headers = [(‘content-type’, ‘text/html’), (‘content-length’,str(len(body))) ] start_response(status,headers) return [body.encode()]
sudo uwsgi --http :9090 --wsgi-file /myweb/test.py --master --processes 4 --threads 2
LINUX+NGINX+UWSGI+MYSQL
⑦:Nginx反向代理uwsgi,实现静态页面和动态页面的分离 Nginx实现反向代理,需要基于proxy模块,语法如下
server { listen server_name location / { proxy_pass } }
sudo nginx -t (检查语法) sudo service nginx restart (重启服务)
集群概念: 集群(cluster),也称为群集,表示一群的意思,在服务器领域表示大量的服务器的集合体。 计算机性能扩展方案 ①纵向扩展 ②横向扩展—>集群
企业级集群分类: ①负载均衡集群(LB---->Load Balance) ②高可用集群(HA—>High Availability) ③高性能集群(HP)
1:负载均衡集群(LB) 在企业网站架构中,提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体能力。 例如“DNS轮询”“应用层交换”“反向代理”等都可做负载均衡群集。 LB负载分配依赖于主节点的算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。
负载均衡集群实现方式 ①:硬件方式 F5 A10 Citrix NetScaler array 梭子鱼 绿盟 … ②:软件方式:LVS haproxy nginx ats …
2:高可用集群(HA) 提高应用系统的可靠性,尽可能减少终端时间为目标,确保服务的连续性,达到高可用(HA)的容错效果,例如“故障切换”“双机热备”“多机热备”等都属于高可用群集技术 HA工作方式包括双工和主从两种模式。双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从才切换为主节点。
HA软件实现方式:keepalived heartbeat corosync cman
一:Nginx集群
1:Nginx除了是一个强大的静态web服务器,也是强大的负载均衡器,它通过应用层完成负载均衡, 构建成负载均衡集群的架构。Nginx的集群本质上是基于反向代理来实现。
2:Nginx的代理模块 upstream模块(ngx_http_upstream) uwsgi模块(ngx_http_uwsgi) proxy模块(ngx_http_proxy)
3:使用upsteam负载均衡模块定义Nginx负载均衡 配置语法: 注意:只能定义在http配置段中 upstream name { [ip_hash] #源地址hash绑定算法 server backend1.example.com [weight=5];(权重) server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;(表示如果请求上游发生错误3次,超时30s,将连接不上的上游节点下线) server backup1.example.com backup|down;(备份节点,如果需要可以顶上 | 永久下线) }
表示加权轮询上游被调度的服务器10.10 和10.20 注意:定义upsteam后,上游服务器在proxy_pass中需要改成upsteam命名的名称
二:keepalive理论介绍 高可用:active/backup 主节点和备节点,在主节点出现故障,能自动切换到备节点。 在高可用集群解决方案中,keepalived属于最为流行,轻量化的HA解决方案,需要经常辅助脚本进行运行工作。
高可用思路:①为了实现高可用,需要配置VIP,提供同一个访问接口地址。 ②主节点出现故障,备节点必须第一时间将VIP抢占过来,备节点必须时刻监控主节点的健康状态。 ③若不是负载均衡调度器,还需考虑共享资源的安全转移,而不仅仅是VIP。 ④若主节点健康并恢复服务,备节点需要将VIP还给主节点。 ⑤主节点需要定时向备节点通知自己的健康状态,让备节点实时了解主节点健康状态。 ⑥主节点、备节点包括整个网络架构时间必须是精确同步,需要基于ntp服务进行同步时间。
VRRP协议:虚拟路由冗余协议 是针对路由器冗余的一种解决方案,目的是为了解决局域网中配置默认网关的单点失效问题, 由于网关IP地址为唯一,将多个路由抽象为一个虚拟路由,使用一个IP地址。 此IP地址不是物理IP地址,而是虚拟的IP地址,即VIP。在某个路由器出现故障情况下,不影响正常的路由工作。 VRRP说白了就是实现IP地址漂移的,是一种容错协议 基于VRRP协议实现多路由同时工作可以实现多路(负载均衡)工作效果。
三:keepalived安装和使用 Keepalived程序由C语言开发,轻量、性能强大。 可以使用apt-get方式进行安装,也可以使用编译安装,区别不大,建议使用apt-get安装 /etc/keepalived/keepalived.conf keepalived主配置文件 /etc/init.d/keepalived 服务启停脚本文件
①:sudo apt-get -y install nginx vim openssh-server openssh-client daemon keepalived ②:sudo vim /etc/keepalived/keepalived.conf ③:sudo service keepalived start ④:sudo service keepalived status