您当前的位置:首页 > 电脑百科 > 安全防护 > 服务器/网站

基于云落地SLB+Tengine实现高可用集群负载均衡 - 中

时间:2020-06-23 11:03:57  来源:  作者:

 

虚拟主机

如果不用Nginx,仅仅只是Tomcat,要想在同一个80端口下去开多个http服务是不行的,只能开一个,但是使用nginx后,可以开多个,并且可以针对不同的域名去进行访问和配置,这就是虚拟主机的功能。而配置中的server就是一个虚拟主机。

基于云落地SLB+Tengine实现高可用集群负载均衡 - 中

 

如上图,用户如果需要配置3个域名的网站,那么就得购买3台服务器。而如果使用了nginx的虚拟主机功能,那么就只需要购买一台服务器,随后通过nginx的虚拟主机功能开启3个server即可,这么一来可以节约成本,不会造成资源浪费,可以参考下图。

基于云落地SLB+Tengine实现高可用集群负载均衡 - 中

 

以下是虚拟主机的配置,包含了反向代理:

  • 修改几个html,如下: /usr/local/tengine/html中的index.html复制多份进行修改,用以区别各个页面
  • 云服务器预先配置好二级域名,如下:
  • 配置虚拟主机server server { listen 80;
    server_name imooc.imoocdsp.com;
    location / {
    root html;
    index imooc.html;
    }
    }
    server {
    listen 80;
    server_name course.imoocdsp.com;
    location / {
    root html;
    index course.html;
    }
    }
    server {
    listen 80;
    server_name teacher.imoocdsp.com;
    location / {
    root html;
    index teacher.html;
    }
    }
  • 浏览器访问如下三个域名得到的结果不同: http://imooc.imoocdsp.com/ http://course.imoocdsp.com/ http://teacher.imoocdsp.com/

反向代理

虚拟主机、集群负载均衡基于反向代理,所以得理解反向代理。反向代理就是用户的请求会被代理服务器(nginx/tengine)进行转发,由代理服务器来决定用户的请求访问会到达哪个内网计算机节点,那么这种代理称之为反向代理。

基于云落地SLB+Tengine实现高可用集群负载均衡 - 中

 

如上图,用户请求会先到达nginx,然后再由nginx决定这个请求最终转发到某些内网的计算机节点,转发过程透明,用户不知道,并且内网的节点是无法直接被外部访问的,必须经过nginx。我们可以举一个生活中的例子,比如开学去学校报到,学生分班不是由自己决定的,会由教务处来决定该学生去哪个班级报到,如下图,学生就是用户,报到上学这个过程就是发起的请求,反向代理服务器就是教务处,具体的某个班级就是内网计算机节点,教务处怎么分班的这个过程学生不知道,是透明的,学生分班必须经过教务处,无法直接去上课:

基于云落地SLB+Tengine实现高可用集群负载均衡 - 中

 

常见的反向代理场景:负载均衡,虚拟主机等

题外话,什么是正向代理,用户请求经过公网到达目标服务器的过程,会经过正向代理,在家里我们用路由器,路由器之上就是宽带运营商,他们都给你做了一层限制,比如限制网速,限制端口等,他们的作用就是正向代理。可以参考如下图:

基于云落地SLB+Tengine实现高可用集群负载均衡 - 中

 

图中左侧,我通过路由器为自己和媳妇分别设置了上网速度,因为媳妇经常购物,给他做一些限制,这就是正向代理的基本作用了,我们请求经过自己路由器到达公网再到达右侧的目标服务器,这里的目标服务器就是反向代理服务器了。举个生活中的例子,中考高考的时候我们填志愿,学生就是上网用户,填志愿最终经过教务处,教务处会给我们一定的参考意见,随后志愿分发到全国。道理是一样的。再举一个例子,比如有些公司,会禁止对外网的访问,如果你要访问外网,那么必须启动vpn或者代理服务器,你的所有请求会经过这个代理,你发了什么数据他也知道,可能会限制你访问网盘这类网站,这个就是正向代理。

配置集群(用阿里云1个nginx+2个tomcat)

下面的都用到了线上的阿里云,已经购买5台。其中3台搭建了tomcat,另外2台搭建tengine。我们使用其中一台作为演示负载均衡的效果,最终结合阿里云的SLB负载均衡器来演示高可用。

集群就是人多力量大,目的可以分担流量压力,提升整体系统的并发能力。一人搬砖总没有多个人帮你一起搬砖来的舒服嘛。

集群需要配置上游模块upstream,www.abc.com为上游模块的名称。

阿里云的tengine-master配置:
upstream www.abc.com {
        server 172.19.36.76:8099 weight=1;
        server 172.19.36.77:8099 weight=1;
        keepalive 32;
    }

    server {
        listen       80;
        server_name  101.133.214.131;

        location / {
            proxy_pass  http://www.abc.com;
#            root   html;
#            index  index.html index.htm;
        }

    }

server可以配置1个或者多个,代表用户请求进来被反向代理到这个某个tomcat节点,

upstream www.abc.com {
    server 192.168.1.171:8080;
    server 192.168.1.172:8080;
    server 192.168.1.173:8080;
}

用户请求通过访问www.123.com,反向代理到upstream所对应的3个tomcat节点,这个就是3台tomcat组成的集群,如果说1个tomcat能够支持的并发为150,那么3台就差不多是450上下。

server {
    listen       80;
    server_name  www.123.com;

    location / {
        # 把请求代理到upstream对应的tomcat集群中
        proxy_pass  http://www.abc.com;
    }
}

负载均衡 - 轮询

配置集群的时候其实默认就有负载均衡,默认的是轮询。负载均衡算法有如下几种:

  • 轮训,如下所示,这是默认的三节点集群使用了默认的轮询负载均衡算法。轮询就是用户请求进来会一个一个的分别分配到这三个节点去处理。

举两个例子:

  1. 就好比胖头陀和瘦头陀去食堂打饭,有30个馒头,不论你胖瘦高矮,食堂阿姨一人分15个馒头。
  2. 再举个栗子,就好比皇宫佳丽三千,你应该要干嘛?雨露均沾吧,7个不同的妃子,每天一个轮训着平均分配资源,对吧。
upstream www.abc.com {
    server 192.168.1.171:8080;
    server 192.168.1.172:8080;
    server 192.168.1.173:8080;
}

负载均衡 - 权重weight

按照一定的比率去分配流量的访问,权重越大,被访问到的几率也就越大。一般来说服务器的硬件配置整体性能层次不齐,有的好有的不好,所以,相对来说性能不好的权重分配少一些,性能好的服务器权重分配高一些,这样不同节点承载的压力也就不同了。

举两个例子:

  1. 就好比胖头陀和瘦头陀去食堂打饭,有30个馒头,阿姨看胖头陀很胖,分配20个馒头,瘦头陀很瘦,吃的少,分配10个馒头。
  2. 再举个栗子,就好比皇宫佳丽三千,你应该要干嘛?每个人有不同的喜好,甄嬛长得漂亮一些,自然权重也会高一些,咖妃长得太黑了,自然权重少一些。

具体配置如下:

upstream www.abc.com {
    server 192.168.1.171:8080 weight=1;
    server 192.168.1.172:8080 weight=3;
    server 192.168.1.173:8080 weight=2;
}

负载均衡 - ip_hash(不演示了)

根据用户请求过来的ip做哈希,ip一定是固定的,所以哈希的值也是固定的,这样用户请求到的tomcat节点也是固定的,这种方式可以保证用户会话不会丢失,永远存在,但是如果用户切换网络,比如从wifi到4g,则会导致会话丢失。

举个例子,我人在上海,拨打110,由于我所在的地域是上海,那么对方接通的肯定是上海公安局,如果我现在去了南京,这个时候拨打110,那么运营商根据我所在地分配的接听电话就是江苏公安局了。对吧,这是一个道理,就是根据你的地址来源进行服务节点的分配处理。

配置代码示例:

upstream www.abc.com {
    ip_hash;
    server 192.168.1.171:8080 weight=1 max_conns=180;
    server 192.168.1.172:8080 weight=3;
    server 192.168.1.173:8080 weight=2;
}

负载均衡 - url_hash(不演示了)

和iphash同理,用户请求,在浏览器中访问的url,根据这个做hash,分配到不同的节点。

小节

常用的负载均衡算法为 加权轮询,iphash是用的最少甚至不用,因为会造成请求并发量倾斜,容易导致固定的某个节点宕机。

提一下动静分离,架构师课程中,把静态代码发布到nginx,实现动静分离。当然也可以静态代码(JS/css/HTML)放到CDN会更好。

加餐:什么是动静分离

提到动静分离就会想到前后端分离,各种分,分分合合的。

  • 前后端分离就是前后端开发人员所做的本质工作拆开,以前写jsp的时候,前端后端都是由同一个程序员去做的,随着互联网的发展,工作职能开始拆分,那么前端工作量比如js/css/html这些都会由前端去做,称之为frontEnd,后端人员负责JAVA代码开发,接口提供,称之为backEnd。这就是前后端分离。
  • 既然前后端分离了,那么代码肯定是解耦的,是两块不一样的代码,前端归前端,后端归后端。那么这个时候我们就可以借助nginx去实现动静分离部署,其实也就是前端通过nginx静态资源映射,后端通过nginx实现tomcat集群部署,如此一来,用户请求进来到达nginx,那么前端请求访问静态页面,后端接口调用会通过nginx来代理到各自的tomcat节点。那么在架构师体系功课程中,我们就是采用的前后端分离开发外加动静分离进行部署的。具体的结构图如下: 附:如果nginx有2台,那么一台负责虚拟静态资源,另外一台负责反向代理也可以。本质上就是使用了2个location来做了2个虚拟主机,一个做静态资源,一个做tomcat反向代理,动静分离可以把动静请求分离,减少tomcat请求压力。ok吧。


Tags:云落地SLB+Tengine   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
虚拟主机如果不用nginx,仅仅只是tomcat,要想在同一个80端口下去开多个http服务是不行的,只能开一个,但是使用nginx后,可以开多个,并且可以针对不同的域名去进行访问和配置,这就是...【详细内容】
2020-06-23  Tags: 云落地SLB+Tengine  点击:(110)  评论:(0)  加入收藏
▌简易百科推荐
在最近的一波攻击中,黑客利用多个插件中未修补的漏洞攻击了 160 万个 WordPress 网站。 易受攻击的插件对 WordPress 网站产生了的巨大攻击数据。 Wordfence 最近发现 WordPr...【详细内容】
2021-12-16  蚁安    Tags:WordPress   点击:(9)  评论:(0)  加入收藏
事件起因从安全分析系统里面发现一条带有病毒的下载,然后针对这条记录展开了一系列的分析分析过程1.登录到被感染服务器,查看系统状况,hadoop 这个用户在 2020/6/18 20:32 从这...【详细内容】
2021-11-23  Z2990Lig    Tags:SSH   点击:(32)  评论:(0)  加入收藏
1、除了服务器需要用的一些正规软件,其它都不要安装。2、在用户中把administrator改名,这样做的目的是即使对方暴破了我们的密码用户名也不容易猜住,相当于又加了一道关卡。...【详细内容】
2021-11-01  IT小哥吧    Tags:服务器   点击:(37)  评论:(0)  加入收藏
账户安全(1)更名administrator本地用户并禁用guest账户步骤:点击“开始”,找到“管理工具”,点击里面的“计算机管理”,找到“本地用户和组” (2)设定账户锁定策略尝试5次失败...【详细内容】
2021-10-12  Kali与编程  今日头条  Tags:Windows主机   点击:(62)  评论:(0)  加入收藏
本文主要介绍以Microsoft的Windows Server 2019 ,版本:Datacenter(Domain Controller)安全加固保护.企业随着规模不断扩大,业务增多,信息安全建设是企业里一条只有重点没有终点...【详细内容】
2021-09-17  Vireshark    Tags:服务器安全   点击:(64)  评论:(0)  加入收藏
目录常见共享命令IPC$IPC$的利用条件1:开启了139、445端口2:目标主机开启了IPC$共享3:IPC连接报错IPC空连接空连接可以做什么?(毫无作用)IPC$非空连接IPC$非空连接可以做什么?di...【详细内容】
2021-09-16  网络说安全    Tags:系统安全   点击:(86)  评论:(0)  加入收藏
昨天一个老哥找到我,说他的服务器这几天一直被CC攻击,问我这边有没有什么解决的方法? 近年来,网络攻击事件越来越频繁,最常见的就是CC攻击和DDOS攻击,主要的区别就是针对的对象不...【详细内容】
2021-09-10  小蚁GDRAGON    Tags:cc攻击   点击:(58)  评论:(0)  加入收藏
网站页面上的登录操作,通常都是输入帐号密码,传输至网站后台验证。在网站页面、数据传输中,通过技术手段,都可以得到用户输入的信息,并可以修改,从而发起网络攻击。典型的如:使用自...【详细内容】
2021-08-30  修丹道的程序猿    Tags:登录方式   点击:(62)  评论:(0)  加入收藏
网络安全研究人员披露了一类影响主要 DNS 即服务 (DNSaaS) 提供商的新漏洞,这些漏洞可能允许攻击者从企业网络中窃取敏感信息。基础设施安全公司 Wiz 的研究人员 Shir Tamar...【详细内容】
2021-08-12  零日时代    Tags:漏洞   点击:(66)  评论:(0)  加入收藏
001暴力破解1. 指定用户名爆破密码传统型爆破思路,用户名可以通过猜测或者信息收集获得。猜测:admin、网站域名等信息收集:新闻发布人、whoami等2. 指定密码爆破用户名如果是后...【详细内容】
2021-07-23  KaliMa  今日头条  Tags:登陆框   点击:(85)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条