Nginx简介&集群搭建

一、nginx简介

1.什么是nginx?

一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务
特点是占用内存少,并发能力强

2.为什么使用niginx?

互联网时代,海量用户高并发已然成为互联网的主体。
如何能让一个网站承载几万甚至几十万个用户的持续访问呢?这是中小网站急需解决的问题。
传统单机tomcat搭建的网站,在比较理想的状态下能够承受的并发访问量在 150 到 200 左右。按照并发访问量占总用户数量的 5% 到 10% 这样计算,单点 tomcat 网站的用户人数在 1500 到 4000 左右。远远不能满足海量用户的访问需求。这时候可以使用负载均衡来解决高并发的问题,而nginx就是一款高性能可以实现负载均衡的代理服务器。

应用场景:

  • http 服务器,可以做静态网页的 http 服务器。
  • 配置虚拟机,一个域名可以被多个 ip 绑定。可以根据域名的不同把请求转发给运行在不同端口的服务器。
  • 反向代理,负载均衡。把请求转发给不同的服务器。

二、搭建集群

1.在Windows下搭建集群

1.1.在 D 盘新建两个新建两个目录 tomcat1、tomcat2
1.2.修改 tomcat2 的端口,例如, 在以 tomcat1 的端口为基础上+10,修改完,启动这两个 tomcat,再分别访问

  • 访问 8080 端口:localhost:8080/test/
  • 访问 8090 端口:localhost:8090/test/

1.3.解压 nginx


Nginx简介&集群搭建_第1张图片
图片.png

修改 ngnix 的 nginx.conf 文件,在 location / 下添加反向代理服务器,代理 8080 端口:

location / {
  root   html;
  index  index.html index.htm;
  proxy_pass http://localhost:8080
}

以上只是代理了一台服务器。启动 nginx,每次访问 localhost/test/, 最后访问的都是8080端口服务器的数据。
1.4.代理集群,例如代理两台服务器

//需要在http节点上添加一个
upstream mz{
  server 127.0.0.1:8080;
  server 127.0.0.1:8090;
}
//修改location /下的反向代理
    proxy_pass http://mz

修改如图:


Nginx简介&集群搭建_第2张图片
图片.png

另外,还可以给服务器添加权重:


图片.png

表示如果有 6 次访问,则有 4 次可能访问到第二个服务器。启动 nginx,则每次访问localhost/test/,会有可能访问到8080端口服务器的数据,也可能访问到8090端口服务器的数据。
1.5.Session共享问题
  • 解决方式一(只能在 windows 下好使):
    web 服务器解决(广播机制),注意:tomcat 下性能低
    修改两个地方:
    • 修改两个 tomcat 的 server.xml,支持共享,将引擎标签下的 注释去掉
      Nginx简介&集群搭建_第3张图片
      图片.png
    • 修改项目的配置文件 web.xml 中添加一个节点
      Nginx简介&集群搭建_第4张图片
      图片.png
  • 解决方式二:可以将 session 的 id 放入 redis 中
  • 解决方式三:保证一个 ip 地址永远的访问一台 web 服务器,就不存在 session 共享问题了,在 nginx 的配置文件中 upstream 中添加 ip_hash(在 Linux 下经常使用该方式)

    ip_hash 指令能够将某个客户端 IP 的请求通过哈希算法定位到同一台后端服务器上。

2.在Linux下搭建集群

2.1.先将 nginx 上传到 linux 上
2.2.解压 nginx
2.3.先编译 nginx

安装依赖包
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
执行编译
先进入 nginx的目录
执行
        ./configure

2.4.安装 nginx

  • 执行make
  • 执行make install
    2.5.启动 nginx:
cd nginx 目录下
    配置文件 conf
    启动nginx
        ./nginx

注:
①在 nginx 目录下有一个 sbin 目录,sbin 目录下有一个 nginx 可执行程序
②关闭 ngnix:

  • 关闭命令:相当于找到 nginx 进程kill ./nginx -s stop
  • 退出命令 ./nginx -s quit等程序执行完毕后关闭,建议使用此命令。
    2.6.将端口号 80 放行
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
将该设置添加到防火墙的规则中
/etc/rc.d/init.d/iptables save

2.7.修改 conf 文件和 window 下一样:配置集群

你可能感兴趣的:(Nginx简介&集群搭建)