如何使用Nginx实现CDSW的跨网段访问

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢

1.文档编写目的


在企业安装了CDSW后,由于服务安装在生产网络,考虑到集群的安全企业不允许将生产环境的网络直接放通给办公网或外网访问,如果需要在办公网或是外网访问则需要通过反向代理的方式来实现,本篇文章主要介绍如何使用Nginx反向代理CDSW服务。具体实现流程:

1.客户端发送请求(cdsw1.fayson.com)通过DNS1解析成Nginx Server的IP地址。

2.Nginx Server接收到客户端请求将cdsw1.fayson.com请求转发至CDSW服务。

  • 内容概述

1.DNS服务安装及配置

2.Nginx配置及版本要求

3.CDSW访问验证

4.总结

  • 测试环境

1.CDSW1.2.2基于图中的DNS2服务运行正常

2.CM和CDH版本为5.13.1

3.CDSW和CDH集群操作系统为RedHat7.2

4.Nginx服务器为RedHat6.4

5.Nginx版本为1.8.6

2.安装DNS服务并配置泛域名解析


该DNS服务主要用于解析Nginx服务IP地址,由于CDSW使用了泛域名,使用了多个域名如:

livelog.cdsw1.fayson.com
consoles.cdsw1.fayson.com
tty-{xxx}.cdsw1.fayson.com

(可左右滑动)

注意里面的域名有动态生成的,为了方便上面列出的域名解析到Nginx服务,选择安装DNS服务用于解析Nginx服务。

具体DNS服务配置这里就不详细讲述了,可以参考Fayson前面的文章《如何在Windows Server2008搭建DNS服务并配置泛域名解析》,《如何在Windows Server2012搭建DNS服务并配置泛域名解析》和《如何利用Dnsmasq构建小型集群的本地DNS服务器》这里Fayson选择使用DNSmasq搭建DNS服务。

1.如下是Fayon的/etc/dnsmasq.conf配置片段信息:

conf-dir=/etc/dnsmasq.d
resolv-file=/etc/resolv.Dnsmasq.conf
strict-order
listen-address=99.6.xxx.xxx
addn-hosts=/etc/hosts
address=/cdsw1.fayson.com/99.6.xxx.xxx
address=/cdsw1/99.6.xxx.xxx

(可左右滑动)

注意:这里安装的DNS服务,并不是配置在Nginx服务服务上,而是用于配置在你的客户端。即第一章的DNS1服务。

2.在访问Nginx的客户端配置DNS

在客户端CMD命令行测试域名是否能正常解析到Nginx服务

3.Nginx版本要求


由于CDSW使用了WebSocket服务,所以在Nginx版本上有一定的要求,需要Nginx版本大于1.3(含)具体可以参考官网说明:

https://www.nginx.com/blog/websocket-nginx/

本次测试选用的Nginx版本为Nginx1.8.6

关于Nginx的安装,这里就不再做说明了,大家可以参考Fayson前面的文章《如何使用Nginx实现Impala负载均衡》里面讲述了Nginx的安装及启停。

4.Nginx配置


1.修改nginx.conf文件,在http内添加如下内容

http {
    include       mime.types;
    include       reverse-proxy.conf;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    resolver 99.13.31.205;
    ...
}

(可左右滑动)

如上图标注部分,增加include和resolver配置。

include配置项的reverse-proxy.conf文件主要配置访问CDSW服务的反向代理。

resolver配置项,主要是为了防止“no resolver defined to resolve”,因为CDSW服务中使用了泛域名解析,在proxy_pass直接设置访问地址则不会出现这个问题。

2.编写reverse-proxy.conf配置文件,内容如下

server {
   listen 80;
   server_name cdsw1.fayson.com;
   location / {
     proxy_cookie_path / /;
     proxy_pass http://cdsw1.fayson.com;
   }
}
#配置反向代理
server {
   listen 80;
   server_name consoles.cdsw1.fayson.com;
   location / {
     add_header 'Access-Control-Allow-Origin' 'http://cdsw1.fayson.com';
     add_header 'Access-Control-Allow-Credentials' 'true';
     add_header 'Access-Control-Allow-Methods' 'GET';
     proxy_pass http://consoles.cdsw1.fayson.com/;
   }
}
server {
   listen 80;
   server_name livelog.cdsw1.fayson.com;
   location / {
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
     proxy_pass http://livelog.cdsw1.fayson.com;
     proxy_redirect off;
   }
}
#配置WebSocket的反向代理
server {
   listen 80;
   server_name *.cdsw1.fayson.com;
   location ~* /*/ws {
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
     proxy_pass http://$host;
     proxy_redirect off;
   }
   location / {
     add_header 'Access-Control-Allow-Origin' 'http://cdsw1.fayson.com';
     add_header 'Access-Control-Allow-Credentials' 'true';
     add_header 'Access-Control-Allow-Methods' 'GET';
     proxy_pass http://$host;
   }
}
server {
   listen 80;
   server_name cdh.fayson.com;
   location / {
      proxy_pass http://99.13.31.205:7180;
   }
}
server {
   listen 80;
   server_name ads.tableau.cmbchina.cn;
   location / {
      proxy_pass http://99.6.136.193;
   }
}

(可左右滑动)

3.完成上面的配置后,使用如下命令验证配置文件是否正确,并重新加载配置

nginx -t 
nginx -s reload

(可左右滑动)

nginx–s reload 命令在不重启服务的情况下重新加载Nginx的配置。

5.访问CDSW服务验证是否配置成功


1.在客户端浏览器输入http://cdsw1.fayson.com,输入用户名和密码登录

2.启动一个Session并运行代码

3.打开会话终端

4.创建工程

5.删除工程

6.总结


  • 在配置DNS的时候需要注意,Nginx的反向代理域名和CDSW访问的域名是一致的,因为CDSW服务中有部分连接使用的是CDSW Master的HostName,所以我们使用相同的域名做反向代理后避免了跨域访问Session丢失导致访问权限问题。
  • CDSW使用WebSocket服务,Nginx版本必须大于1.3,否则WebSocket反向代理会异常。

7.常见问题


在访问Nginx时在error.log中有如下异常:

2018/01/17 17:08:21 [error] 11065#0: *2952 tty-u5wgknkxfa2315i1.cdsw1.fayson.com could not be resolved
 (110: Operation timed out), client: 99.7.42.25, server: *.cdsw1.fayson.com, request: "GET /5kg4v7tey3
1x4x7y/ HTTP/1.1", host: "tty-u5wgknkxfa2315i1.cdsw1.fayson.com", referrer: "http://cdsw1.itc.cmbchina
.cn/admin/demo/engines/u5wgknkxfa2315i1"

(可左右滑动)

解决方法:

需要在nginx.conf配置的http中增加DNS配置:resolver 99.13.31.205;

提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

原文发布于微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文发表时间:2018-01-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闵开慧

hadoop安装配置过程总结

 一、Jdk安装 系统已经默认有安装,但不完全,所以需要自己安装 配置环境变量: 在usr下新建java文件夹,将Java7压缩文件解压在该文件夹中,并配置系统...

37460
来自专栏about云

spark开发环境详细教程1:IntelliJ IDEA使用详细说明

问题导读 1.IntelliJ IDEA是否可以直接创建Scala工程? 2.IntelliJ IDEA安装,需要安装哪些软件? 3.IntelliJ IDE...

37840
来自专栏玩转JavaEE

Spring Cloud Bus整合Kafka

Kafka是由LinkedIn开发并开源的分布式消息系统,因其分布式及高吞吐率而被广泛使用,现已与Cloudera Hadoop,Apache Storm,Ap...

487100
来自专栏Albert陈凯

P04_zookeeper-cdh5集群搭建

安装ZooKeeper包 [CDH下载地址](http://archive.cloudera.com/cdh5/cdh/5/) 1、将课程提供的zookeepe...

30460
来自专栏蜉蝣禅修之道

hadoop2.6和hbase1.0单机版安装配置

28820
来自专栏简单聊聊Spark

spark-1.3.0的编译及三种运行模式的配置

最近安装spark1.3.0并与Hadoop2.5.0集成,在Spark的历史资源管理中心没有找到对应的版本,而且在网上也没有找到对应版本的编译教程,于是只能根...

19430
来自专栏zhangdd.com

linux redis最新官方集群安装配置教程

Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.

6820
来自专栏about云

Cloudera Manager Server5及Cloudera Manager Agents5命令整理(about云)

问题导读 1.使用什么命令可以开启、停止、重启Cloudera Manager Server 2.如何强制重启Agents 3.什么情况下适合强制重启Agen...

34970
来自专栏用户2442861的专栏

Pycharm project share to Github

1、File->Settings->Version Control->Github

8720
来自专栏about云

Hadoop3.0: YARN Resource配置说明

问题导读 1.yarn默认情况下使用哪些资源? 2.Yarn如何实现扩展自定义资源? 3.自定义资源,可以在哪个配置文件中配置? 4.哪些配置可以在yarn-...

57360

扫码关注云+社区

领取腾讯云代金券