一.使用Docker-compose实现Tomcat+Nginx负载均衡
(1)理解nginx反向代理原理;
(2)nginx代理tomcat集群,代理2个以上tomcat;
构建以下目录及文件
docker-compose.yml
default.conf
index.html
运行docker-compose
docker-compose up -d
(3)nginx的负载均衡策略
轮询策略测试负载均衡
此时三者轮流出现
权重策略测试负载均衡
修改default.conf
很明显可以看到3>2>1
二.使用Docker-compose部署javaweb运行环境
使用老师给的教程中的应用
docker-compose.yml
default.conf
jdbc.properties
修改上述两个文件 注意端口号要对准 不然后续可能会出现连不上的情况
运行后进入http://10.0.2.15:5050/ssmgrogshop_war
进行简单的数据库操作 此处以插入举例
三.使用Docker搭建大数据集群环境
(1)搭建hadoop环境
创建以下目录结构
Dockerfile
source.list
创建并运行容器
sudo docker build -t ubuntu:18.04 .
sudo docker run -it --name ubuntu ubuntu:18.04
(2))容器初始化
安装必要工具
apt-get update
apt-get install vim # 用于修改配置文件
apt-get install ssh # 分布式hadoop通过ssh连接
/etc/init.d/ssh start # 开启sshd服务器
vim ~/.bashrc # 在文件末尾添加/etc/init.d/ssh start,实现ssd开机自启
实现ssh无密码登陆
cd ~/.ssh
ssh-keygen -t rsa # 一直按回车即可
cat id_rsa.pub >> authorized_keys #这一步要在~/.ssh目录下进行
安装jdk
apt install openjdk-8-jdk
vim ~/.bashrc # 在文件末尾添加以下两行,配置Java环境变量:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export PATH=$PATH:$JAVA_HOME/bin
source ~/.bashrc
java -version #查看是否安装成功
安装hadoop
docker cp ./build/hadoop-3.1.3.tar.gz 容器ID:/root/build
cd /root/build
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 # 使.bashrc生效
hadoop version
(3)配置hadoop集群
进入配置目录
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
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-3.1.3/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</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.datanode.data.dir</name>
<value>file:/usr/local/hadoop-3.1.3/tmp/dfs/data</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.3</value>
</property>
</configuration>
yarn-site.xml
<?xml version="1.0" ?>
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<!--虚拟内存和物理内存比,不加这个模块程序可能跑不起来-->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.5</value>
</property>
</configuration>
进入脚本目录
cd /usr/local/hadoop-3.1.3/sbin
对于start-dfs.sh和stop-dfs.sh文件,添加下列参数
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
对于start-yarn.sh和stop-yarn.sh,添加下列参数
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
(4)构建镜像
docker commit 容器ID ubuntu/hadoop
(5)利用构建好的镜像运行主机
# 第一个终端
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,根据各自ip修改为如下形式
172.17.0.3 master
172.17.0.4 slave01
172.17.0.5 slave02
在master结点测试ssh;连接到slave结点
ssh slave01
ssh slave02
exit #退出
master主机上修改workers
vim /usr/local/hadoop-3.1.3/etc/hadoop/workers
slave01
slave02
测试Hadoop集群
#在master上操作
cd /usr/local/hadoop-3.1.3
bin/hdfs namenode -format #首次启动Hadoop需要格式化
sbin/start-all.sh #启动所有服务
jps #分别查看三个终端
(6)运行Hadoop实例程序
bin/hdfs dfs -mkdir -p /user/hadoop/input
bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input
bin/hdfs dfs -ls /user/hadoop/input
执行实例并查看运行结果
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep /user/hadoop/input output 'dfs[a-z.]+'
bin/hdfs dfs -cat output/*
四.总结
这次实验量很大做的磕磕碰碰,大概从下午两点做到晚上两点,发现很多问题,到现在其实还不明白为什么这样就可以,还是得继续学习。
总而言之 第一个实验没什么问题,第二个实验有老师的参考程序大体没什么问题 主要粗心在把容器名字打重复了找了一个多小时bug,第三个实验就量大综合,能搞懂的话能进步很多。
最后还是感谢各位帮助我的大佬orz.