您的位置:首页 > 运维架构 > Nginx

nginx分别在window和linux搭建集群以及session共享问题

2017-05-09 13:15 621 查看
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器
特点:反向代理 负载均衡 动静分离
反向代理 :
先来了解正向代理:需要我们用户,手动的设置代理服务器的ip和端口号
反向代理:代理服务器的,用户不需要设置.
负载均衡:(注意:Nginx后端节点健康检查配置使用详情
原理就是数据流量分摊到多个服务器上执行,减轻每台服务器的压力,

多台服务器共同完成工作任务,从而提高了数据的吞吐量。

动静分离:

将静态的资源放到反向服务器,节省用户的访问时间.

-----------------------------------------------------------------------------------

用nginx在window上搭建一个集群

1.在g盘新建两个目录 tomcat1 tomcat2
2.分别修改俩个tomcat的端口
3.解压nginx
         修改nginx/conf下的nginx.conf文件
         在locatioin / 下添加了反向代理,这样配置只是代理了一台服务器


          

4.那如何代理代理集群呢?
          需要在http节点上添加一个
upstream servlet_chenwei{
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}
          修改location /下的反向代理 

                 proxy_pass http://servlet_chenwei


5.session共享问题

      解决方式1:只能在window下好使
             web服务器解决(广播机制), 注意:tomcat下性能低
                   1.修改tomcat的server.xml 支持共享
                     将引擎标签下的注释放开 

                       <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

使用这样方法配置的集群会将Session同步到所在网段上的所有配置了集群属性的实例上(此处讲所在网段可能不准确,是使用Membership 的address和port来区分的。tomcat集群的实例如果在Membership配置中有相同的address和port值的tomcat被分到同一个集群里边。他们的session是相互共享的,同一个session的集群被称为一个cluster。可以配置多个cluster,但是cluster和cluster之间的session是不共享的)。也就是说如果该广播地址下的所有Tomcat实例都会共享Session,那么假如有几个互不相关的集群,就可能造成Session复制浪费,所以为了避免浪费就需要对节点多做点设置了,如下:
Xml代码
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
</Channel>
</Cluster>
加了一个Channel,里面包了个Membership,咱们要关注的就是membership的port属性和address属性,不同的集群设置不同的port值或address值,从目前的使用来看,基本上是隔离开了。


                   2.修改项目的配置文件 web.xml中添加一个节点<distributable/> 


        解决方式2:
               可以将session的id放入redis中
        解决方式3:

               保证一个ip地址永远的访问一台web服务器,就不存在session共享问题了

               在nginx的配置文件中

                      upstream中添加 ip_hash;
-------------------------------------------------------------------------------------

在linux安装Nginx

1.先将 nginx上传到linux上

2.解压nginx
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

(执行以上命令的话是可以安装一些额外模块,比如:./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module)详情参考:点击打开链接

4.安装nginx
       执行 
             make
             make install
5.启动nginx
         cd nginx/sbin(nginx目录下有一个sbin目录,sbin下有一个nginx可执行程序)。
        启动nginx 
             ./nginx 
6.将端口号80 放行
         /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
   将该设置添加到防火墙的规则中
         /etc/rc.d/init.d/iptables save

7.修改conf文件 和window下一样

8.关闭nginx

         关闭命令:相当于找到nginx进程kill。

               ./nginx -s stop

         退出命令:

               ./nginx -s quit

               等程序执行完毕后关闭,建议使用此命令。

9.动态加载配置文件

         ./nginx -s reload

         可以不关闭nginx的情况下更新配置文件。

在service中加入nginx启动
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐