Docker + redis + nginx + tomcat

Docker + redis + nginx + tomcat

环境

pc机

机器

192.168.1.242

系统

[[email protected] ~]# 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

[[email protected] ~]#  cat /etc/redhat-release

Red Hat Enterprise Linux Server release 6.6 (Santiago)

简介

一个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 CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar

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 CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar

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 CLASSPATH=./:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar

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管理方式,如下:

<Context>

<WatchedResource>WEB-INF/web.xml</WatchedResource>

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/>

<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

host="172.17.0.25"

port="6379"

database="0"

maxInactiveInterval="60"/>

</Context>

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;使用所有的服务都需要映射出其端口;在开启容器的时候开启就行。

时间: 2024-10-17 11:58:05

Docker + redis + nginx + tomcat的相关文章

使用docker部署nginx+tomcat架构(2):访问mysql数据库

上一篇完成了通过docker部署nginx+tomcat的基础软件架构,但是距离一个真正可用的软件架构还差得很远.其中最重要的一点是缺少数据库这个角色的存在,那么本篇就来完善这一点. 废话少说,直接进入正题. 首先拉取mysql镜像: docker pull mysql:5.7 创建本地mysql目录: mkdir -p ~/mysql/data ~/mysql/conf ~/mysql/logschmod -R 777 ~/mysql/logs 在mysql/conf目录下创建配置文件my.c

使用docker部署nginx+tomcat架构(3):使用docker-compose简化部署操作

经历了之前的两篇,我们已经大体上了解了docker部署容器的过程. 使用docker部署nginx+tomcat架构 使用docker部署nginx+tomcat架构(2):访问mysql数据库 不过,整个部署过程中需要手动输入很多的docker命令,稍显繁琐并且容易出错.那么有没有一种相对简洁优雅的方式来完成这些部署工作呢?答案是有的,docker-compose(一下简称“compose”)正是为此而生. 关于docker-compose(了解更多:https://docs.docker.c

Docker构建Nginx+Tomcat动静分离架构

随着主流Nginx WEB服务器的发展,现在基于Nginx的WEB服务器已广泛应用于各大互联网企业.今天我们来使用docker构建我们的Linux+Nginx+Tomcat动静分离服务器. 1)    启动docker镜像 查看当前系统存在的镜像,我这里为centos6.6,大家可以参考我第一篇文章进行下载相应的镜像文件,然后启动. 启动方式如下:   docker run -i -t  centos6.6:v2 /bin/bash 然后进入新的docker容器里,查看ip为172.17.0.6

如何玩转最新的项目的搭配springmvc+mybatis+Redis+Nginx+tomcat+mysql

上一次完成nginx+tomcat组合搭配,今天我们就说说,这几个软件在项目中充当的角色: 要想完成这几个软件的组合,我们必须知道和熟悉应用这个框架, 一: Nginx:在项目中大多数作为反向代理服务器.其目的处理http静态页面.和分发请求给tomcat.是目前处理大量请求的解决方案. tomcat:作为处理动态页面的服务器.由Ngxin 均衡分给的请求来处理. redis:在这个里redis 处理两个重要的功能:第一,nginx分发请求给tomcat.如何保持session的同步.就是利用r

Docker 部署 nginx + tomcat

简介 在生产环境中,很多企业会经常使用nginx + tomcat 架构,nginx作为负载均衡器,反向代理,tomcat作为节点服务器.在docker容器中也可以使用这种架构.对这种架构感兴趣的可以参考博客:https://blog.51cto.com/13760351/2161850 操作环境 备注:实验中已关闭防火墙,打好企业使用的war包 部署过程: 一.安装nginx镜像 可参考博客 https://blog.51cto.com/13760351/2469063 二.部署war包项目

Docker 下 nginx + tomcat 负债均衡

nginx 的安装请参考Docker 安装 nginx 并挂载宿主目录到容器中 多个 tomcat 安装 按照Docker 安装 tomcat 并挂载宿主目录到容器中 方式,启动三个 tomcat,宿主端口分别为 8081,8082,8083.同时在宿主的 home/ubuntu/tomcat/ 分别创建 service1 , service2,service3 目录,并在该目录下创建 webapps 目录,同时把 war 包放在该目录下. service1: docker run --name

Docker安装mysql、nginx、redis、tomcat

拉取mysql 5.7官方镜像 docker pull mysql:5.7 启动容器 docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 拉取nginx官方镜像 docker pull nginx 运行容器 docker run -p 80:80 --name nginx -d nginx 拉取redis官方镜像 docker pull redis 运行容器 docker run -p

nginx+tomcat集群+redis(memcache)session共享!

nginx+tomcat+redissession共享 常用保持session的方式: 1.一些代理(比如nginxIP_hash) 1.使用数据库来存储Session 2.使用Cookie来存储Session                       3.使用Redis来存储Sesssion(memcache也可以) --   环境: 192.168.1.220   nginx    centos6.6   端口:80 版本:1.9.2 192.168.1.224   tomcatA  ce

高性能站点架构之负载均衡 Nginx+tomcat+redis实现tomcat集群

上一篇文章给大家讲了Nginx的安装,那么这篇文章为大家讲一下Nginx+Tomcat实现负载均衡. 先说说为什么要用ngnix 做负载均衡.事实上做负载均衡的最出名的莫过于F5了.F5是在硬件设施,动辄几万,几十万,几百万不等,对于一般的小公司来说,这也是一笔非常大的开销.所以能尽量的使用软件.还是使用软件,效果上尽管会差一些,可是还是可以起到一定的作用的. 环境准备 三台装有centos6.5 系统的机器.当中两台机器上装有tomcat7,一台机器上装有nginx3.0.2,至于详细怎样安装