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

[经验分享] Docker + redis + nginx + tomcat

[复制链接]

尚未签到

发表于 2018-11-4 12:36:54 | 显示全部楼层 |阅读模式
Docker + redis + nginx + tomcat
环境
  pc机
机器
  192.168.1.242
系统
  [root@hdp-gp-dk02 ~]# uname -a
  Linux hdp-gp-dk02 2.6.32-504.el6.x86_64 #1 SMP Tue Sep 16 01:56:35 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux
  [root@hdp-gp-dk02 ~]#  cat /etc/redhat-release

  Red Hat Enterprise Linux Server>简介
DSC0000.png

  一个Web应用,使用Docker容器来部署应用,并将Session交给Redis来存储和管理,涉及到Docker/Redis/Tomcat/Nginx/Spring Web/Spirng Web等技术。其中:
  Docker——容器技术或虚拟化技术,可以将我们的application及相关依赖打包到一个容器内,方便移植、集群部署,容器完全使用沙箱机制,容器之间互不影响完全独立。下文所有的server都是部署在Docker中。
安装包(jar包)
  jdk-7u79-linux-x64.tar.gz
  redis-3.0.6.tar.gz
  apache-tomcat-7.0.56.tar.gz
  nginx-1.8.0.tar.gz
  commons-pool-1.5.4.jar
  commons-pool2-2.4.1.jar
  jedis-2.6.2.jar
  tomcat-juli.jar
  tomcat-juli-adapters.jar
  tomcat-redis-session-manager1.2.jar
Docker镜像基础环境 centos
安装docker
  省略,前面已经给出;见我的博客:http://daxionglaiba.blog.51cto.com/11790757/1830289
下载centos镜像
  Docker pull centos
Docker安装tomcat 并制作成镜像
安装jdk,配置环境变量
1. 下载jdk-7u79-linux-x64.tar.gz
2. 上传jdk-7u79-linux-x64.tar.gz
3. 解压tar zxvf jdk-7u79-linux-x64.tar.gz
4. docker容器中移动解压目录,修改环境变量
  mv jdk1.7.0_79 /usr/local
  vim .bash_profile
  export JAVA_HOME=/usr/local/jdk1.7.0_79
  export JAVA_BIN=$JAVA_HOME/bin
  export JRE_HOME=$JAVA_HOME/jre
  export PATH=$JAVA_HOME/bin:$PATH

  #export>
  export>5. 更新bash_profile
  source .bash_profile
Docker安装tomcat
1. 下载apache-tomcat-7.0.56.tar.gz
2. 上传apache-tomcat-7.0.56.tar.gz
3. 解压tar zxvf apache-tomcat-7.0.56.tar.gz
4. tomcat开启和关闭
开启tomcat
  /usr/local/tomcat/apache-tomcat-7.0.56/bin/shutdown.sh
关闭tomcat
  /usr/local/tomcat/apache-tomcat-7.0.56/bin/startup.sh
将tomcat容器制作成镜像
1.    生成镜像:
docker commit(tomcat容器id) tomcat_gbicc/v1
2.    查看镜像:
docker images
3.    导出镜像:
docker save tomcat_gbicc/v1 | bzip2 -9 -c>tomcat_gbicc_v1.tar.bz2
Docker安装nginx 并制作成镜像
安装jdk,配置环境变量
1. 下载jdk-7u79-linux-x64.tar.gz
2. 上传jdk-7u79-linux-x64.tar.gz
3. 解压tar zxvf jdk-7u79-linux-x64.tar.gz
4. docker容器中移动解压目录,修改环境变量
  mv jdk1.7.0_79 /usr/local
  vim .bash_profile
  export JAVA_HOME=/usr/local/jdk1.7.0_79
  export JAVA_BIN=$JAVA_HOME/bin
  export JRE_HOME=$JAVA_HOME/jre
  export PATH=$JAVA_HOME/bin:$PATH

  #export>
  export>5. 更新bash_profile
  source .bash_profile
Docker安装nginx
1. 下载nginx-1.8.0.tar.gz
2. 上传nginx-1.8.0.tar.gz
3. 解压tar zxvf nginx-1.8.0.tar.gz
4. 安装所需要的包
  yum -y install gcc* automake autoconf libtool make
  安装openssl
  wget http://www.openssl.org/source/openssl-1.0.1c.tar.gztar -zxvf openssl-1.0.1c.tar.gz
  cd openssl-1.0.1c/
  ./configmake make install
  安装zlib
  wget http://zlib.net/zlib-1.2.8.tar.gztar -zxvf zlib-1.2.8.tar.gzcd zlib-1.2.8./configuremake make install
  进去nginx-1.8.0
  ./configure --prefix=/home/nginx/nginx$ make$ make install
5. nginx开启和关闭
  安装完成之后生成一个nginx的文件夹,cd进去并切换到sbin目录
  开启nginx
  ./nginx
  关闭nginx
  ./nginx -s stop
  重启nginx
  ./nginx -s reload
将nginx容器制作成镜像
1. 生成镜像:
docker commit(nginx容器id) nginx_gbicc/v1
2. 查看镜像:
docker images
3. 导出镜像:
docker save nginx_gbicc/v1 | bzip2 -9 -c>nginx_gbicc_v1.tar.bz2
Docker安装redis 并制作成镜像
安装jdk,配置环境变量
1. 下载jdk-7u79-linux-x64.tar.gz
2. 上传jdk-7u79-linux-x64.tar.gz
3. 解压tar zxvf jdk-7u79-linux-x64.tar.gz
4. docker容器中移动解压目录,修改环境变量
  mv jdk1.7.0_79 /usr/local
  vim .bash_profile
  export JAVA_HOME=/usr/local/jdk1.7.0_79
  export JAVA_BIN=$JAVA_HOME/bin
  export JRE_HOME=$JAVA_HOME/jre
  export PATH=$JAVA_HOME/bin:$PATH

  #export>
  export>5. 更新bash_profile
  source .bash_profile
Docker安装redis
1. 下载redis-3.0.6.tar.gz
2. 上传redis-3.0.6.tar.gz
3. 解压tar zxvf redis-3.0.6.tar.gz
4. 安装gcc、c++环境等所需要的包
  yum -y install gcc* automake autoconf libtool make gcc-c++
  进去redis-3.0.6
  $ make MALLOC=libc$ make install
  修改配置文件
  mkdir -p /usr/local/redis/log
  mkdir -p /usr/local/redis/pid
  mkdir -p /usr/local/redis/db
  cp /usr/local/src/redis/redis.conf /usr/local/redis/redis.conf
  vim /usr/local/redis/redis.conf
  daemonize yes
  pidfile /usr/local/redis/pid/redis.pid
  logfile /usr/local/redis/log/redis.log
  dir /usr/local/redis/db
  timeout 60
  添加redis服务开机启动:
  vim /etc/init.d/redis
  #!/bin/sh
  # chkconfig:        2345 60 40
  # Description:        Start and Stop redis
  # Provides:        redis
  # Default-Start:    2 3 4 5
  # Default-Stop:        0 1 6
  PATH=/usr/local/bin:/sbin:/usr/bin:/bin
  REDISPORT=6379
  EXEC=/usr/local/redis/bin/redis-server
  REDIS_CLI=/usr/local/redis/bin/redis-cli
  PIDFILE= /usr/local/redis/pid
  CONF="/usr/local/redis/redis.conf"
  case "$1" in
  start)
  if [ -f $PIDFILE ]
  then
  echo "$PIDFILE exists, process is already running or crashed"
  else
  echo "Starting Redis server..."
  $EXEC $CONF
  fi
  if [ "$?"="0" ]
  then
  echo "Redis is running..."
  fi
  ;;
  stop)
  if [ ! -f $PIDFILE ]
  then
  echo "$PIDFILE does not exist, process is not running"
  else
  PID=$(cat $PIDFILE)
  echo "Stopping Redis server..."
  $REDIS_CLI -p $REDISPORT SHUTDOWN
  while [ -x ${PIDFILE} ]
  do
  echo "Waiting for Redis to shutdown ..."
  sleep 1
  done
  echo "Redis is stopped"
  fi
  ;;
  restart|force-reload)
  ${0} stop
  ${0} start
  ;;
  *)
  echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
  exit 1
  esac
  chmod a+x /etc/init.d/redis
  chkconfig --add redis
  chkconfig --level 2345 redis on
  chkconfig --list | grep redis
5. redis开启和关闭
  开启redis
  /etc/init.d/redis start
  关闭redis
  /etc/init.d/redis stop
  重启redis
  /etc/init.d/redis restart
将redis容器制作成镜像
1. 生成镜像:
docker commit(redis容器id) redis_gbicc/v1
2. 查看镜像:
docker images
3. 导出镜像:
docker save redis_gbicc/v1 | bzip2 -9 -c>redis_gbicc_v1.tar.bz2
Redis管理Session+Nginx负载均衡+Docker+Tomcat
1. 修改tomcat的配置
  要用Redis来存储和管理Session,我们需要修改content.xml,来改变Tomcat
  的Session管理方式,如下:
  
  WEB-INF/web.xml

  
    host="172.17.0.25"
  port="6379"
  database="0"
  maxInactiveInterval="60"/>
  
  Redis服务器地址和端口、Session有效时间按自己需要配置。
  复制上面提到的jar文件到{Tomcat}/lib目录
  commons-pool-1.5.4.jar
  commons-pool2-2.4.1.jar
  jedis-2.6.2.jar
  tomcat-juli.jar
  tomcat-juli-adapters.jar
  tomcat-redis-session-manager1.2.jar
2. 修改nginx的配置
  用Nginx做负载均衡;
  在http段里面加上如下配置:
  upstream 172.17.0.18 {
  server 172.17.0.26:8080 max_fails=3 fail_timeout=3s weight=1;
  server 172.17.0.30:8080 max_fails=3 fail_timeout=3s weight=2;
  keepalive   65;
  }
  server {
  listen       80;
  server_name  172.17.0.18;
  location / {
  root   html;
  index  index.html index.htm;
  proxy_pass   http://172.17.0.18;
  #       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;
  }
  }
总结:
  上图为docker-容器的ip;使用所有的服务都需要映射出其端口;在开启容器的时候开启就行。


运维网声明 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.yunweiku.com/thread-630662-1-1.html 上篇帖子: Redis支持5种数据类型 下篇帖子: Redis 发布订阅模型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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