设为首页 收藏本站
查看: 1455|回复: 0

[经验分享] nginx+tomcat8+memcached实现session共享具体操作

[复制链接]

尚未签到

发表于 2018-11-11 08:10:01 | 显示全部楼层 |阅读模式
  本次试验用到的软件包的版本如下:
DSC0000.jpg

  一、针对10.43.2.134的操作
  1.安装jdk环境
  tar zxf jdk-8u5-linux-x64.tar.gz
  mkdir /usr/java
  mv jdk1.8.0_05/ /usr/java/
  编辑/etc/profile
  在文档的末尾追加如下5行内容:
  JAVA_HOME=/usr/java/jdk1.8.0_05
  JRE_HOME=/usr/java/jdk1.8.0_05/jre
  PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
  CLASSPATH=.:${JAVA_HOME}/lib/:$JRE_HOME/lib

  export JAVA_HOME JRE_HOME PATH>  [root@localhost jdk1.8.0_05]# source /etc/profile
  查看Java的版本
  [root@localhost ~]# java -version
  java version "1.8.0_05"
  Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
  Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
  2.安装Tomcat
  tar zxvf apache-tomcat-8.0.8.tar.gz
  mv apache-tomcat-8.0.8 /usr/local/tomcat/
  #默认tomcat是root身份运行的,这样不安全,我们设置来用普通用户
  groupadd tomcat
  useradd -g tomcat tomcat
  passwd tomcat
  chown tomcat.tomcat -R /usr/local/tomcat
  su – tomcat /usr/local/tomcat/bin/startup.sh
  echo “su – tomcat /usr/local/tomcat/bin/startup.sh” >> /etc/rc.local  #开机启动
  确认服务是否启动成功:http://localhost:8080
DSC0001.jpg

  同样的方式再部署一个tomcat,端口号:8081
  tar zxvf apache-tomcat-8.0.8.tar.gz
  mv apache-tomcat-8.0.8 /usr/local/tomcat2
  chown tomcat.tomcat -R /usr/local/tomcat2
  编辑 /usr/local/tomcat2/conf/server.xml
  三处修改分别是:
DSC0002.jpg

DSC0003.jpg

DSC0004.jpg

  su – tomcat /usr/local/tomcat2/bin/startup.sh
  echo “su – tomcat /usr/local/tomcat2/bin/startup.sh” >> /etc/rc.local
  确认服务是否启动成功:http://localhost:8081
DSC0005.jpg

  3.制作tomcat服务器测试页,并测试访问
  分别在$CATALINA/webapps/ROOT/下建立测试页面t.jsp
  # vim /usr/local/tomcat/webapps/ROOT/t.jsp
  
  
  
  
  10.43.2.134
  port:8080
  
  
  
  # vim /usr/local/tomcat2/webapps/ROOT/t.jsp
  
  
  
  
  10.43.2.134
  port:8081
  
  
  
  打开http://10.43.2.134:8080/t.jsp和http://10.43.2.134:8081/t.jsp可以看到不同的页面
DSC0006.jpg

DSC0007.jpg

  二、针对10.43.2.135的操作

  •   nginx的安装
  安装依赖包:yum -y install gcc openssl-devel pcre-devel zlib-devel
  安装nginx
  useradd nginx -s /sbin/nologin
  tar zxvf nginx-0.8.46.tar.gz
  cd nginx-0.8.46/
  ./configure --user=nginx--group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module  && make  &&  make install
  启动服务:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  [root@localhost ~]# netstat -anpt|grep nginx
  tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      7920/nginx
  测试nginx默认web服务器是否能正常运行
DSC0008.jpg

  设置nginx开机自动启动
  [root@rhel6u3-7 ~]# echo "/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf" >> /etc/rc.local
  [root@rhel6u3-7 ~]# cat /etc/rc.local | grep nginx
  /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  nginx的启动脚本
  #编写nginx启动、停止、重启的管理脚本,方便使用
  cat /etc/init.d/nginx
  #!/bin/sh
  #
  # nginx - this script starts and stops the nginx daemon
  #
  # chkconfig: - 85 15
  # description: Nginx is an HTTP(S) server, HTTP(S) reverse \
  #   proxy and IMAP/POP3 proxy server
  # processname: nginx
  # config: /etc/nginx/nginx.conf
  # config: /etc/sysconfig/nginx
  # pidfile: /var/run/nginx.pid
  # Source function library.
  . /etc/rc.d/init.d/functions
  # Source networking configuration.
  . /etc/sysconfig/network
  # Check that networking is up.
  [ "$NETWORKING" = "no" ] && exit 0
  nginx="/usr/local/nginx/sbin/nginx"
  prog=$(basename $nginx)
  NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
  [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
  lockfile=/var/lock/subsys/nginx
  start() {
  [ -x $nginx ] || exit 5
  [ -f $NGINX_CONF_FILE ] || exit 6
  echo -n $"Starting $prog: "
  daemon $nginx -c $NGINX_CONF_FILE
  retval=$?
  echo
  [ $retval -eq 0 ] && touch $lockfile
  return $retval
  }
  stop() {
  echo -n $"Stopping $prog: "
  killproc $prog -QUIT
  retval=$?
  echo
  [ $retval -eq 0 ] && rm -f $lockfile
  return $retval
  killall -9 nginx
  }
  restart() {
  configtest || return $?
  stop
  sleep 1
  start
  }
  reload() {
  configtest || return $?
  echo -n $"Reloading $prog: "
  killproc $nginx -HUP
  RETVAL=$?
  echo
  }
  force_reload() {
  restart
  }
  configtest() {
  $nginx -t -c $NGINX_CONF_FILE
  }
  rh_status() {
  status $prog
  }
  rh_status_q() {
  rh_status >/dev/null 2>&1
  }
  case "$1" in
  start)
  rh_status_q && exit 0
  $1
  ;;
  stop)
  rh_status_q || exit 0
  $1
  ;;
  restart|configtest)
  $1
  ;;

  >  rh_status_q || exit 7
  $1
  ;;
  force-reload)
  force_reload
  ;;
  status)
  rh_status
  ;;
  condrestart|try-restart)
  rh_status_q || exit 0
  ;;
  *)
  echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
  exit 2
  esac
  [root@rhel6u3-7 init.d]# chmod 755 nginx
  [root@rhel6u3-7 init.d]# chkconfig --add nginx
  [root@rhel6u3-7 init.d]# chkconfig --level 35 nginx on
  [root@rhel6u3-7 init.d]# chkconfig --list | grep nginx
  nginx           0:off   1:off   2:off   3:on    4:off   5:on    6:off
  测试nginx脚本文件是否能够正常使用
  [root@rhel6u3-7 init.d]# /etc/init.d/nginx restart
  nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  Stopping nginx:                                            [  OK  ]
  Starting nginx:                                            [  OK  ]

  [root@rhel6u3-7 init.d]# /etc/init.d/nginx>  nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  Reloading nginx:                                           [  OK  ]
  [root@rhel6u3-7 ~]# cat /usr/local/nginx/logs/nginx.pid
  15799
  [root@rhel6u3-7 ~]# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
  [root@rhel6u3-7 init.d]# /etc/init.d/nginx stop
  Stopping nginx:                                            [  OK  ]
  2.编辑nginx的主配置文件,实现对10.43.2.134上两个tomcat的代理
  cat nginx.conf
  user  nginx nginx;
  worker_processes  1;
  error_log  logs/error.log;
  pid        logs/nginx.pid;
  events {
  worker_connections  1024;
  }
  http {
  include       mime.types;
  default_type  application/octet-stream;
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  #access_log  logs/access.log  main;
  sendfile        on;
  #tcp_nopush     on;
  #keepalive_timeout  0;
  keepalive_timeout  65;
  #gzip  on;
  upstream tomcatweb {
  server 10.43.2.134:8080;
  server 10.43.2.134:8081;
  }
  server {
  listen       80;
  server_name  localhost;
  #charset koi8-r;
  #access_log  logs/host.access.log  main;
  location / {
  root   html;
  index  index.html index.htm;
  proxy_pass http://tomcatweb;
  }
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
  root   html;
  }
  }
  }
  3.重新加载nginx服务并验证

  重新加载:/etc/init.d/nginx>  验证:可以看到nginx已经成功代理10.43.2.134上的两个tomcat,访问http://10.43.2.135/t.jsp能够正常访问到10.43.2.134:8080/test.jsp和http://10.43.2.134:8081/test.jsp交替出现,并且session  id 刷新一次变化一次。
DSC0009.jpg

DSC00010.jpg

  4.安装memcache
  安装libevent
  注:memcached是基于libevent进行事件处理的,所以我们得先安装libevent
  [root@memcache src]# tar xf libevent-2.0.21-stable.tar.gz
  [root@memcache src]# cd libevent-2.0.21-stable
  [root@memcache libevent-2.0.21-stable]# ./configure --prefix=/usr/local/libevent
  [root@memcache libevent-2.0.21-stable]# make && make install
  安装memcached
  [root@memcache src]# tar xf memcached-1.4.15.tar.gz
  [root@memcache src]# cd memcached-1.4.15
  [root@memcache memcached-1.4.15]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
  [root@memcache memcached-1.4.15]# make && make install
  [root@memcache ~]# memcached -d -m 500 -u root -l 192.168.18.201 -c 256 -P /tmp/memcached.pid -vvv
  查看一下启动端口
  root@memcache ~]# netstat -ntulp
  Active Internet connections (only servers)
  Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
  tcp        0      0 192.168.18.201:11211        0.0.0.0:*                   LISTEN      8086/memcached
  tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1026/sshd
  tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1103/master
  tcp        0      0 127.0.0.1:6010              0.0.0.0:*                   LISTEN      1137/sshd
  tcp        0      0 127.0.0.1:6011              0.0.0.0:*                   LISTEN      8044/sshd
  tcp        0      0 :::22                       :::*                        LISTEN      1026/sshd
  tcp        0      0 ::1:25                      :::*                        LISTEN      1103/master
  tcp        0      0 ::1:6010                    :::*                        LISTEN      1137/sshd
  tcp        0      0 ::1:6011                    :::*                        LISTEN      8044/sshd
  udp        0      0 192.168.18.201:11211        0.0.0.0:*                               8086/memcached
  提供SysV的startup脚本
  [root@memcache ~]# vim /etc/init.d/memcached
  #!/bin/bash
  #
  # Init file for memcached
  #
  # chkconfig: - 86 14
  # description: Distributed memory caching daemon
  #
  # processname: memcached
  # config: /etc/sysconfig/memcached
  . /etc/rc.d/init.d/functions
  ## Default variables
  PORT="11211"
  USER="root"
  MAXCONN="1024"
  CACHESIZE="64"
  OPTIONS=""
  RETVAL=0
  prog="/usr/local/memcached/bin/memcached"
  desc="Distributed memory caching"
  lockfile="/var/lock/subsys/memcached"
  start() {
  echo -n $"Starting $desc (memcached): "
  daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE  $OPTIONS
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch $lockfile
  return $RETVAL
  }
  stop() {
  echo -n $"Shutting down $desc (memcached): "
  killproc $prog
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && rm -f $lockfile
  return $RETVAL
  }
  restart() {
  stop
  start
  }
  reload() {
  echo -n $"Reloading $desc ($prog): "
  killproc $prog -HUP
  RETVAL=$?
  echo
  return $RETVAL
  }
  case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  restart)
  restart
  ;;
  condrestart)
  [ -e $lockfile ] && restart
  RETVAL=$?
  ;;

  >
  >  ;;
  status)
  status $prog
  RETVAL=$?
  ;;
  *)
  echo $"Usage: $0 {start|stop|restart|condrestart|status}"
  RETVAL=1
  esac
  增加执行权限
  [root@memcache ~]# chmod +x /etc/init.d/memcached
  加入服务列表并设置开机自启动
  [root@memcache ~]# chkconfig --add memcached
  [root@memcache ~]# chkconfig memcached on
  [root@memcache ~]# chkconfig memcached --list
  memcached          0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
  三 、如何实现memcached session共享
  以下操作在每个tomcat上都需要执行

  •   在$CATALINA/lib中添加如下jar包
DSC00011.jpg

  jar包的下载地址:http://down.51cto.com/data/1634273
  2.修改配置文件context.xml
  在context.xml中添加如下内容
  
  3.重启tomcat服务并进行验证
  再次http://10.43.2.135/t.jsp 可以看到10.43.2.134:8080/t.jsp和http://10.43.2.134:8081/t.jsp交替出现,端口变化,session  id保持不变
DSC00012.jpg

DSC00013.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633480-1-1.html 上篇帖子: 测试nginx的FastDFS分布式存储模块 下篇帖子: Nginx架设高性能流媒体服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表