1.写文档的目的是企业安装CDSW后,由于服务是安装在生产网络上,考虑到集群的安全性,不允许企业直接将生产环境的网络发布到办公网络或外网网络访问,如果需要从办公网络或者外网访问,需要使用反向代理的方式。本文主要介绍如何使用Nginx反向代理CDSW服务。具体实现过程:1、客户端发送请求(cdsw1.fayson.com),通过DNS1解析到NginxServer的IP地址。2、NginxServer收到客户端请求,将cdsw1.fayson.com请求转发给CDSW服务。内容概述1.DNS服务安装配置2.Nginx配置及版本要求3.CDSW接入验证4.测试环境总结1.CDSW1.2.2基于图中DNS2服务运行正常2.CM和CDH版本是5.13.13。CDSW和CDH集群操作系统是RedHat7.24。Nginx服务器是RedHat6.45。Nginx版本为1.8.62。安装DNS服务并配置泛域名解析。DNS服务主要用于解析Nginx服务IP地址。由于CDSW使用pan域名,所以使用多个域名如:livelog.cdsw1.fayson.comconsoles.cdsw1.fayson.comtty-{xxx}.cdsw1.fayson.com注意里面的域名是动态生成的,为了方便将上面列出的域名解析到Nginx服务,选择安装DNS服务来解析Nginx服务。1、下面是Fayon的/etc/dnsmasq.conf配置片段信息:conf-dir=/etc/dnsmasq.dresolv-file=/etc/resolv.Dnsmasq.confstrict-orderlisten-address=99.6.xxx.xxxaddn-hosts=/etc/hostsaddress=/cdsw1.fayson.com/99.6.xxx.xxxaddress=/cdsw1/99.6.xxx.xxx注意:这里安装的DNS服务不是在Nginx服务上配置的,而是用来在你的客户端配置的.即第一章中的DNS1服务。2、在访问Nginx的客户端配置DNS,在客户端CMD命令行测试域名是否能正常解析到Nginx服务。1.3以上(含),详见官网:https://www.nginx.com/blog/websocket-nginx/本次测试选用的Nginx版本为Nginx1.8.64。Nginx配置1.修改nginx.conf文件,在http中添加如下内容http{includemime.types;includerereverse-proxy.conf;default_typeapplication/octet-stream;sendfileon;keepalive_timeout65;resolver99.13.31.205;...}如上图标注,添加include和resolver配置。include配置项的reverse-proxy.conf文件主要是配置访问CDSW服务的反向代理。resolver配置项主要是为了防止“没有定义resolver来解析”,因为CDSW服务使用的是泛域名解析,直接在proxy_pass中设置访问地址是不会出现这个问题的。2.编写reverse-proxy.conf配置文件,内容如下server{listen80;server_namecdsw1.fayson.com;location/{proxy_cookie_path//;proxy_passhttp://cdsw1.fayson.com;}}#配置反代理server{listen80;server_nameconsoles.cdsw1.fayson.com;location/{add_header'Access-Control-Allow-Origin''http://cdsw1.fayson.com';add_header'Access-Control-Allow-Credentials''true';add_header'访问控制允许方法''GET';proxy_passhttp://consoles.cdsw1.fayson.com/;}}server{listen80;server_namelivelog.cdsw1.fayson.com;location/{proxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"upgrade";proxy_passhttp://livelog.cdsw1.fayson.com;proxy_redirectoff;}}#配置WebSocket的反向代理server{listen80;server_name*.cdsw1.fayson.com;location~*/*/ws{proxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection"upgrade";proxy_passhttp://$host;proxy_redirectoff;}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_passhttp://$host;}}server{listen80;server_namecdh.fayson.com;location/{proxy_passhttp://99.13.31.205:7180;}}server{listen80;server_nameads.tableau.cmbchina.cn;location/{proxy_passhttp://99.6.136.193;}}3.完成以上配置后,使用如下命令验证配置文件是否正确,并重新加载配置nginx-tnginx-sreloadnginx–sreload命令重新加载Nginx配置,无需重启服务5.访问CDSW服务验证是否正确配置成功1.在客户端浏览器中输入http://cdsw1。fayson.com,输入用户名和密码登录2.启动一个Session,运行代码3.打开session终端4.创建项目5.删除项目6.总结配置DNS时需要注意到Nginx和CDSW访问的反向代理域名域名是一样的,因为CDSW服务中有些连接使用的是CDSWMaster的HostName,所以我们使用相同的域名作为反向代理,避免造成的访问权限问题通过丢失跨域访问会话。CDSW使用WebSocket服务,Nginx版本必须大于1.3,否则WebSocket反向代理会异常。7、常见问题访问Nginx时,error.log有如下异常:2018/01/1717:08:21[error]11065#0:*2952tty-u5wgknkxfa2315i1.cdsw1.fayson.comcouldnotberesolved(110:Operationtimedout),客户端:99.7.42.25,服务器:*.cdsw1.fayson.com,请求:“GET/5kg4v7tey31x4x7y/HTTP/1.1”,主机:“tty-u5wgknkxfa2315i1.cdsw1.fayson.com”,推荐人:“http://cdsw1.itc.cmbchina.cn/admin/demo/engines/u5wgknkxfa2315i1》解决方法:在nginx.conf中配置的http中需要添加DNS配置:resolver99.13.31.205;
