使用Docker Swarm快速部署星云图集群 福州小程序开发

使用Docker Swarm快速部署星云图集群 福州小程序开发

时间:2020-10-1 作者:gykj

这篇文章详细描述了如何使用Docker Swarm部署Nebula Graph集群。

部署星云图集群

2.1环境准备

如下准备主机。

IP 内存(GB) CPU(内核数)
192.168.1.166 16 4
192.168.1.167 16 4
192.168.1.168 16 4

请确保已在所有机器上安装Docker。

2.2初始化Swarm集群

在主机192.168.1.166上执行以下命令:

YAML

 

1个
$ docker swarm init --advertise-addr 192.168.1.166
2
群已初始化当前节点(dxn1zf6l61qsb1josjja83ngz)现在是管理员。
3
要将工作程序添加到该工作组,请运行以下命令
4
 docker swarm加入\
5
 --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
6
 192.168.1.166:2377
7

8
要将管理器添加到该群,请运行“ docker swarm join-token manager”并按照说明进行操作。

2.3添加工作节点 福州小程序开发

根据init命令的通知消息添加Swarm worker节点。分别在192.168.1.167和192.168.1.168上执行以下命令。

YAML

 


1个
docker swarm加入\
2
 --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
3
 192.168.1.166:2377

2.4验证集群

YAML

 


1个
码头节点ls
2

3
ID HOSTNAME状态可用性管理器状态引擎版本
4
h0az2wzqetpwhl9ybu76yxaen * KF2-DATA-166就绪主动可达18.06.1-ce
5
q6jripaolxsl7xqv3cmv5pxji KF2-DATA-167 Ready Active Leader 18.06.1-ce
6
h1iql1uvm7123h3gon9so69dy KF2-DATA-168准备就绪18.06.1-ce

2.5配置Docker堆栈

YAML

 


1个
vi docker-stack.yml

如下配置Docker Stack:

YAML

 


1个
版本'3.6'
2
服务项目
3
  metad0 
4
    图片 vesoft / nebula-metad 每晚
5
    env_file 
6
      - ./nebula.env
7
    命令
8
      --- meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
9
      --- local_ip = 192.168.1.166
10
      --- ws_ip = 192.168.1.166
11
      --端口= 45500
12
      --- data_path = / data / meta
13
      --- log_dir = /日志
14
      --- v = 0
15
      --- minloglevel = 2
16
    部署
17
      复制品1
18
      restart_policy 
19
        条件失效
20
      刊登位置
21
        限制条件
22
          - node.hostname == KF2-DATA-166
23
    健康检查
24
      测试:[ “ CMD”  “ curl”  “ -f”  “ http://192.168.1.166:11000/status” ]
25
      间隔 30秒
26
      超时 10秒
27
      重试3
28
      start_period  20
29
    端口
30
      -目标11000
31
        出版时间11000
32
        协议 tcp
33
        模式主机
34
      -目标11002
35
        出版时间11002
36
        协议 tcp
37
        模式主机
38
      -目标45500
39
        出版时间45500
40
        协议 tcp
41
        模式主机
42
    卷数
43
      -数据metad0:/数据/元
44
      -日志- metad0:/日志
45
    网络
46
      -星云网
47

48
  metad1 
49
    图片 vesoft / nebula-metad 每晚
50
    env_file 
51
      - ./nebula.env
52
    命令
53
      --- meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
54
      --- local_ip = 192.168.1.167
55
      --- ws_ip = 192.168.1.167
56
      --端口= 45500
57
      --- data_path = / data / meta
58
      --- log_dir = /日志
59
      --- v = 0
60
      --- minloglevel = 2
61
    部署
62
      复制品1
63
      restart_policy 
64
        条件失效
65
      刊登位置
66
        限制条件
67
          - node.hostname == KF2-DATA-167
68
    健康检查
69
      测试:[ “ CMD”  “ curl”  “ -f”  “ http://192.168.1.167:11000/status” ]
70
      间隔 30秒
71
      超时 10秒
72
      重试3
73
      start_period  20
74
    端口
75
      -目标11000
76
        出版时间11000
77
        协议 tcp
78
        模式主机
79
      -目标11002
80
        出版时间11002
81
        协议 tcp
82
        模式主机
83
      -目标45500
84
        出版时间45500
85
        协议 tcp
86
        模式主机
87
    卷数
88
      -数据metad1:/数据/元
89
      -日志- metad1:/日志
90
    网络
91
      -星云网
92

93
  metad2 
94
    图片 vesoft / nebula-metad 每晚
95
    env_file 
96
      - ./nebula.env
97
    命令
98
      --- meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
99
      --- local_ip = 192.168.1.168
100
      --- ws_ip = 192.168.1.168
101
      --端口= 45500
102
      --- data_path = / data / meta
103
      --- log_dir = /日志
104
      --- v = 0
105
      --- minloglevel = 2
106
    部署
107
      复制品1
108
      restart_policy 
109
        条件失效
110
      刊登位置
111
        限制条件
112
          - node.hostname == KF2-DATA-168
113
    健康检查
114
      测试:[ “ CMD”  “ curl”  “ -f”  “ http://192.168.1.168:11000/status” ]
115
      间隔 30秒
116
      超时 10秒
117
      重试3
118
      start_period  20
119
    端口
120
      -目标11000
121
        出版时间11000
122
        协议 tcp
123
        模式主机
124
      -目标11002
125
        出版时间11002
126
        协议 tcp
127
        模式主机
128
      -目标45500
129
        出版时间45500
130
        协议 tcp
131
        模式主机
132
    卷数
133
      -数据metad2:/数据/元
134
      -日志- metad2:/日志
135
    网络
136
      -星云网
137

138
  storaged0 
139
    图像 vesoft /星云存储每晚
140
    env_file 
141
      - ./nebula.env
142
    命令
143
      --- meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
144
      --- local_ip = 192.168.1.166
145
      --- ws_ip = 192.168.1.166
146
      --端口= 44500
147
      --- data_path = /数据/存储
148
      --- log_dir = /日志
149
      --- v = 0
150
      --- minloglevel = 2
151
    部署
152
      复制品1
153
      restart_policy 
154
        条件失效
155
      刊登位置
156
        限制条件
157
          - node.hostname == KF2-DATA-166
158
    取决于
159
      - metad0
160
      - metad1
161
      - metad2
162
    健康检查
163
      测试:[ “ CMD”  “ curl”  “ -f”  “ http://192.168.1.166:12000/status” ]
164
      间隔 30秒
165
      超时 10秒
166
      重试3
167
      start_period  20
168
    端口
169
      -目标12000
170
        出版时间12000
171
        协议 tcp
172
        模式主机
173
      -目标:1 2002年
174
        出版时间12002
175
        协议 tcp
176
        模式主机
177
    卷数
178
      -数据存储0:/数据/存储
179
      -日志存储0:/日志
180
    网络
181
      -星云网
182
  storaged1 
183
    图像 vesoft /星云存储每晚
184
    env_file 
185
      - ./nebula.env
186
    命令
187
      --- meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
188
      --- local_ip = 192.168.1.167
189
      --- ws_ip = 192.168.1.167
190
      --端口= 44500
191
      --- data_path = /数据/存储
192
      --- log_dir = /日志
193
      --- v = 0
194
      --- minloglevel = 2
195
    部署
196
      复制品1
197
      restart_policy 
198
        条件失效
199
      刊登位置
200
        限制条件
201
          - node.hostname == KF2-DATA-167
202
    取决于
203
      - metad0
204
      - metad1
205
      - metad2
206
    健康检查
207
      测试:[ “ CMD”  “ curl”  “ -f”  “ http://192.168.1.167:12000/status” ]
208
      间隔 30秒
209
      超时 10秒
210
      重试3
211
      start_period  20
212
    端口
213
      -目标12000
214
        出版时间12000
215
        协议 tcp
216
        模式主机
217
      -目标:1 2002年
218
        出版时间12004
219
        协议 tcp
220
        模式主机
221
    卷数
222
      -数据存储1:/数据/存储
223
      -日志存储1:/日志
224
    网络
225
      -星云网
226

227
  storaged2 
228
    图像 vesoft /星云存储每晚
229
    env_file 
230
      - ./nebula.env
231
    命令
232
      --- meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
233
      --- local_ip = 192.168.1.168
234
      --- ws_ip = 192.168.1.168
235
      --端口= 44500
236
      --- data_path = /数据/存储
237
      --- log_dir = /日志
238
      --- v = 0
239
      --- minloglevel = 2
240
    部署
241
      复制品1
242
      restart_policy 
243
        条件失效
244
      刊登位置
245
        限制条件
246
          - node.hostname == KF2-DATA-168
247
    取决于
248
      - metad0
249
      - metad1
250
      - metad2
251
    健康检查
252
      测试:[ “ CMD”  “ curl”  “ -f”  “ http://192.168.1.168:12000/status” ]
253
      间隔 30秒
254
      超时 10秒
255
      重试3
256
      start_period  20
257
    端口
258
      -目标12000
259
        出版时间12000
260
        协议 tcp
261
        模式主机
262
      -目标:1 2002年
263
        出版时间12006
264
        协议 tcp
265
        模式主机
266
    卷数
267
      -数据存储2:/数据/存储
268
      -日志存储2:/ logs
269
    网络
270
      -星云网
271
  graphd1 
272
    图像 vesoft /星云图每晚
273
    env_file 
274
      - ./nebula.env
275
    命令
276
      --- meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
277
      --- port = 3699
278
      --- ws_ip = 192.168.1.166
279
      --- log_dir = /日志
280
      --- v = 0
281
      --- minloglevel = 2
282
    部署
283
      复制品1
284
      restart_policy 
285
        条件失效
286
      刊登位置
287
        限制条件
288
          - node.hostname == KF2-DATA-166
289
    取决于
290
      - metad0
291
      - metad1
292
      - metad2
293
    健康检查
294
      测试:[ “ CMD”  “ curl”  “ -f”  “ http://192.168.1.166:13000/status” ]
295
      间隔 30秒
296
      超时 10秒
297
      重试3
298
      start_period  20
299
    端口
300
      -目标3699
301
        出版日期:3699
302
        协议 tcp
303
        模式主机
304
      -目标13000
305
        出版时间13000
306
        协议 tcp
307
#模式:主机
308
      -目标13002
309
        出版时间13002
310
        协议 tcp
311
        模式主机
312
    卷数
313
      -日志记录:/ logs
314
    网络
315
      -星云网
316

317
  graphd2 
318
    图像 vesoft /星云图每晚
319
    env_file 
320
      - ./nebula.env
321
    命令
322
      --- meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
323
      --- port = 3699
324
      --- ws_ip = 192.168.1.167
325
      --- log_dir = /日志
326
      --- v = 2
327
      --- minloglevel = 2
328
    部署
329
      复制品1
330
      restart_policy 
331
        条件失效
332
      刊登位置
333
        限制条件
334
          - node.hostname == KF2-DATA-167
335
    取决于
336
      - metad0
337
      - metad1
338
      - metad2
339
    健康检查
340
      测试:[ “ CMD”  “ curl”  “ -f”  “ http://192.168.1.167:13001/status” ]
341
      间隔 30秒
342
      超时 10秒
343
      重试3
344
      start_period  20
345
    端口
346
      -目标3699
347
        出版时间3640
348
        协议 tcp
349
        模式主机
350
      -目标13000
351
        出版时间13001
352
        协议 tcp
353
        模式主机
354
      -目标13002
355
        出版时间13003
356
        协议 tcp
357
#模式:主机
358
    卷数
359
      -原木图2:/原木
360
    网络
361
      -星云网
362
  graphd3 
363
    图像 vesoft /星云图每晚
364
    env_file 
365
      - ./nebula.env
366
    命令
367
      --- meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
368
      --- port = 3699
369
      --- ws_ip = 192.168.1.168
370
      --- log_dir = /日志
371
      --- v = 0
372
      --- minloglevel = 2
373
    部署
374
      复制品1
375
      restart_policy 
376
        条件失效
377
      刊登位置
378
        限制条件
379
          - node.hostname == KF2-DATA-168
380
    取决于
381
      - metad0
382
      - metad1
383
      - metad2
384
    健康检查
385
      测试:[ “ CMD”  “ curl”  “ -f”  “ http://192.168.1.168:13002/status” ]
386
      间隔 30秒
387
      超时 10秒
388
      重试3
389
      start_period  20
390
    端口
391
      -目标3699
392
        出版日期:3641
393
        协议 tcp
394
        模式主机
395
      -目标13000
396
        出版时间13002
397
        协议 tcp
398
#模式:主机
399
      -目标13002
400
        出版时间13004
401
        协议 tcp
402
        模式主机
403
    卷数
404
      -原木图3:/原木
405
    网络
406
      -星云网
407
网络
408
  星云网
409
    外部
410
    可附加的true
411
    名称主机
412
卷数
413
  data-metad0 
414
  logs-metad0 
415
  data-metad1 
416
  logs-metad1 
417
  data-metad2 
418
  logs-metad2 
419
  数据存储0 
420
  日志存储0 
421
  数据存储1 
422
  日志存储1 
423
  数据存储2 
424
  日志存储2 
425
  原木图
426
  原木图2 
427
  原木图3 

通过添加以下项目来编辑nebula.env文件:

YAML

 


1个
TZ = UTC
2
USER =根

2.6启动星云图集群

YAML

 


1个
docker stack部署星云-c docker-stack.yml

集群配置以实现负载平衡和高可用性

Nebula Graph客户端(1.X)当前不提供负载平衡功能。他们随机选择任何图形来连接数据库。因此,如果要在生产中使用Nebula Graph,则需要自行配置负载平衡和高可用性。

使用Docker Swarm快速部署星云图集群 福州小程序开发

从上图可以看出,整个部署可以分为三层,即数据层,负载平衡层和高可用性层。
负载平衡层负责将请求从客户端分发到数据层,以实现负载平衡。
HA层由HAProxy实现,可确保负载平衡服务正常运行,从而使整个群集正常运行。

3.1负载均衡配置

HAProxy使用Docker compose进行配置。分别编辑以下三个文件:

1. Dockerfile

YAML

 


1个
来自haproxy:1.7
2
复制haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
3
展览3640

2. docker-compose.yml

YAML

 


1个
版本“ 3.2”
2
服务项目
3
  haproxy 
4
    container_name  haproxy
5
    建立
6
    卷数
7
      - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
8
    端口
9
      - 3640:3640
10
    重新启动始终
11
    网络
12
      - app_net
13
网络
14
  app_net 
15
    外部
16

3. haproxy.cfg

YAML

 


1个
全球
2
    守护程序
3
    麦克斯康30000
4
    记录127.0.0.1 local0信息
5
    记录127.0.0.1 local1警告
6

7
默认值
8
    日志格式%hr \%ST \%B \%Ts
9
    全局登录
10
    模式http
11
    选项http-keep-alive
12
    超时连接5000ms
13
    超时客户端10000ms
14
    超时服务器50000ms
15
    超时http请求20000ms
16

17
#自定义自己的前端&&后端&&监听会议
18
#CUSTOM
19

20
听图集群
21
    绑定*:3640
22
    模式tcp
23
    麦克斯康300
24
    平衡轮循
25
    服务器server1 192.168.1.166:3699 maxconn 300检查
26
    服务器server2 192.168.1.167:3699 maxconn 300检查
27
    服务器server3 192.168.1.168:3699 maxconn 300检查
28

29
听统计
30
    绑定*:1080
31
    统计刷新30秒
32
    统计uri / stats

3.2启动HAProxy

YAML

 


1个
docker-compose up -d

3.3高可用性配置

请按照192.168.1.166、192.168.1.167和192.168.1.168上的配置步骤进行操作。

1.安装Keepalived

YAML

 


1个
apt-get更新&& apt-get升级&& apt-get安装keepalived -y

2.修改Keepalived的配置文件,即/etc/keepalived/keepalived.conf。请注意,对于这三台主机,应将优先级项设置为不同的值,以便它们之间具有优先级。

注意:请注意,配置Keepalive需要VIP(虚拟IP)。在以下配置中,192.168.1.99是虚拟IP。

1)在192.168.1.166上配置

YAML

 


1个
global_defs {
2
    router_id lb01#一个标识符;
3
}
4
vrrp_script chk_haproxy {
5
    脚本“ killall -0 haproxy”    间隔2
6
}
7
vrrp_instance VI_1 {
8
    州主
9
    界面ens160
10
    virtual_router_id 52
11
    优先999
12
    #设置MASTER和BACKUP负载均衡器之间进行同步检查的时间间隔(以秒为单位)。
13
    advert_int 1
14
    #配置认证方式和密码
15
    验证{
16
    #配置认证类型,主要为PASS和AH
17
        auth_type通过
18
    #设置认证密码,MASTER和BACKUP负载均衡器必须在同一vrrp_instance中使用相同的密码才能正常通信。
19
        auth_pass琥珀色1
20
    }
21
    virtual_ipaddress {
22
        #虚拟IP为192.168.1.99/24; 有界接口为ens160;MASTER和BACKUP负载平衡器的别名为ens160:1
23
        192.168.1.99/24 dev ens160标签ens160:1
24
    }
25
    track_script {
26
        chk_haproxy
27
    }
28
}

2)在192.168.1.167上进行配置

YAML

 


1个
global_defs {
2
    router_id lb01#一个标识符;
3
}
4
vrrp_script chk_haproxy {
5
    脚本“ killall -0 haproxy”    间隔2
6
}
7
vrrp_instance VI_1 {
8
    状态备份
9
    界面ens160
10
    virtual_router_id 52
11
    优先888
12
    #设置MASTER和BACKUP负载均衡器之间进行同步检查的时间间隔(以秒为单位)。
13
    advert_int 1
14
    #配置认证方式和密码
15
    验证{
16
    #配置认证类型,主要为PASS和AH
17
        auth_type通过
18
    #设置认证密码,MASTER和BACKUP负载均衡器必须在同一vrrp_instance中使用相同的密码才能正常通信。
19
        auth_pass琥珀色1
20
    }
21
    virtual_ipaddress {
22
        #虚拟IP为192.168.1.99/24; 有界接口为ens160;MASTER和BACKUP负载平衡器的别名为ens160:1
23
        192.168.1.99/24 dev ens160标签ens160:1
24
    }
25
    track_script {
26
        chk_haproxy
27
    }
28
}

3)在192.168.1.168上进行配置

YAML

 


1个
global_defs {
2
    router_id lb01#一个标识符;
3
}
4
vrrp_script chk_haproxy {
5
    脚本“ killall -0 haproxy”    间隔2
6
}
7
vrrp_instance VI_1 {
8
    状态备份
9
    界面ens160
10
    virtual_router_id 52
11
    优先777
12
    #设置MASTER和BACKUP负载均衡器之间进行同步检查的时间间隔(以秒为单位)。
13
    advert_int 1
14
   #配置认证方式和密码
15
    验证{
16
    #配置认证类型,主要为PASS和AH
17
        auth_type通过
18
    #设置认证密码,MASTER和BACKUP负载均衡器必须在同一vrrp_instance中使用相同的密码才能正常通信。
19
        auth_pass琥珀色1
20
    }
21
    virtual_ipaddress {
22
        #虚拟IP为192.168.1.99/24; 有界接口为ens160;MASTER和BACKUP负载平衡器的别名为ens160:1
23
        192.168.1.99/24 dev ens160标签ens160:1
24
    }
25
    track_script {
26
        chk_haproxy
27
    }
28
}

Keepalived中使用的相关命令:

贝壳

 


1个
#启动Keepalived
2
systemctl启动keepalived
3
#自动启动Keepalived
4
systemctl启用keeplived
5
#重新启动Keepalived
6
systemctl重新启动keepalived

脱机部署群集

如何使用Docker Swarm离线部署Nebula Graph集群?答案很简单。将Docker映像更改为私有映像存储库即可。
如果您对部署自己的集群有任何疑问,请在下面留下评论,让我知道!

版权所有:https://www.eraycloud.com 转载请注明出处