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的下载安装也很花时间。