• 2020系统综合实践 第4次实践作业


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

    (1)配置文件

    • 在主目录下创建一个tomcat文件夹,并在里面添加如下文件

    • docker-compose.yml

    • nginx里面是一个default.conf文件

    • 另外三个文件里面均为一个html文件,内容设置不一样,能区分就行,下图为例

    • 查看树结构

    • 运行docker-compose

    • 查看运行的容器

    • 访问网页,点击刷新会逐步出现之前设置的三个html里面的内容


    (2)负载均衡测试

    A.轮询测试

    • 在主目录添加一个testTomcat.py的python文件代码如下
    import requests
    
    url="http://localhost"
    
    for i in range(0,10):
    	reponse=requests.get(url)
    	print(reponse.text)
    
    • 运行该python文件

    B.权重测试

    • 修改default.conf里面的内容

    • 添加一个testTomcat.py的文件,代码如下

    import requests
    
    url="http://localhost"
    
    context={}
    for i in range(0,100):
    	response=requests.get(url)
    	
    	if response.text in context:
    		context[response.text]+=1
    	else:
    		context[response.text]=1
    
    print(context)
    
    • 运行python文件,三个tomcat出现的概率刚好为之前设置的5:3:2

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

    (1)确实不会javaweb,用老师给的例子来完成本次实验

    • 按照给定的步骤更改数据库ip

    • 创建并启动容器 sudo docker-compose up -d

    • 在web上访问

    • 进行一些简单的操作

    (2)添加nginx反向代理服务,实现负载均衡

    • docker-compose.yml
    version: "3"   #版本
    services:     #服务节点
      tomcat:     #tomcat 服务
        image: tomcat    #镜像
        hostname: hostname       #容器的主机名
        container_name: tomcat00   #容器名
        ports:      #端口
         - "5050:8080"
        volumes:  #数据卷
         - "./webapps:/usr/local/tomcat/webapps"
         - ./wait-for-it.sh:/wait-for-it.sh
        networks:   #网络设置静态IP
          webnet:
            ipv4_address: 15.22.0.15
      mymysql:  #mymysql服务
        build: .   #通过MySQL的Dockerfile文件构建MySQL
        image: mymysql:test
        container_name: mymysql
        ports:
          - "3309:3306" 
    #红色的外部访问端口不修改的情况下,要把Linux的MySQL服务停掉
    #service mysql stop
    #反之,将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:
          image: nginx
          container_name: "nginx-tomcat"
          ports:
              - 8080:8080
          volumes:
              - ./default.conf:/etc/nginx/conf.d/default.conf # 挂载配置文件
          tty: true
          stdin_open: true
          networks:
           webnet:
            ipv4_address: 15.22.0.7
    networks:   #网络设置
     webnet:
       driver: bridge  #网桥模式
       ipam:
         config:
          - 
           subnet: 15.22.0.0/24   #子网
    

    -Dockerfile

    #  这个是构建MySQL的dockerfile
    FROM registry.saas.hand-china.com/tools/mysql:5.7.17
    # mysql的工作位置
    ENV WORK_PATH /usr/local/
    # 定义会被容器自动执行的目录
    ENV AUTO_RUN_DIR /docker-entrypoint-initdb.d
    #复制gropshop.sql到/usr/local 
    COPY grogshop.sql  /usr/local/
    #把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell
    COPY docker-entrypoint.sh  $AUTO_RUN_DIR/
    #给执行文件增加可执行权限
    RUN chmod a+x $AUTO_RUN_DIR/docker-entrypoint.sh
    # 设置容器启动时执行的命令
    #CMD ["sh", "/docker-entrypoint-initdb.d/import.sh"]
    

    -default.conf

    upstream tomcat123 {
        server tomcat00:8080;
    }
    
    server {
        listen 8080;
        server_name localhost;
    
        location / {
            proxy_pass http://tomcat123;
        }
    }
    
    • 查看树结构

    • 重新启动容器sudo docker-compose up -d

    • 再次访问网页

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

    (1)创建build文件,创建并运行容器

    sudo docker run -it -v /home/hadoop/build:/root/build --name ubuntu ubuntu

    • 首先安装JDK,解压预先准备好的压缩包

    • 输入ls /usr/lib/jvm查看是否成功

    • JDK环境配置,输入命令vim ~/.bashrc进行如下图环境变量的配置(vim 中:i 进入输入模式,esc 进入命令模式,:进入末行模式)

    • 使用:wq保存退出后查看输入java -version查看是否配置成功,结果如下图,已配置成功

    • 安装Hadoop及其环境配置,将安装包解压到目标目录下,并查看是否成功

    • 输入vim ~/.bashrc进入如下配置,操作方法同上

    • 查看hadoop版本,出现下图,则证明配置成功。

    • 免密登录配置,指令输入,期间一直按回车就行

    • 新开一个终端,保存该配置好的镜像
      udo docker commit 容器id ubuntu:jdk8 #保存说明是jkd8版本的ubuntu

    • 利用配置好的镜像创建运行一个新的容器
      sudo docker run -it -v /home/badoop/build:/root/build --name ubuntu-jdk8 ubuntu:jdk8

    (2)配置Hadoop集群

    • hadoop-env.sh
      cd /usr/local/hadoop-3.1.3/etc/hadoop #进入配置文件存放目录 vim hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ # 在任意位置添加

    • 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>

    • yarn-site.xml
      <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.5</value> </property> </configuration>

    (3)运行Hadoop集群

    • 新开三个终端分别运行ubuntu_hadoop镜像,表示Hadoop集群中的master,slave01和slave02
      `

    第一个终端

    sudo docker run -it -h master --name master ubuntu_hadoop

    第二个终端

    sudo docker run -it -h slave01 --name slave01 ubuntu_hadoop

    第三个终端

    sudo docker run -it -h slave02 --name slave02 ubuntu_hadoop
    `

    • 三个终端分别打开/etc/hosts,根据各自ip修改为如下形式
    • 在master结点测试ssh;连接到slave结点
      ssh slave01 ssh slave02 exit # 退出
    • 修改master上workers文件,将localhost修改为如下所示
      vim /usr/local/hadoop-3.1.3/etc/hadoop/workers slave01 slave02

    (4)测试Hadoop集群

    • 启动hdfs 初次启动需要格式化
      cd /usr/local/hadoop-3.1.3 bin/hdfs namenode -format #首次启动Hadoop需要格式化 sbin/start-all.sh #启动所有服务

    • 输入jps查看三个终端,如果出现下图则证明启动成功,未出现则需要切查看日志排除原因


    • 建立hdfs文件夹
      cd /usr/local/hadoop-3.1.3 bin/hdfs dfs -mkdir /user bin/hdfs dfs -mkdir /user/root bin/hdfs dfs -mkdir input

    • 在master终端上vim一个测试样例test.txt,内容随意字符串,上传到input文件下
      bin/hdfs dfs -put ~/test.txt input

    • 运行功能为计算字符串个数的jar包
      bin/hadoop jar /usr/local/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount input output

    • cat查看output文件夹结果显示
      ./bin/hdfs dfs -cat output/*

    • 验证完成,关闭hdfs,这条指令在每次完成实验都需要执行
      sbin/stop-all.sh

    4.遇到的问题

    在做第二个实验的时候,配置完成去访问网页的时候出现如下问题

    经同学指正我连接的是数据库而不是tomcat,端口更正后即可成功访问

    5.经验和感想

    由于之前未接触过这类知识,做起来本就比较坎坷,再加上本次实验量非常多,花费了更多时间去学习和操作。感谢那些提前做好的同学供我们参考,以及群里积极回答我们困难的同学。

    6.完成作业所花的时间

    本次实验经过学习,动手操作,改正问题,解决疑难,写博客,共花费了15小时左右。

  • 相关阅读:
    【VS开发】【图像处理】RGB各种格式
    【VS开发】【图像处理】RGB Bayer Color分析
    【VS开发】【图像处理】RGB Bayer Color分析
    【VS开发】ActiveX开发注意事项
    【VS开发】ActiveX开发注意事项
    【VS开发】 自己编写一个简单的ActiveX控件——详尽教程
    【VS开发】 自己编写一个简单的ActiveX控件——详尽教程
    【VS开发】在VS2010中开发ActiveX控件设置测试容器的方式
    vim 编辑 windows下的文本时出现乱码, 修改配置后 已解决
    Centos 中扩展 软件源 的安装 之 epel ( 为yum 扩展软件源 EPEL源 )
  • 原文地址:https://www.cnblogs.com/rxdd/p/12912180.html
Copyright © 2020-2023  润新知