Nginx+Tomcat+Memcached配置流程_第1页
Nginx+Tomcat+Memcached配置流程_第2页
Nginx+Tomcat+Memcached配置流程_第3页
Nginx+Tomcat+Memcached配置流程_第4页
Nginx+Tomcat+Memcached配置流程_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、负载均衡配置流程(Nginx+Tomcat+Memcached)数据运维组2016年04月21日目录一、方案的选择2二、安装环境31.WEB服务器配置3a)安装JDK3b)安装Tomcat4c)部署应用42.Nginx服务器配置6a)安装基础环境包6b)安装PCRE包6c)安装nginx6d)启动6e)配置NGINX实现负载均衡73.Memcached配置session共享8a)安装8b)memcached-session-manager配置9三、结束11一、 方案的选择多个tomcat要一起协同工作有几种办法,可以考虑的方案有以下几个:1. 使用tomcat自带的cluster方式,多个to

2、mcat见自动实时复制session信息,配置起来很简单。但这个方案的效率比较低,在大并发下表现并不好。2. 利用nginx的基于访问ip的hash路由策略,保证访问的ip始终被路由到同一个tomcat上,这个配置更简单。但是我们的应用很可能是某一个局域网大量用户同时登录,这样负载均衡就没什么作用了。3. 利用memcached把多个tomcat的session集中管理,这是最直接的解决方案,但是操作起来也最为复杂。我们的系统既要求性能,又要比较好的利用上负载均衡,所以第3个方案是首选。接下来就是安装搭建之路了。二、 安装环境服务器服务器名称安装环境82WEB服务器01

3、Ehr3.0+Tomcat7.0.69+JDK9+Memcached1.4.20.tar+ libevent-2.0.21-stable83WEB服务器0284Nginx服务器nginx-1.8.1+ pcre-8.32+ openssl-fips-2.0.51. WEB服务器配置a) 安装JDK1、先卸载服务器自带的jdk软件包# java -version #查看服务器是否安装过jdkjava version "1.6.0_17"OpenJDK Runtime Environment (IcedTea6 1.

4、7.4) (rhel-1.21.b17.el6-i386)OpenJDK Client VM (build 14.0-b16, mixed mode)# rpm -qa |grep gcj #查看服务器安装的jdk软件包信息libgcj-4.4.4-13.el6.i686java-1.5.0-gcj--29.1.el6.i686# yum -y remove java-1.5.0-gcj--29.1.el6.i686 #卸载软件包2、安装jdk7.0 解压配置安装# mkdir -p /usr/lib/jvm# tar zxvf jdk-7u9-linux-i586

5、.tar.gz -C /usr/lib/jvm# mv /usr/lib/jvm/jdk1.7.0_09 /usr/lib/jvm/java73、添加jdk7.0到系统环境变量cp /etc/profile /etc/profile.bak #备份vi /etc/profile #编辑,在最后添加下面的内容 export JAVA_HOME=/usr/lib/jvm/java7export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$JAVA_HOME/bin:$PAT

6、H: $JRE_HOME/bin source /etc/profile #使配置文件立即生效4、测试# java -version # 测试是否成功 b) 安装Tomcattar -xzvf apache-tomcat-7.0.69.tar.gzmv /usr/local/java/apache-tomcat-7.0.69 /usr/local/java/ln -s /usr/local/java/apache-tomcat-7.0.69 /usr/local/tomcatc) 部署应用1) cd /usr/local/tomcat/webapp直接把war包放到这个目录下。并删除其他目录,

7、只留下ehr2) 修改Tomcatpei配置文件cd /usr/local/tomcat/confvi server.xml在<host></host>标签内添加如下内容<Context path="/" docBase="ehr" reloadable="true" sessionCookieName="JSESSIONID80" />修改访问端口8080改为80,其他参数保持默认 vi /usr/local/tomcat/bin/catalina.shCATALINA_HOM

8、E=/usr/local/java/apache-tomcat-7.0.693) 启动tomcat:./bin/startup停止:./bin/shutdown4) 测试是否正确部署应用:直接输入IP地址82和842. Nginx服务器配置a) 安装基础环境包yum install openssl openssl-devel -yyum install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel -yyum install libxml2 libxml2-de

9、vel zlib zlib-devel ncurses ncurses-devel curl curl-devel -yyum install gd gd-devel gd2 gd2-devel -yyum install -y gcc gcc-c+仔细检查这些包,尤其是opensslb) 安装PCRE包tar -xzvf cd-./configure -prefix=/application/最好加上这个参数便于修改make make installc) 安装nginxwget 网址下载文件useradd nginx -s /sbin/nologin -Mtar -xzvf nginx-*t

10、ar.gzcd nginx-*./configure -user=nginx -group=nginx -prefix=/application/nginx-1.8.1 -with-http_stub_status_module -with-http_ssl_module -with-pcre=/application/makemake installln -s /application/nginx-1.8.1 /application/nginxll /applicationd) 启动echo "/usr/local/lib" >>/etc/ld.so.con

11、ftail -l /etc/ld.so.confldconfig/application/nginx/sbin/nginxlsof -i :80ps -ef | grep nginx:一个主进程一个辅助进程e) 配置NGINX实现负载均衡1) vi nginx/conf/nginx.conf删除多余的只留下如下:worker_processes 2;events worker_connections 1024;http include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeou

12、t 65; include extra/upstream01.conf;2) vi extra/upstream01.conf:#2016 upstream blog_real_servers # ip_hash; server 82:80 weight=1; server 84:80 weight=1; server 83:82 weight=15 down; server listen 80; server_name 83; location / proxy_pass http:/blog_re

13、al_servers; location * (.jsp)|(.do)|(.action)$ proxy_pass http:/blog_real_servers; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_conn

14、ect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; location /status stub_status on; access_log /application/nginx/logs/status.log; auth_basic "NginxStatus" - NGINX前端界面 参数注释:se

15、rver参数说明:server 82:80 负载均衡后面的RS配置,可以是IP或域名,端口不写默认是80,高并发场景IP换成域名,通过DNS做负载均衡 weight 权重,默认是1max_fails最大尝试失败的次数,默认为1,0表示禁止失败尝试。企业场景:23次,京东1次,蓝汛10次根据业务需求去配置。经常配合proxy_next_upstream,fastcgi_next_upstream,memcached_next_upstream使用,用来解决当nginx发送请求给后端某台服务器后突然宕机情况下nginx能及时把请求发送给另外一台服务器,避免客户体验时打不开页

16、面。backup热配置(RS节点的高可用),当前启动的RS都失败后会自动启用热备RSfail_timeout=20s 在max_fails定义失败次数后,距离下次检查的时间;失败超时时间默认10s,京东1次,蓝汛10次,根据业务需求去配置,京东3秒,蓝汛3秒,常规业务23秒合理;down标志服务器不可用,这个参数一直配合ip_hash使用。模块参数:proxy_set_header:设置由后端的服务器获取用户的主机名或真实IP地址,以及代理者的真实IP地址。proxy_set_header Host $host :当后端WEB服务器上配置有多个虚拟主机时需要用该Header来区分反向代理哪个主

17、机名。proxy_set_header X-Forwarded-For $remote_addr;:如果后端web服务器上的程序需要获取用户IP,从该header头获取。client_body_buffer_size:用于指定客户端请求主体缓冲区大小,可以理解为先保存到本地再传给用户。proxy_connect_timeout:表示与后台服务器连接的超时时间,即发起握手等候响应的超时时间。proxy_send_timeout:表示后端服务器的数据回传时间。即在规定时间之内后端服务器必须传完所有的数据,否则,Nginx将断开这个连接。proxy_read_timeout:设置Nginx从代理的后

18、端服务器获取信息的时间,即Nginx已经进入后端的排队之中等候处理的时间。proxy_buffer_size设置缓冲区大小=proxy_buffers设置的大小proxy_buffers:设置缓冲区大小和数量proxy_busy_buffers_size设置系统很忙时可以使用的proxy_buffers大小=proxy_buffers*2proxy_temp_file_write_size :缓存临时文件的大小3) nginx/sbin/nginx t4) nginx/sbin/nginx -s reload5) 启动nginx报错rootlocalhost sbin# ./nginx ./n

19、ginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory解决方法:rootlocalhost lib# ln -s /usr/local/lib/libpcre.so.1 /lib643. Memcached配置session共享a) 安装我配置的两台WEB服务器都需要配置,网上有只配置一台的1)先下载libevent-2.0.21-stable.tar和memcached-1.4.20.tar的源码包,前者是后者的依赖包

20、,就是一个事件驱动的包。2)安装非常顺利,还是经典的那几个编译安装命令:tar zxvf libevent-2.0.21-stable.tar cd libevent-2.0.21-stable ./configure -prefix=/usr/local/ libevent-2.0.21make make install tar zxvf memcached-1.4.20.tar.gz cd memcached-1.4.20 ./configure -prefix=/usr/local/memcached-1.4.20 -with-libevent=/usr/local/ libevent-

21、2.0.21/make make install 3)启动memcached:./memcached -d -m 256 -u root -p 11211 -c 1024 -P /tmp/memcached.pid 注意:安装过程中如果提示找不到库文件.so可能是在安装时未指定prefix有关,我尝试默认安装时提示这个问题。b) memcached-session-manager配置让tomcat调用memcached来存储session早就是一个很成熟的解决方案了,开源的msm就可以解决这个问题。比较折腾的就是要用到的jar包,官方文档说的也比较含糊,我这里用的是kryo的序列化方

22、案,所以用到的包多一些,分别是:以上这些包都放在$CATALINA_HOME/lib目录下,这些包都可以调通,我之前用的版本较低导致Tomcat未启动。另外提一下,官方给出的4种序列化方案,其中kryo是效率最高的,具体比较看接下来是修改tomcat的配置文件$CATALINA_HOME/conf/context.xml,调整成新的session存储方式。配置文件中加入以下内容:<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1

23、:82:11211,n2:84:11211" sticky="false" lockingMode="auto" sessionBackupAsync="false" sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />在$CATALINA_HOME/con

24、f/perties文件中添加de.javakaffee.web.msm.level=FINE,就可以在catalina.out的日志中看到详细的session存取情况。来:3.3 nginx配置nginx非常简单,只要在upstream里面多配置几个server就可以了,这里把我的配置贴出: 三、 小结7层代理1)类似LVS,完全转发2)根据URL中路径转发3)根据URL中资源的后缀转发4)基于user_agent转发,手机还是电脑,happroxy支持。NginxNginx代理负载均衡企业应用场景:1)流量不是特别大情况,直接替换掉lvs做反向代理负载均衡,都可以配合k

25、eepalived做高可用原因:简单、方便2)门户网站前端LVS+Nginx代理。Nginx负载均衡内核参数优化 net.ipv4.tcp_fin_timeout=2 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_tw_recycle=1 net.ipv4.tcp_syncookies=1 net.ipv4.tcp_keepalive_time=600 net.ipv4.ip_local_port_range=4000 65000 net.ipv4.tcp_max_syn_backlog=16384 net.ipv4.tcp_max_tw_buckets=36000

26、 net.ipv4.route.gc_timeout=100 net.ipv4.tcp_syn_retries=1 net.ipv4.tcp_synack_retries=1 net.core.somaxconn=16384 dev_max_backlog=16384 net.ipv4.tcp_max_orphans=16384以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。 net.ipv4.ip_conntrack_max=25000000 filter.ip_conntrack_max=25000000 filter.ip_conntrack_tcp_timeo

27、ut_established=180 filter.ip_conntrack_tcp_timeout_time_wait=120 filter.ip_conntrack_tcp_timeout_close_wait=60 filter.ip_conntrack_tcp_timeout_fin_wait=120将上面的内核参数加入/etc/sysctl.conf 文件中,然后执行如下命令使之生效:sysclt -p内核参数详解:net.ipv4.tcp_fin_timeout=2:表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间,默认值是60s,该参数对应系统路

28、径为:/proc/sys/net/ipv4/tcp_fin_timeout 60net.ipv4.tcp_tw_reuse=1:表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认值为0,表示关闭。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_tw_reuse 0net.ipv4.tcp_tw_recycle=1:表示开启TCP连接中TIME-WAIT sockets的快速回收。该参数对应系统的路径为:/proc/sys/net/ipv4/tcp_tw_recycle 默认值为0,表示关闭提示:reuse和recycle 两个参数为了防止生产

29、环境下web,squid等time_wait过多设置的。net.ipv4.tcp_syncookies=1:表示开启SYN Cookies功能。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,centos5系列默认值为1,表示开启,因此这个参数也可以不添加;该参数对应系统路径为:/proc/sys/net/ipv4/tcp_syncookies 默认值为1net.ipv4.tcp_keepalive_time=600:表示当keepalive启用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为10分钟。该参数对应系统路径为:/proc/sys/ne

30、t/ipv4/tcp_keepalive_time默认为7200.ipv4.ip_local_port_range=4000 65000:选项用来设定允许系统打开的端口范围。即用于向外连接的端口范围。该参数对应系统路径为:/proc/sys/net/ipv4/ip_local_port_range 32768 61000net.ipv4.tcp_max_syn_backlog=16384:表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。选项为服务器端用于记录那些尚未收到客户端确认信息的连接请求的最大值。该参数对应系统路径为:/proc/sys/net/ipv4/tcp_max_syn_ba

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论