nginx集群

Nginx的负载均衡

喜你入骨 提交于 2019-12-06 14:02:39
算法介绍 ip_hash算法的原理很简单,根据请求所属的客户端IP计算得到一个数值,然后把请求发往该数值对应的后端。 所以同一个客户端的请求,都会发往同一台后端,除非该后端不可用了。ip_hash能够达到保持会话的效果。 ip_hash是基于round robin的,判断后端是否可用的方法是一样的。 第一步,根据客户端IP计算得到一个数值。 hash1 = (hash0 * 113 + addr[0]) % 6271; hash2 = (hash1 * 113 + addr[1]) % 6271; hash3 = (hash2 * 113 + addr[2]) % 6271; hash3就是计算所得的数值,它只和初始数值hash0以及客户端的IP有关。 第二步,根据计算所得数值,找到对应的后端。 w = hash3 % total_weight; while (w >= peer->weight) { w -= peer->weight; peer = peer->next; p++; } total_weight为所有后端权重之和。遍历后端链表时,依次减去每个后端的权重,直到w小于某个后端的权重。 选定的后端在链表中的序号为p。因为total_weight和每个后端的weight都是固定的,所以如果hash3值相同, 则找到的后端相同。 指令的解析函数

nginx反向代理 和部分优化

三世轮回 提交于 2019-12-06 12:39:26
准备环境 : 两台web服务 安装http 写入文档 并启动 yum -y install httpd echo "192.168.2.100" > /var/ www / html /index .html systemctl restart httpd 安装nginx 1. 配置Nginx服务器,添加服务器池,实现反向代理功能 修改/usr/local/nginx/conf/nginx.conf配置文件 http { .. .. #使用upstream定义后端服务器集群,集群名称任意 (如webserver ) #使用server定义集群中的具体服务器和端口 upstream webserver { server 192.168.2.100 : 80 ; server 192.168.2.200 : 80 ; } .. .. server { listen 80 ; server_name localhost ; location / { #通过proxy_pass将用户的请求转发给webserver集群 proxy_pass http : //webserver; } } /usr/ local / nginx / sbin /nginx -s reload 重新加载配置 curl http : //192.168.4.5 //使用该命令多次访问查看效果 2

k8s--资源控制器

谁说胖子不能爱 提交于 2019-12-06 10:28:25
资源控制器 1、什么是控制器 Kubernetes中内建了很多controller (控制器) ,这些相当于一个状态机,用来控制Pod的具体状态和行为 Pod 的分类 自主式 Pod:Pod 退出了,此类型的 Pod 不会被创建 控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目 2、控制器类型 ReplicationController和ReplicaSet Deployment DaemonSet StateFulSet Job/Cronjob Horizontal Pod Autoscaling 3、 ReplicationController和ReplicaSet ReplicationController (RC)用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收; 在新版本的Kubernetes中建议使用Replicaset来取代ReplicationController. ReplicaSet跟 ReplicationController没有本质的不同,只是名字不一样,并且ReplicaSet支持集合式的selector; apiVersion: extensions/v1beta1 kind: ReplicaSet metadata: name:

k8s实践(十四):Pod驱逐迁移和Node节点维护

本秂侑毒 提交于 2019-12-06 10:00:53
环境说明: 主机名 操作系统版本 ip docker version kubelet version 配置 备注 master Centos 7.6.1810 172.27.9.131 Docker 18.09.6 V1.14.2 2C2G master主机 node01 Centos 7.6.1810 172.27.9.135 Docker 18.09.6 V1.14.2 2C2G node节点 node02 Centos 7.6.1810 172.27.9.136 Docker 18.09.6 V1.14.2 2C2G node节点 k8s集群部署详见: Centos7.6部署k8s(v1.14.2)集群 k8s学习资料详见: 基本概念、kubectl命令和资料分享 emptyDir详见: 存储卷和数据持久化(Volumes and Persistent Storage) 一、背景 当node节点进行如打补丁、操作系统升级等操作时,需停机维护,这就涉及pod驱逐迁移,本文将详细介绍node节点维护的整个过程。 二、pdb简介 pdb为poddisruptionbudgets缩写,意为主动驱逐保护; 没有pdb。当进行节点维护时,如果某个服务的多个pod在该节点上,则节点的停机可能会造成服务中断或者服务降级。举个例子,某服务有5个pod,最低3个pod能保证服务质量

项目 - 云盘项目(整体流程)

浪子不回头ぞ 提交于 2019-12-06 02:48:34
项目架构: client(客户端)---nginx(负载均衡、反向代理)---nginx(web服务器、文件上传下载业务逻辑、fastCGI编程)---mysql(存储用户信息)+redis(缓存)+fastFDS(开源文件系统、存储到硬盘) fastFDS框架:client(上传下载者)---tracker(管理者)---storage(存储节点) fastFDS集群:client(大量访问)、tracker(防止单点故障)、storage(稳定性:同组备份、扩展性:不同组扩容) // redis使用:  数据结构:   string字符串(最基本数据类型)   list列表(类似数组)   set集合(会自行排序、去重)   sortedset有序集合(按设定权重自动排序,去重)   hash哈希(键值对,存有多个字段的对象)。  对key(类似表名)操作:   keys(配合通配符使用):列出当前数据库中的key   type / rename:看key的数据类型 / 重命名key   del / exists:删除 / 查看是否存在   expire / ttl / persist:设定生存时间 / 查看剩余时间 / 去除生存时间。  其他功能:发布/订阅,事务(隔离,原子操作)。  持久化配置:   快照(rdb文件):将内存里面的数据以二进制形式拷贝到硬盘上;  

k8s-web集群架构从零开始(2)

帅比萌擦擦* 提交于 2019-12-06 00:50:07
附上链接: docker构建web集群: https://my.oschina.net/daba0007/blog/1605365 kubenetes与web集群: https://my.oschina.net/daba0007/blog/1602425 k8s-web集群架构从零开始(1): https://my.oschina.net/daba0007/blog/1604526 web集群 我使用的是django做为架构来搭建web。这里web前端的内容我就不做扩展了,我还是使用上次随便写的那个网站来做测试。不过web集群在这里和docker当时的做法不太一样了。之前我们是使用了web容器和nginx容器共享数据卷容器来实现网站数据共享。 nginx是一个高性能的HTTP和反向代理服务器,在web集群中我们使用它做为http的代理服务器,在k8s中,我们完全可以把这web容器和nginx容器写在一个同一个pod里面,因为他们共享着数据卷,关系十分地亲密。 使用django连接mysql和redis服务主要是在setting中修改。 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'form', 'USER':'root', 'PASSWORD':'123456', #'HOST':

Session分布式共享 = Session + Redis + Nginx

非 Y 不嫁゛ 提交于 2019-12-06 00:21:58
原文: Session分布式共享 = Session + Redis + Nginx 一、 Session 1、 Session 介绍 我相信,搞Web开发的对Session一定再熟悉不过了,所以我就简单的介绍一下。 Session:在计算机中,尤其是在网络应用中,称为“会话控制”。 每个用户(浏览器)首次与web服务器建立连接时,就会产生一个Session,同时服务器会分配一个SessionId给用户的浏览器。我们可以用Fiddler查看cookies中,会看到有一个ASP.Net_SessionId的cookie。大家都知道Http是无状态请求,但是ASP.Net中的Session仿佛又让Http请求变得有状态,其核心就在于这个叫ASP.Net_SessionId的cookie。大家可以想象一下,这个相当于数据库的Key,服务器那边再有个Session内容缓存表,是不是Session的内容就很容易得到了?当然Session不是那么简单,但Session原理不是本文介绍重点,所以请大家自行度娘。 2、又爱又恨的 Session 刚接触程序开发的人一定爱死Session了,因为Session让Http从无状态变成有状态了,页面之间传值、用户相关信息、一些不变的数据、甚至于查出来的DataTable也可以放进去,取值的时候只需要Session[Key]即可,真是方便极了

Nginx 配置高可用的集群

白昼怎懂夜的黑 提交于 2019-12-05 18:11:36
1、什么是 nginx 高可用? “高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。Nginx于Keepalived可以实现高可用,实现双机热备+自动切换; 2、但是怎么实现 实现双机热备+自动切换 呢?   需要在服务器安装 keepalive,以及编写脚本;以下开始搭建 3、环境准备 3.1   (1)需要两台 nginx 服务器 (2)需要 keepalived (3)需要虚拟 ip 3.2 配置高可用的准备工作   ( 1)需要两台服务器 192.168.2.112 和 192.168.2.113    (2)在两台服务器安装 nginx (3)在两台服务器安装 keepalived 4、在两台服务器安装 keepalived    (1)使用 yum 命令进行安装 yum install keepalived –y (2)安装之后,在 etc 里面生成目录 keepalived,有文件 keepalived.conf 5、完成高可用配置(主从配置) (1)修改/etc/keepalived/keepalivec.conf 配置文件 global_defs { notification_email { acassen@firewall.loc failover@firewall.loc

Nginx的负载均衡和项目部署

 ̄綄美尐妖づ 提交于 2019-12-05 17:41:40
nginx的作用 Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成 集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中, 实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾 Nginx要实现负载均衡需要用到proxy_pass代理模块配置 Nginx负载均衡与Nginx代理不同地方在于 Nginx代理仅代理一台服务器,而Nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池 Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。 upstream配置 在nginx.conf > http 区域中 upstream django { server 10.0.0.10:8000; server 10.0.0.11:9000; } 在nginx.conf > http 区域 > server区域 > location配置中 添加proxy_pass location / { root html; index index.html index

打倒apache的它

半世苍凉 提交于 2019-12-05 16:29:00
Nginx这大哥近些年可谓是顺风顺水,Nginx逐步进入高速发展的时期,从各类主流的IT媒体到各大著名的IT论坛,我们不时能够看到它的身影。 阿雨总结了一些为啥这老哥能够出人头地的几个主要原因,如有偏差,轻点喷啊! Nginx的成功要归功于以下几点 一,在设计之初就已经形成的不同于其他同类产品的设计理念和架构体系 。 二,功能强大,操作简单 开源啊(铁子,这点很重要啊) 这哥们就是创始人(阿雨感觉还没我帅,不过他是真牛) 那么阿雨就来简单解释以下这几点 设计理念和架构体系 我估计当初Nginx创始人和他的团队应该是想,"MD,现在市场不好干啊,而且大多都让apache这小子抢走了,我也不能干看着啊,我得来点绝活,整个他解决不好的问题。“ 于是这帮人就说,”老大,要不咱么开源吧,apache他不是解决高并发解决的不太好吗,咱就整这个。“他们这帮人头脑清醒,逻辑缜密,刚开始的想法就成就了现在的高度,当然啊,他们技术是没得说啊! 功能强大,操作简单 Nginx这哥们是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。 老N特点是这么多: 稳定性高、丰富的功能集 示例配置文件和低系统资源的消耗 高性能Web和反向代理服务以及负载均衡 (一)老N稳定性高是肯定的, 代码完全用C语言从头写成,已经移植到许多体系结构和操作系统