第四次系统综合实践

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

1.反向代理:代理服务器

反向代理,客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

2.nginx代理tomcat集群,代理2个以上tomcat

文件结构

default.conf配置文件

第一种负载均衡策略(轮询方式)

第二种负载均衡方式(权重方式)

docker-compose.yml文件

  version: "3"
  services:
    nginx:
    image: nginx
    container_name: mynginx
    ports:
        - 80:2509
    volumes:
        - ./default.conf:/etc/nginx/conf.d/default.conf # 挂载配置文件
    depends_on:
        - tomcat1
        - tomcat2
        - tomcat3

tomcat1:
    image: tomcat
    container_name: mytomcat1
    volumes:
       - ./tomcat1:/usr/local/tomcat/webapps/ROOT

tomcat2:
    image: tomcat
    container_name: mytomcat2
    volumes:
       - ./tomcat2:/usr/local/tomcat/webapps/ROOT

tomcat3:
    image: tomcat
    container_name: mytomcat3
    volumes:
       - ./tomcat3:/usr/local/tomcat/webapps/ROOT

运行Python文件

第一种负载均衡策略(轮询方式)

第二种负载均衡方式(权重方式)

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

文件结构

docker-compose.yml

version: "3"   
services:    
tomcat00:     
image: tomcat    
hostname: hostname       
container_name: tomcat00   
ports:      
 - "2020: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" 

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搭建大数据集群环境

SSH配置免密登录节点
这一部分的操作目的是让主节点能免密登录到从节点。
(1) Master 节点:因为更改过主机名,所以要先删除原来生成密钥再重新生成(如果没有不需要删除,直接往后执行)。若没有特别说明后续步骤默认在Master节点上操作。

(2) ssh生成密钥,停顿处直接回车。

(3)将公钥追加到authorized_ keys中,执行ssh Master验证,记得exit退出连接。



(4)将公钥传输给其它节点,从Master节点传输到Slave节点存放到用户目录下,远程拷贝用scp命令。过程中要输入Slave节点的用户密码,100% 显示传输完成。

(5)切换到Slave节点:将公钥追加到authorized
keys中,然后可以删除公钥。

(6)回到Master节点:执行ssh Slave 已经可以免密登录到Slave 节点了。exit 可以退回原来的Master终端。

4.分布式环境搭建

core-site.xml:

hdfs-site.xml:

mapred-site.xml:

yarm-site.xml:

5.实例测试
(1)首次启动Hadoop,Master节点执行hdfs namenode -format格式化,后面启动就不需要了。

(2) Master节点上
启动HDFS,对应关闭命令stop-dfs.sh:

启动YARN,关闭命令stop-yam.sh:

启动Job History Server,关闭命令mapred - -daemon stop historyserver:

(3) jps分别查看Master、 Slave节点进程。包含以下几个节点表明启动成功,若没有请根据日志排查原因。


(4)hdfs dfsadmin report查看信息,Live datanodes不为0表示数据节点正常启动。

(5)测试实例过程
执行hadoop jar命令测试实例:

输出结果(结果跟配置文件修改有关):

Hadoop之前零零散散的做了一些操作,现在能找得到的实验步骤大概就这些。第一步多此一举装了个Nginx,结果端口一直显示被占用,卡了好久才解决。第二步javaweb,不知道为啥在window系统还能操作一下,到了linux系统就有点不知所措,勉勉强强把参考项目搞完了。

原文地址:https://www.cnblogs.com/lx2509/p/12907244.html