• 第4次实践作业


    1. 使用Docker-compose实现Tomcat+Nginx负载均衡

    要求:

    • 理解nginx反向代理原理;

    • nginx代理tomcat集群,代理2个以上tomcat;

    • 了解nginx的负载均衡策略,并至少实现nginx的2种负载均衡策略;

    • 参考资料:
      Nginx 配置详解
      Nginx服务器之负载均衡策略

    docker-compose.yml文件

    version: "3"
    services:
      tomcat001:
        image: tomcat:8.5.0
        ports:
          - "8083:8080"
        restart: "always"
        container_name: tomcat001
      tomcat002:
        image: tomcat:8.5.0
        ports:
          - "8082:8080"
        container_name: tomcat002
        restart: "always"
      nginx:
        image: nginx
        volumes:
          - ./tom.conf:/etc/nginx/conf.d/tom.conf
        ports:
          - "81:80"
          - "443:443"
        links:
          - tomcat001:t01
          - tomcat002:t02
    

    nginx.conf

    upstream tomcat_client {
        server t01:8080 weight=1;
    	server t02:8080 weight=1;
    } 
    server {
        server_name "";
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
    
        location / {
            proxy_pass http://tomcat_client;
            proxy_redirect default;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    

    2. 使用Docker-compose部署javaweb运行环境

    要求:

    • 分别构建tomcat、数据库等镜像服务;
    • 成功部署Javaweb程序,包含简单的数据库操作;
    • 为上述环境添加nginx反向代理服务,实现负载均衡。
    • 参考资料:
      使用docker-compose部署Javaweb项目
      tomcat+nginx-mysql

    docker-compose.yml文件

    version: '2'
    services:
      tomcat01:
        image: tomcat:7
        container_name:  tomcat01
        ports:
         - "5050:8080"
        volumes:
         - "$PWD/webapps:/usr/local/tomcat/webapps"
        networks:
          webnet:
            ipv4_address: 15.22.0.15
      tomcat02:
        image: tomcat:7
        container_name:  tomcat02
        ports:
         - "5051:8080"
        volumes:
         - "$PWD/webapps2:/usr/local/tomcat/webapps"
        networks:
          webnet:
            ipv4_address: 15.22.0.16
      mymysql:
        build: .
        image: mymysql:test
        container_name: mymysql
        ports:
          - "3306:3306"
        command: [
                '--character-set-server=utf8mb4',
                '--collation-server=utf8mb4_unicode_ci'
        ]
        environment:
          MYSQL_ROOT_PASSWORD: "123456"
        networks:
          webnet:
            ipv4_address: 15.22.0.6
      nginx:
        container_name: web_nginx
        image: nginx
        volumes:
          - ./javaweb.conf:/etc/nginx/conf.d/javaweb.conf
        ports:
          - "80:80"
          - "443:443"
        links:
          - tomcat01:t01
          - tomcat02:t02
        networks:
           webnet:
            ipv4_address: 15.22.0.7
    networks:
     webnet:
       driver: bridge
       ipam:
         config:
           - subnet: 15.22.0.0/24
             gateway: 15.22.0.2
    

    nginx 配置文件

    upstream tomcat_client {
       server t01:8080 weight=1;
       server t02:8080 weight=1;
    } 
    server {
       server_name "";
       listen 80 default_server;
       listen [::]:80 default_server ipv6only=on;
    
       location / {
           proxy_pass http://tomcat_client;
           proxy_redirect default;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
       }
    }
    

    测试

    3. 使用Docker搭建大数据集群环境

    直接用机器搭建Hadoop集群,会因为不同机器配置等的差异,遇到各种各样的问题;也可以尝试用多个虚拟机搭建,但是这样对计算机的性能要求比较高,通常无法负载足够的节点数;使用Docker搭建Hadoop集群,将Hadoop集群运行在Docker容器中,使Hadoop开发者能够快速便捷地在本机搭建多节点的Hadoop集群。

    要求:

    • 完成hadoop分布式集群环境配置,至少包含三个节点(一个master,两个slave);
    • 成功运行hadoop 自带的测试实例。
    • 参考资料:
      Hadoop 参考文档
      使用Docker搭建Hadoop分布式集群

    配置hadoop

    core-site.xml:

    <configuration>
        <property>  
            <name>fs.defaultFS</name>
            <value>hdfs://master:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/usr/local/hadoop-3.1.3/tmp</value>
        <description>A base for other temporary derectories.</description>
        </property>
    </configuration>
    

    hdfs-site.xml:

    <configuration>
            <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop-3.1.3/tmp/dfs/name</value>
        </property>
        <property>
            <name>dfs.namenode.data.dir</name>
            <value>file:/usr/local/hadoop-3.1.3/tmp/dfs/data</value>
        </property>
    </configuration>
    

    mapred-site.xml:

    <configuration>
        <property>
            <!--使用yarn运行MapReduce程序-->
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
        <property>
            <!--jobhistory地址host:port-->
            <name>mapreduce.jobhistory.address</name>
            <value>master:10020</value>
        </property>
        <property>
            <!--jobhistory的web地址host:port-->
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>master:19888</value>
        </property>
        <property>
            <!--指定MR应用程序的类路径-->
            <name>mapreduce.application.classpath</name>
            <value>/usr/local/hadoop-3.1.3/share/hadoop/mapreduce/lib/*,/usr/local/hadoop-3.1.3/share/hadoop/mapreduce/*</value>
        </property>
    </configuration>
    
  • 相关阅读:
    时间戳(1532249295.179) 转日期格式(2018/07/22 16:48:15 179)
    iscroll.js右侧可滑动的菜单,点击每个菜单都会出现本菜单的详情
    canvas绘制的文字如何换行
    移动端H5页面禁止长按复制和去掉点击时高亮
    一列宽度不缩放,一列宽度弹性缩放,且超出后显示省略号
    js钩子机制(hook)
    mCustomScrollbar.js 漂亮的滚动条插件 适应内容自动更新
    axios.js 实例 -----$.ajax的替代方案
    用 async/await 来处理异步实例
    C#入门经典第18章-WEB编程
  • 原文地址:https://www.cnblogs.com/ruifeng1/p/12914089.html
Copyright © 2020-2023  润新知