weblogic集群部署与负载均衡_基于云落地SLB+Tengine实现高可用集群负载均衡 上

前言

本次分享基于618慕课网直播,更多精彩可以关注:https://class.imooc.com/sale/javaarchitect

eeba24a64990ff6209cb1e9410009c5b.png

618双11这样的活动肯定会有大促,有大促就会有大流量,那么必然的我们必须要保证两个点,一个是高可用,一个是高并发。

  1. 什么是高并发:平时一个网站的流量每天在几千左右,但是在某一天有活动或者某一时间段涌入大量用户,在网站上活动,那么就会发起大量的请求到后端,可能有数十万个甚至百万个,这样会比平时多出很多用户请求,那么势必对服务器后端又一定的压力,这个就是并发,为了做好高并发,系统架构肯定需要做一定的调整。

  2. 什么是高可用:传统部署的一个系统往往只有一台服务器节点,节点挂了,啥都没了,高可用就是为了保证网络节点宕机后,整个网站系统还能够继续的对外提供服务。最简单的手段就是搭建多机高可用集群。
    那么本次课程其实围绕的是高可用来展开的。

那么这次涉及到的一些资料,软件等可以到直播群里去获取,汇总后会统一发出来的。

Nginx 和 Tengine

那么说到集群高可用的话肯定会联想到Nginx,通过nginx就能搭建多机节点的集群,比如tomcat集群,nginx作为网关接受用户的请求,起到反向代理的作用。

Nginx是反向代理服务器,可以构建集群和负载均衡,我们公开课里会使用阿里的Tengine,Tengine是基于Nginx的增强版本,阿里在此基础上的二次开发并且开源的服务器。(可以理解为nginx相当于iPhone12,tengine相当于iPhone12plus)。那么学了Tengine就相当于nginx也会了,一石二鸟。

  • 那么咱们先梳理一下概念,看个眼熟,抛出概念,具体后面细说,课程里主要涉及到一下四点:

    • 什么是正向代理:后面会画图演示来说

    • 什么是反向代理:后面会画图演示来说

    • 什么是集群:后面说

    • 什么是负载均衡:后面说

Nginx并发能力很强,可以支持上万并发(理论5万左右),并且所需要的硬件配置不会很高,对cpu,内存的依赖度不大,而且长期运行十分稳定可靠。

Nginx是异步非阻塞的(AIO),上万连接可以对应到一个进程。(在咱们架构师课程里我们提过apache这个httpd服务器,它是同步阻塞的(BIO),一个连接就对应一个线程,并发越高性能越低下)所以现在主流的服务器都用的nginx或者tengine。

Nginx 能够解决的问题

  • 高可用

  • 集群

  • 负载均衡

  • 虚拟主机

  • 并发能力(高并发):构建多简单集群,提升并发能力,抗负载能力

  • 动静分离(静态资源)(架构师体系课程中就是这么部署的)后面有时间加餐可以画图说一下

  • ……
    需要注意:搭建集群可以解决高可用问题,同时也能分担一定的流量压力,当然高并发并不是仅仅只靠集群就能解决的,这里指的仅仅只是一部分压力。

互动发问

欸?那nginx和tengine是7层还是4层的网络模型呀?
那LVS呢?
俗话说四层转发,七层代理。LVS4层只管向后抛,他不会处理你的请求,7层可以处理,他提供了http协议,根据根据url地址来找到你硬盘里的某个资源文件地址,或匹配请求到反向代理的upstream,他也可以操作header啊cookie啥的。后面要说的负载均衡器组件SLB也是四层负载。

如何理解四层和七层,参考下图:71bf2340f5f2cac1ce3f83d7e3dfba9e.png

f8f0350e809954235aaac526929457ac.png

入正题,Tengine 官网

上面的概念没听懂没关系,我们先把Tengine来安装一下,概念在后面循序渐进的去理解。
打开:http://tengine.taobao.org/
下载最新版的即可a5f9bf4f8d3634ecd797ff488e56c678.png

虚拟机或云服务器安装

用腾讯云的的666miss服务器

  • 上传到某一个目录49b178f2859429f094dba8e1657c7089.png

  • 解压缩:

    tar zxvf tengine-2.3.2.tar.gz

    da8666fa3e966882c4d2045acb3c52eb.png

  • 进入tengine根目录,结构和nginx类似,安装方式也是类似12c60da4334757ed8a5aafb48e51c34a.png

  • 安装依赖环境

    • yum install -y openssl openssl-devel

    • yum install -y zlib zlib-devel

    • yum install -y pcre pcre-devel

    • yum install gcc-c++ -y

    • 安装gcc环境

    • 安装PCRE库,用于解析正则表达式

    • zlib压缩和解压缩依赖,

    • SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https

  • 配置编译(可以参考nginx):

    ./configure --prefix=/usr/local/tengine
  • 安装:

make && make install
  • 安装成功,可以看到tengine的目录都有了,目录结构和nginx也都是一致的9b51efa9b64f988ef42af7167ca01353.png

启动tengine

启动方式与nginx一致423a16e3d184d23010b0b0f5d8d699c8.png

浏览器访问tengine所在的内网ip:de364f84ff9bd688262e0d02de0df35c.png

虽然是tengine,但是本质上他还是nginx的进程:e244246ce84a4e4eed29413da34f19a1.png

  • 停止:

    • ./nginx -s stop

  • 重启:

    • ./nginx -s reload

Tengine 配置文件详解(可以作为加餐环节)

打开 /usr/local/tengine/conf/nginx.conf,配置内容如下:

# 默认注释了,其实就是nginx的默认用户,注释代表使用当前用户,也就是root,这里可以修改为指定的用户,用以限制。
#user nobody;
#nginx 是多进程,一个进程里又可以开很多线程,线程用以处理用户连接,可以设置为CPU的核数为1,预留一
个,比如你现在是8核的,那就设置为7,当然你设置为8问题也不大,这个服务器里不要再放额外的一些中间件了(默认1个)
worker_processes 2;

# 每个worker进程可以处理的最大连接数,连接数并不是越大越好,因为还受到环境因素,比如磁盘io或网络
io快不快,内存和cpu大不大等因素影响。
events {
worker_connections 10240;
}
# 此外,操作系统限制一个进程能够打开的最大文件数,也限制了nginx的最大并发,可以通过如下查看:
# cat /proc/sys/fs/file-max
# 一般9万左右,worker_processes x worker_connections < file-max,这个可以自己调大
# 如果反向代理了几台tomcat,那么总的并发数是 worker_processes x worker_connections / 4,得出的值
是一个差不多的范围,4是一个预估的经验值(长期以往大家总结的)。
# 需要注意,真正的并发数并不是一个特定的值,是根据硬件资源以及环境资源的一个综合的值,和上面计算
得出的值也肯定会有一定的偏差

# HTTP 模块
http {
# 在任何地方都能使用include进行配置的引入
# 资源媒体类型,浏览器支持的资源媒体类型和我们设置的类型匹配,则会在浏览器播放视频/播放音乐/展示图片,不匹配则下载,阿里OSS的图片在chrome上只能下载不能展示,道理是一样的
include mime.types;
# 如果文件类型在mime.type中找不到则默认使用下方的
default_type application/octet-stream;

# 高效传输模式,发送文件数据更快,简单来说,nginx作为静态资源服务器,开启会提高nginx性能,如果把nginx作为反向代理服务器,那么没什么卵用
# 文件数据传输存在于操作系统的内核里,不需要经过缓冲区的拷贝,如此效率更高,性能更好,也可以称之为零拷贝
sendfile on;
# 打开后可以优化网络传输,打开的前提是sendfile为on
# tcp_nopush on;

# 设置客户端与服务端请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗。
#keepalive_timeout 0;
keepalive_timeout 65;

# 启用压缩,html/js/css压缩后文件变小,传输也会更快(我们在架构师课程里有演示过吧,不记得的敲个0)
#gzip on;

# 可以在http指令块中设置多个虚拟主机
server {

# listen 监听端口
# server_name localhost、ip、域名
# location 请求路由映射,匹配拦截,默认用`/`可以对后面的路径进行匹配,匹配到就显示对应的资源文件。
# location 参考文档:http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_module.html#location
# root 请求位置
# index 首页设置

listen 80;
server_name localhost;

location / {
root html;
index index.html index.htm;
}

}
}

b5a817ea4ceff8fb931748ca01857d3a.pnge30cf0bad56d9fac60424f49c594f3e1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值