2020系统综合实践 第4次实践作业
目录
1.使用Docker-compose实现Tomcat+Nginx负载均衡
1.1 理解nginx反向代理原理
- 菜鸟教程:
 其他教程  
1.2 nginx代理tomcat集群,代理2个以上tomcat
- 主目录下创建tomcat文件夹,结构如下
- docker-compose.yml
- default.conf
- 开始构建
sudo docker-compose up -d 
- 访问localhost:
1.3 实现nginx的2种负载均衡策略
- 轮询策略下:(为了显示清楚修改了上一步的html)
可以看出123出现频率相同
- 权重策略下:
 修改default.conf
可以看出权重大的出现频率就高:
2.使用Docker-compose部署javaweb运行环境
*使用老师给的博客例子
- 主目录下创建javaweb文件夹,结构如下
- docker-compose.yml
version: "3"   
services:     
  tomcat:     
    image: tomcat    #镜像
    hostname: hostname       #容器的主机名
    container_name: tomcatjw   #容器名
    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:  
    build: .   #通过MySQL的Dockerfile文件构建MySQL
    image: mymysql:test
    container_name: mysql_0517
    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   #子网
- docker-entrypoint.sh
- default.conf
- Dockerfile
- 修改/home/javaweb/webapps/ssmgrogshop_war/WEB-INF/classes下的jdbc.properties(改成自己的ip地址 可使用ifconfig查看en开头那一项)
- 开始构建
sudo docker-compose up -d 
- 访问网页(两个都可以)账号密码为sa、123
http://127.0.0.1:8080/ssmgrogshop_war
http://localhost:8080/ssmgrogshop_war
- 登陆成功
- 增删改查(以增为例 其他类似)
进入mymysql容器可以查看后台数据变化:
sudo docker exec -it ID /bin/bash
mysql -u root -p(密码123456)
show databases;
use 某数据库;
show tables;
select * from 表名
3.使用Docker搭建大数据集群环境
直接用机器搭建 Hadoop集群,会因为不同机器配置等的差异,遇到各种各样的问题;也可以尝试用多个虚拟机搭建,但是这样对计算机的性能要求比较高,通常无法负载足够的节点数;使用 Docker搭建 Hadoop集群,将 Hadoop集群运行在 Docker容器中,使 Hadoop开发者能够快速便捷地在本机搭建多节点的 Hadoop集群
3.1 完成hadoop分布式集群环境配置(master+2slave)
- 主目录下创建javaweb文件夹,结构如下
- Dockerfile
- source.list
- 创建并进入容器ubuntu
docker build -t ubuntu:18.04 .
docker run -it --name ubuntu ubuntu:18.04
- Ubuntu系统初始化
apt-get update #更新系统软件源
apt-get install vim 
apt-get install ssh #分布式hadoop通过ssh连接
- 注:centos上更新系统软件源太慢了,卡了几个小时下不去,这步之后就换了个虚拟机
vim ~/.bashrc 
- 在文件末尾添加/etc/init.d/ssh start,实现ssd开机自启动
- 配置ssh免密登陆
ssh-keygen -t rsa 
cd ~/.ssh        
cat id_rsa.pub >> authorized_keys 
- 安装jdk
apt-get install openjdk-8-jdk
- 配置环境
vim ~/.bashrc 末尾加上
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export PATH=$PATH:$JAVA_HOME/bin
- 使配置环境生效
source ~/.bashrc 
- 查看版本信息
java -version 
- 将hadoop-3.1.3.tar.gz放在挂载目录下
docker cp ./build/hadoop-3.1.3.tar.gz 容器ID:/root/hadoop-3.1.3.tar.gz
- 安装hadoop
cd /root
tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local
- 配置环境
vim ~/.bashrc 末尾加上
export HADOOP_HOME=/usr/local/hadoop-3.1.3
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin
- 使配置环境生效
source ~/.bashrc 
- 查看版本信息
hadoop version 
- 进入配置目录使用vim修改如下相关文件
cd /usr/local/hadoop-3.1.3/etc/hadoop
- hadoop-env.sh在任意位置添加:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
- core-site.xml
- hdfs-site.xml
- mapred-site.xml
- yarn-site.xml
- 进入脚本目录修改下列文件
cd /usr/local/hadoop-3.1.3/sbin
- start-dfs.sh和stop-dfs.sh添加如下配置
- start-yarn.sh和stop-yarn.sh添加如下配置
- 保存配置好的镜像并命名,查看是否成功
docker commit 容器ID ubuntu/hadoop 
docker images
- 开三个终端运行ubuntu/hadoop镜像,分别表示Hadoop集群中的master、slave01和slave02
docker run -it -h master --name master ubuntu/hadoop
docker run -it -h slave01 --name slave01 ubuntu/hadoop
docker run -it -h slave02 --name slave02 ubuntu/hadoop
- 根据原有文件分别修改/etc/hosts
- 在master上测试ssh
ssh slave01
exit
ssh slave02
exit
- 修改master的workers
vim /usr/local/hadoop-3.1.3/etc/hadoop/workers
3.2 运行hadoop自带的测试实例
- 第一次使用,格式化文件系统
hdfs namenode -format
- 开启服务
sbin/start-all.sh           #启动所有服务
- jps查看三者的启动情况:
- 新建文件夹input
hdfs dfs -mkdir -p /user/root/input
- 将测试用例要用的文件放入
hdfs dfs -put /usr/local/hadoop-3.1.3/etc/hadoop/*s-site.xml input
- 运行示例程序grep
hadoop jar /usr/local/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+' 
- 查看结果
hdfs dfs -cat output/* 
4.总结
- 
相关文件 
 见上方截图
- 
问题解决 
 问题1:使用Docker-compose实现Tomcat+Nginx负载均衡时nginx容器开启后过几秒就会自动关闭
 解决:检查发现是default.conf文件写错了,改对重新运行up -d就不会消失了问题2:运行grep例子时虚拟机卡死 
 解决:重启多试几次,可以调大内存
- 
时间记录 
 20h左右,配置文件经常写错,错又很难找到,非常耗时。中途还换了一次虚拟机,重新配置了一次docker,jdk和hadoop的下载安装也很花时间。


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号