• docker+tomcat+java配置(ubuntu)


    原创文章,转载请注明出处。

    本文是基于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@sessions*requireds*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的连接状态

  • 相关阅读:
    pwnable
    pwnable
    pwnable
    uva 11971
    uva 11582
    【数据结构】关于递归的几个例子
    【数据结构】快速排序
    【Python】range 倒序
    【数据结构】静态链表的实现(C语言描述)
    【数据结构】KMP 算法
  • 原文地址:https://www.cnblogs.com/mhten/p/4778053.html
Copyright © 2020-2023  润新知