-
Notifications
You must be signed in to change notification settings - Fork 2
/
upyun.slide
173 lines (93 loc) · 3.48 KB
/
upyun.slide
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
容器调度框架 Upone 介绍
10 Aug 2017
黄励博
平台开发部
* Upone 使用介绍
* http 服务
.code -edit upyun/http.go /START OMIT/,/END OMIT/
.play upyun/http.go /fmt.Printf/
[[http://10.0.0.193:3100/ui][Upone]]
* Let's kill it
测试 upone 的失败恢复功能
.image upyun/kill_it.gif _ 800
* 准备工作
* 告警
各个服务可以在创建任务的时候指定自己的 slack channel
当任务出现异常时, 发送实时通知
.image upone/slack.png _ 700
[[https://upyun-alert.slack.com/messages/C6MGAMK3Q/][slack]]
* Kill it
.code -edit upyun/kill_http.go /START OMIT/,/END OMIT/
.play upyun/kill_http.go /fmt.Println/,/fmt.Println/
[[http://10.0.0.193:3100/ui][Upone]]
[[https://upyun-alert.slack.com/messages/C6MGAMK3Q/][slack]]
* Test http
.code -edit upyun/http.go /START OMIT/,/END OMIT/
.play upyun/http.go /fmt.Printf/
* tcp 服务
.code -edit upyun/tcp.go /START OMIT/,/END OMIT/
.play upyun/tcp.go /fmt.Println/
[[http://10.0.0.193:3100/ui][Upone]]
* Let's kill it again
.image upyun/kill_it.gif _ 800
* Kill it
.code -edit upyun/kill_tcp.go /START OMIT/,/END OMIT/
.play upyun/kill_tcp.go /fmt.Println/,/fmt.Println/
[[http://10.0.0.193:3100/ui][Upone]]
[[https://upyun-alert.slack.com/messages/C6MGAMK3Q/][slack]]
* Test tcp
.code -edit upyun/tcp.go /START OMIT/,/END OMIT/
.play upyun/tcp.go /fmt.Println/
* 进一步
如果服务不需要对外提供访问, 那么到这里已经提供了一个完整的部署方案
但刚刚介绍的两种对外服务, 它们部署在集群的哪台机器, 占用哪个端口是不确定的
那么服务的访问者如何接入?
* 代理
基于 *ngx_lua* 的动态负载均衡方案: *Slardar*
.image upone/slardar.png _ 1000
* 例子
# 应用开发的 docker 集群代理
# @see http://gitlab.widget-inc.com/consumers/upone-cli/wikis/zones#dev
upstream upone.dev {
server 192.168.13.182:8089 max_fails=2 fail_timeout=30s;
server 192.168.13.183:8089 max_fails=2 fail_timeout=30s;
server 192.168.13.184:8089 max_fails=2 fail_timeout=30s;
keepalive 60;
}
* http 代理服务
.code -edit upyun/http_slardar.go /START OMIT/,/END OMIT/
.play upyun/http_slardar.go /fmt.Printf/
[[http://10.0.0.193:3100/ui][Upone]]
[[http://10.0.0.193:1995/status][Slardar]]
* tcp 代理服务
.code -edit upyun/tcp_slardar.go /START OMIT/,/END OMIT/
.play upyun/tcp_slardar.go /fmt.Println/
[[http://10.0.0.193:3100/ui][Upone]]
[[http://10.0.0.193:1995/status][Slardar]]
* Upone 原理简介
* Mesos
.image upone/mesos-logo.png _ 800
.caption Image credit: [[http://mesos.apache.org/][mesos.apache.org]]
官方称之为分布式系统内核, 它把数据中心的 CPU、内存、磁盘等抽象成一个资源池
[[http://192.168.14.126:5050/#/][Mesos]]
* 处理流程
.image upone/mesos-seq-diagram.png _ 800
.caption Image credit: [[https://dcos.io/docs/1.7/overview/architecture/][dcos architecture]]
[[http://192.168.14.126:5050/#/][Mesos]]
* Raft
通过 *Raft* 分布式一致性协议实现高可用
.image upone/raft-leader.png
[[https://raft.github.io/raftscope/index.html][RaftScope]]
* 配置与服务发现
.image upone/consul.png _ 600
- 推荐: 服务配置统一管理
- upone 动态加载配置
- 注册服务
[[http://10.0.5.108:8500][Consul]]
* 环境变量
.code -edit upyun/env.go /START OMIT/,/END OMIT/
.play upyun/env.go /fmt.Println/
* Upone 定时任务
.image upone/crontab.jpg _ 600
[[http://upone.s.upyun.com][Upone]]
[[http://192.168.14.126:5050/#/][Mesos]]