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
大数据语音推荐:
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通