正式运维女的成长历程——nginx

来源:互联网 发布:农村淘宝官方网站登录 编辑:程序博客网 时间:2024/06/05 02:30

      产品有两个webserver,对外提供网络服务。manager让我研究下nginx,对这两台webserver做反向代理和负载均衡。

      在高连接并发的情况下,Nginx是Apache服务器的替代品,它能够支持高达50000个并发连接数的响应,而内存、CPU等系统资源消耗非常低,运行非常稳定。目前在国内已经很多家网站使用Nginx作为Web Server或者反向代理服务器。

      由于只是使用Nginx对两台服务器做反向代理和负载均衡,所以不涉及到负载的Web Server的部署和网站开发,只需要在一台服务器上安装Nginx,建立cache文件夹,简单配置下配置文件就一切搞定了。

     看起来是很简单的任务,但在完成过程中还是遇到了一些问题的,主要有两个,一个是session和服务器端页面跳转,另一个是做cache时的权限问题。

     首先来说说第一个问题。因为有两台Web Server完成同样的任务,所以需要在这两台Web Server上做负载均衡。在Nginx中有四种主要的负载均衡的方式,分别为轮询、hash和另外两种我不记的了。本来manager推荐的和我自己想的和网上查到的都以轮询为主,所以我首先使用这种方式进行负载均衡。但遇到一个问题。我们的网页中有一个login的过程,点击login按钮后将用户名和密码存储在session中在服务器端刷新页面,若成功则跳转到home页面,但由于采用了轮询的负载均衡方式,每次服务器端刷新时会重新经过Nginx的upstream池,在里面重新选择一个服务器进入,若进入的不是刚刚之前操作选择的服务器,则session无法在两台不同web服务器之间进行传输,则永远都不能跳转到home页面。想了好久也不知道该怎么办。请教同事,同事帮忙查询后得到一个很有用的网址http://www.oschina.net/question/12_621,这里面详细说明了nginx负载均衡器处理session共享的几种方法。最简单的就是不用轮询的方式进行查询,而是使用ip_bash的方式进行负载均衡。在upstream中加上ip_hash命令,一切搞定。

    第二个问题是cache的权限问题。nginx安装时默认的user和group都是nobody。但是在做cache的时候需要用户在linux中建立proxy_cache和proxy_temp目录用来存放缓存的页面等等。在建立目录的时候该目录也有一定的权限,如果是root用户则这两个目录的使用者和组就都是root。简单的解决方法有两种,一是将nginx的用户和组都改成root,在安装目录下的/conf/nginx.conf中添加user root;即可,另一个就是将刚刚两个建立的两个目录的用户和用户组改成nginx的用户和用户组。总之让这两个一致就行了。

    我发现在linux下很多的问题都处在权限问题上,以前安装mysql时修改mysql数据库位置怎么都不成功,最终也是修改后的mysql数据库位置的文件夹的用户和用户组是root而mysql的用户和用户组是mysql导致二者不能读写所以出错。以后再遇到这些问题的时候要注意了。

    这周还要好好研究下yum server制作image rpm和用zenoss监控hadoop的问题。感觉好困难。

   不过前面都遇到那么多的困难并且都被我一一克服了,这两个小困难我也一定能解决的!加油!

原创粉丝点击