记好雨云部署外部访问

最近把公司的docker集群管理切换成了好雨云,经过一番折腾,总算基本可以项目正常部署了,就是不算很稳定(当然这可能和我服务器配置不高也有关系),总是出现项目第一次或第二次编译不成功,但是再编译一次有好了的情况,觉得还是不够稳定(对比本地编译和daocloud)。不过这次要说的不是这个,是说说本地服务器部署外网访问的问题。

之前项目部署成功已经可以在内网正常访问了,当我把地址发给公司的测试的时候,测试告诉我我发送的地址外网无法访问,我试了一下确实无法访问,我联系好雨云的技术支持(他们的技术支持做的确实不错,专门建了一个微信群替我解答了许多问题),他们让我看域名映射。

1
ping 应用的域名

果真返回的是安装好雨云管理节点的IP,它应该是根据主机IP直接生成的DNS映射。知道了就好,下来修改DNS映射的主机地址:

1
grctl domain --ip 公司外网的固定IP

然后修改网管映射,修改外网的80端口映射到好雨云管理节点的80端口

大概就是这个逻辑映射到对应的端口:

然而一切还没有结束,因为我发现依然无法访问。。。

从外网telnet到ip的80端口,发现无法连接,打电话给电信,结果是因为主机没有备案,所以80端口是被封掉的状态,需要备案完成后联系电信开通。。。

好吧,这下才找到了问题,备案一时半会好不了,那么就有备用方案。

打开管理节点的/opt/rainbond/compose_bak/ui.yaml文件,这里存放了管理节点的数据库连接信息,根据MYSQL_USERMYSQL_PASS连接数据库.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: '2.1'
services:
rbd-app-ui:
image: goodrain.me/rbd-app-ui:3.7
container_name: rbd-app-ui
environment:
MANAGE_SECRET_KEY: xxxx
MYSQL_HOST: xxx.xxx.xxx.xxx
MYSQL_PORT: xxxx
MYSQL_USER: xxxx
MYSQL_PASS: xxxx
MYSQL_DB: console
volumes:
- /grdata/services/console:/data
- /opt/rainbond/logs/rbd-app-ui/goodrain.log:/tmp/goodrain.log
logging:
driver: json-file
options:
max-size: 50m
max-file: '3'
network_mode: host
restart: always

连接上数据库后,打开region_info表,这时配置数据中心的,其中有一个字段是httpdomain,这个是对应本地节点的域名,我闷在这个域名的后面加上:8080,现在就变成了xxxx.goodrain.cn:8080

然后将网关的8080端口映射到管理节点的80端口,这下再试一试,对应地址外网就可以访问了。

还是对很多基础的东西不熟悉,所以才搞了很久才搞好,还是要多学习。