Linux之Nginx,keepalived

举报
冬晨夕阳 发表于 2022/03/30 00:17:48 2022/03/30
【摘要】 web网站架构和Nginx ①:网站架构原理 ②:LNMP(基于python的web架构) Linux+nginx+mysql+python 静态资源:客户端从服务器获得的资源表现形式与原文件相同 动态...

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

文章来源: blog.csdn.net,作者:考古学家lx,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_43582101/article/details/85332058

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。