90.Nginx实现CDSW的跨网段访问

90.1 演示环境介绍

实现流程:

  • CM和CDH版本:5.13.1
  • CDSW和CDH集群操作系统为RedHat:7.2
  • Nginx服务器:RedHat6.4
  • Livy版本:0.4
  • Nginx版本:1.8.6

90.2 操作演示

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

  • 该DNS服务主要用于解析Nginx服务IP地址,由于CDSW使用了泛域名,使用了多个域名如:
    • 注意里面的域名有动态生成的,为了方便上面列出的域名解析到Nginx服务,选择安装DNS服务用于解析Nginx服务
livelog.cdsw1.fayson.com
consoles.cdsw1.fayson.com
tty-{xxx}.cdsw1.fayson.com
  • Fayon的/etc/dnsmasq.conf配置片段信息:
    • 这里安装的DNS服务,并不是配置在Nginx服务服务上,而是用于配置在你的客户端
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
  • 在访问Nginx的客户端配置DNS
    • 在客户端CMD命令行测试域名是否能正常解析到Nginx服务

2.Nginx配置

  • 修改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直接设置访问地址则不会出现这个问题
  • 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;
   }
}
  • 使用如下命令验证配置文件是否正确,并重新加载配置
nginx -t 
nginx -s reload
  • nginx–s reload 命令在不重启服务的情况下重新加载Nginx的配置

3.总结

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

4.常见问题

  • 在访问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;

大数据视频推荐:
CSDN
大数据语音推荐:
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值