您的位置:首页 > 运维架构 > Docker

docker+tomcat+java配置(ubuntu)

2015-09-02 11:22 543 查看
原创文章,转载请注明出处。

本文是基于ubuntu14.04搭建的dosker,tomcat配置是在docker容器外面(为了方便查看日志)使用的是docker启动挂载,该tomcat工程依赖于docker容器中的java8,最后是启用多个容器做的负载均衡。

内核要求:

由于LXC的一个bug,Docker在3.8内核下面运行最佳。Ubuntu的Precise版本内置的是3.2版本的内核,因此我们首先需要升级内核。安装下面的步骤可以升级到3.8内核,并内置AUFS的支持。同时还包括了通用头文件,这样我们就可以激活依赖于这些头文件的包,比如ZFS,VirtualBox的增强功能包。

# install the backported kernel

sudo apt-get update

sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring

# reboot

sudo reboot

安装Docker:

Docker有deb格式的安装包,安装起来非常的容易。首先添加Docker库的密钥。

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

然后把Docker的库添加到apt的源列表中,更新并安装lxc-docker包。

sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\ > /etc/apt/sources.list.d/docker.list"

sudo apt-get update

sudo apt-get install lxc-docker

安装过程中会有一个警告信息,输入"yes"继续安装即可。安装成功之后,可以下载ubuntu镜像并启动一个镜像来验证安装是否正常。

sudo docker run -i -t ubuntu /bin/bash

成功运行之后,输入exit退出即可。

首先把工程放到本地/software/目录,如果需要把tomcat7和java的tar包放到这个目录,一并挂载到容器中

tomcat7下载地址:
http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.63/bin/apache-tomcat-7.0.63.tar.gz
sudo docker run -itv /data/:/data/ d2a0ecffe6fa /bin/bash

这条命令比较长,我们稍微分解一下,其实包含以下三个部分:

docker run <相关参数> <镜像 ID> <初始命令>

其中,相关参数包括:

-i:表示以“交互模式”运行容器

-t:表示容器启动后会进入其命令行

-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

假设我们的所有安装程序都放在了宿主机的/root/software/目录下,现在需要将其挂载到容器的/mnt/software/目录下。

需要说明的是,不一定要使用“镜像 ID”,也可以使用“仓库名:标签名”,

例如:docker.cn/docker/centos:centos6。

初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。

首先安装sshd

sudo apt-get update && apt-get install -y openssh-server

sudo mkdir -p /var/run/sshd

sudo echo 'root:oooooppppp' | chpasswd#修改root登录密码

sudo sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config

sudo sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

sudo echo "export VISIBLE=now" >> /etc/profile

安装tomcat7的依赖环境java8

sudo apt-get install software-properties-common python-software-properties

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install -y oracle-java8-installer oracle-java8-set-default

安装完修改工程的tomcat7的配置,(也可以直接在宿主机修改/software/tomcat7/conf/server.xml)

exit退出

生成images

sudo docker commit 0f665df58cea ubuntu/javaweb:1.0

启动容器

sudo docker run -v /software/:/data/ -d -p 22 -p 80:8080 --name javaweb 860c381529d6 /bin/sh -c "/data/tomcat7/bin/startup.sh && /usr/sbin/sshd -D"

-d:表示"守护模式"执行,后台运行

-p:表示宿主机与容器的端口映射,<xxx:xxx>前者为宿主机端口,后者为容器端口(如果不指定宿主机端口会默认分配)

--name 表示容器名称

导出容器

sudo docker ps -a #查看container_id

sudo docker export <container_id> > ubuntu.tar

导入容器镜像

sudo docker load --input ubuntu.tar

or

cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0

因为tomcat7是用挂载目录里面的,启动之前请务必根据对应目录挂载tomcat7的目录

搭建LVS+keepalived使多个docker之间负载

安装ipvsadm keepalived

sudo apt-get install ipvsadm keepalived

添加keepalived的配置文件

sudo vim /etc/keepalived/keepalived.conf #该文件默认是没有的

globel_defs{

   notification_email{

    yangqingbin@gfan.com #指定keepalived在切换时需要发送到的email对象,一行一个

    }

notification_email_from sns_lvs@gmail.com #指定发件人

smtp_server 127.0.0.1 #指定SMTP服务器地址

smtp_connection_timeout 30 #指定SMTP连接超时时间

router_id easyfun-106 #设置lvs的id,在一个网络内应该是唯一的

}

vrrp_instance VI_1{

  state MASTER #指定keepalived的角色,MASTER为主,BACKUP为备

  interface eth0 #设置实例绑定到那个网卡

  virtual_router_id 51 #VRID标记(0~255),主备要保持相同

  priority 150 #优先级,MASTER要高于BACKUP的优先级(至少50)

  advert_int 3 #检查间隔时间,默认1秒

  authentication {

    auth_type PASS #指定要使用那一种认证(PASS|AH)

    auth_pass 123456 #指定要使用的密码字符串

  }

   virtual_ipaddress {

    192.168.1.70 #定义虚拟IP(VIP),可多设,每行-个

  }

}

#定义对外提供服务的LVS的VIP以及port

virtual_server 192.168.1.70 8081 {

  delay_loop 1 #设置健康检测时间,单位为秒

  lb_algo wlc #设置LVS调度的算法rr|wrr|lc|wlc|lblc|lblcr|sh|dh

  lb_kind NAT #设置LVS实现负载的机制,(NAT|TUN|DR)三个模式

  persistence_timeout 3 #会话保持时间

  protocol TCP #使用的协议

  real_server 192.168.1.108 8001 { #指定real_server1的ip地址

    weight 3 #配置节点权值,数字越大权重越高

    HTTP_GET {

      url {

        path /

        status_code 200

      }

      connect_timeout 10 #连接远程真实服务器超时时间(秒)

      nb_get_retry 3 #最大重试次数

      delay_before_retry 3 #连续两次重试的延迟时间(秒)

    }

  }

  real_server 192.168.1.108 8002 { #指定real_server1的ip地址

    weight 3 #配置节点权值,数字越大权重越高

    HTTP_GET {

      url {

        path /

        status_code 200

      }

      connect_timeout 10 #连接远程真实服务器超时时间(秒)

      nb_get_retry 3 #最大重试次数

      delay_before_retry 30 #连续两次重试的延迟时间(秒)

    }  

  }

  real_server 192.168.1.108 8003 { #指定real_server1的ip地址

    weight 3 #配置节点权值,数字越大权重越高

    HTTP_GET {

      url {

        path /  

        status_code 200

      }

      connect_timeout 10 #连接远程真实服务器超时时间(秒)

      nb_get_retry 3 #最大重试次数

      delay_before_retry 30 #连续两次重试的延迟时间(秒)

    }

  }

}

保存退出

#注意要修改该文件中的ip和端口

sudo service keepalived start #启动keepalived

sudo ipvsadm -L -n #查看real_server状态

sudo ipvsadm -L -c #查看real_server的连接状态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: