marathon-lb上添加多证书并实现泛解析代理域名-2

lb上添加多证书并实现泛解析代理域名 之 marathon-lb上添加多个证书

marathon-lb代理https域名, 需要将证书当道lb上。nginx不需要开启443端口,nginx需要配置 vhost 才能访问。

vhost 需要再nginx发布的时候通过标签形式发布的,但是一个nginx上可能多个域名,不是很灵活,(当你的服务全部都在mesos集群中的话,不用nginx,直接用LB+服务 方式,就可以在每个服务发布的时候声明vhosts。),之后我们研究了nginx发布的时候发布泛域名来解决这个问题。连接 : nginx实现marathon-lb的vhosts泛域名代理

marathon-lb 和 nginx 域名都是通过 vhost 虚拟主机方式访问。这样nginx才能拿到 x_forwarded_for 客户端的IP地址。LB才会通过HTTP方式代理,否则会走TCP代理。

marahton-lb 可以加载多个证书,–ssl-certs 用“,”逗号隔开证书路径

  • 证书需要pem格式,就是 crt 和 key 按顺序放在一起就可以了。

我没有把证书放到容器里面, 而是用的marathon uris 方式下载的。

LB的json文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
{
"id": "/marathon-lb/marathon-shining-001",
"cmd": null,
"cpus": 1,
"mem": 1024,
"disk": 0,
"instances": 1,
"constraints": [
[
"lb",
"LIKE",
"true"
]
],
"container": {
"type": "DOCKER",
"volumes": [
{
"containerPath": "/dev/log",
"hostPath": "/dev/log",
"mode": "RW"
}
],
"docker": {
"image": "marathon-lb:v1.13.1",
"network": "BRIDGE",
"portMappings": [],
"privileged": true,
"parameters": [
{
"key": "network",
"value": "shining-macvlan"
},
{
"key": "hostname",
"value": "shining-test-lb-001"
},
{
"key": "ip",
"value": "192.168.53.200"
}
],
"forcePullImage": true
}
},
"env": {
"TZ": "Asia/Shanghai"
},
"args": [
"sse",
"-m",
"http://192.168.55.4:8080",
"http://192.168.55.5:8080",
"http://192.168.55.6:8080",
"--auth-credentials",
"shining-username:passwd",
"--ssl-certs",
"/mnt/mesos/sandbox/shiningtest1.com.pem,/mnt/mesos/sandbox/shiningtest2.com.pem",
"--group",
"lbgroupname"
],
"uris": [
"http://192.168.55.3/download/com-cert/shiningtest1.com.pem.tar.gz",
"http://192.168.55.3/download/com-cert/shiningtest2.com.pem.tar.gz"
],
"upgradeStrategy": {
"minimumHealthCapacity": 0,
"maximumOverCapacity": 0
}
}

这样LB上的443端口上默认就有了多个域名的证书,高版本的LB会自动根据域名自动匹配证书的。

LB参数参考 https://gitlab.oye.io/oyenet/marathon-lb/blob/master/Longhelp.md

感谢您的支持!