这篇文章详细描述了如何使用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上执行以下命令:
$ docker swarm init --advertise-addr 192.168.1.166
群已初始化当前节点(dxn1zf6l61qsb1josjja83ngz)现在是管理员。
要将工作程序添加到该工作组,请运行以下命令
docker swarm加入\
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.1.166:2377
要将管理器添加到该群,请运行“ docker swarm join-token manager”并按照说明进行操作。
2.3添加工作节点 福州小程序开发
根据init命令的通知消息添加Swarm worker节点。分别在192.168.1.167和192.168.1.168上执行以下命令。
docker swarm加入\
--token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
192.168.1.166:2377
2.4验证集群
码头节点ls
ID HOSTNAME状态可用性管理器状态引擎版本
h0az2wzqetpwhl9ybu76yxaen * KF2-DATA-166就绪主动可达18.06.1-ce
q6jripaolxsl7xqv3cmv5pxji KF2-DATA-167 Ready Active Leader 18.06.1-ce
h1iql1uvm7123h3gon9so69dy KF2-DATA-168准备就绪18.06.1-ce
2.5配置Docker堆栈
vi docker-stack.yml
如下配置Docker Stack:
版本'3.6'
服务项目
metad0
图片 vesoft / nebula-metad 每晚
env_file
./nebula.env
命令
meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
local_ip = 192.168.1.166
ws_ip = 192.168.1.166
端口= 45500
data_path = / data / meta
log_dir = /日志
v = 0
minloglevel = 2
部署
复制品1
restart_policy
条件失效
刊登位置
限制条件
node.hostname == KF2-DATA-166
健康检查
测试“ CMD” “ curl” “ -f” “ http://192.168.1.166:11000/status”
间隔 30秒
超时 10秒
重试3
start_period 20秒
端口
目标11000
出版时间11000
协议 tcp
模式主机
目标11002
出版时间11002
协议 tcp
模式主机
目标45500
出版时间45500
协议 tcp
模式主机
卷数
数据metad0:/数据/元
日志- metad0:/日志
网络
星云网
metad1
图片 vesoft / nebula-metad 每晚
env_file
./nebula.env
命令
meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
local_ip = 192.168.1.167
ws_ip = 192.168.1.167
端口= 45500
data_path = / data / meta
log_dir = /日志
v = 0
minloglevel = 2
部署
复制品1
restart_policy
条件失效
刊登位置
限制条件
node.hostname == KF2-DATA-167
健康检查
测试“ CMD” “ curl” “ -f” “ http://192.168.1.167:11000/status”
间隔 30秒
超时 10秒
重试3
start_period 20秒
端口
目标11000
出版时间11000
协议 tcp
模式主机
目标11002
出版时间11002
协议 tcp
模式主机
目标45500
出版时间45500
协议 tcp
模式主机
卷数
数据metad1:/数据/元
日志- metad1:/日志
网络
星云网
metad2
图片 vesoft / nebula-metad 每晚
env_file
./nebula.env
命令
meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
local_ip = 192.168.1.168
ws_ip = 192.168.1.168
端口= 45500
data_path = / data / meta
log_dir = /日志
v = 0
minloglevel = 2
部署
复制品1
restart_policy
条件失效
刊登位置
限制条件
node.hostname == KF2-DATA-168
健康检查
测试“ CMD” “ curl” “ -f” “ http://192.168.1.168:11000/status”
间隔 30秒
超时 10秒
重试3
start_period 20秒
端口
目标11000
出版时间11000
协议 tcp
模式主机
目标11002
出版时间11002
协议 tcp
模式主机
目标45500
出版时间45500
协议 tcp
模式主机
卷数
数据metad2:/数据/元
日志- metad2:/日志
网络
星云网
storaged0
图像 vesoft /星云存储每晚
env_file
./nebula.env
命令
meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
local_ip = 192.168.1.166
ws_ip = 192.168.1.166
端口= 44500
data_path = /数据/存储
log_dir = /日志
v = 0
minloglevel = 2
部署
复制品1
restart_policy
条件失效
刊登位置
限制条件
node.hostname == KF2-DATA-166
取决于
metad0
metad1
metad2
健康检查
测试“ CMD” “ curl” “ -f” “ http://192.168.1.166:12000/status”
间隔 30秒
超时 10秒
重试3
start_period 20秒
端口
目标12000
出版时间12000
协议 tcp
模式主机
目标2002年
出版时间12002
协议 tcp
模式主机
卷数
数据存储0:/数据/存储
日志存储0:/日志
网络
星云网
storaged1
图像 vesoft /星云存储每晚
env_file
./nebula.env
命令
meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
local_ip = 192.168.1.167
ws_ip = 192.168.1.167
端口= 44500
data_path = /数据/存储
log_dir = /日志
v = 0
minloglevel = 2
部署
复制品1
restart_policy
条件失效
刊登位置
限制条件
node.hostname == KF2-DATA-167
取决于
metad0
metad1
metad2
健康检查
测试“ CMD” “ curl” “ -f” “ http://192.168.1.167:12000/status”
间隔 30秒
超时 10秒
重试3
start_period 20秒
端口
目标12000
出版时间12000
协议 tcp
模式主机
目标2002年
出版时间12004
协议 tcp
模式主机
卷数
数据存储1:/数据/存储
日志存储1:/日志
网络
星云网
storaged2
图像 vesoft /星云存储每晚
env_file
./nebula.env
命令
meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
local_ip = 192.168.1.168
ws_ip = 192.168.1.168
端口= 44500
data_path = /数据/存储
log_dir = /日志
v = 0
minloglevel = 2
部署
复制品1
restart_policy
条件失效
刊登位置
限制条件
node.hostname == KF2-DATA-168
取决于
metad0
metad1
metad2
健康检查
测试“ CMD” “ curl” “ -f” “ http://192.168.1.168:12000/status”
间隔 30秒
超时 10秒
重试3
start_period 20秒
端口
目标12000
出版时间12000
协议 tcp
模式主机
目标2002年
出版时间12006
协议 tcp
模式主机
卷数
数据存储2:/数据/存储
日志存储2:/ logs
网络
星云网
graphd1
图像 vesoft /星云图每晚
env_file
./nebula.env
命令
meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
port = 3699
ws_ip = 192.168.1.166
log_dir = /日志
v = 0
minloglevel = 2
部署
复制品1
restart_policy
条件失效
刊登位置
限制条件
node.hostname == KF2-DATA-166
取决于
metad0
metad1
metad2
健康检查
测试“ CMD” “ curl” “ -f” “ http://192.168.1.166:13000/status”
间隔 30秒
超时 10秒
重试3
start_period 20秒
端口
目标3699
出版3699
协议 tcp
模式主机
目标13000
出版时间13000
协议 tcp
#模式:主机
目标13002
出版时间13002
协议 tcp
模式主机
卷数
日志记录:/ logs
网络
星云网
graphd2
图像 vesoft /星云图每晚
env_file
./nebula.env
命令
meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
port = 3699
ws_ip = 192.168.1.167
log_dir = /日志
v = 2
minloglevel = 2
部署
复制品1
restart_policy
条件失效
刊登位置
限制条件
node.hostname == KF2-DATA-167
取决于
metad0
metad1
metad2
健康检查
测试“ CMD” “ curl” “ -f” “ http://192.168.1.167:13001/status”
间隔 30秒
超时 10秒
重试3
start_period 20秒
端口
目标3699
出版时间3640
协议 tcp
模式主机
目标13000
出版时间13001
协议 tcp
模式主机
目标13002
出版时间13003
协议 tcp
#模式:主机
卷数
原木图2:/原木
网络
星云网
graphd3
图像 vesoft /星云图每晚
env_file
./nebula.env
命令
meta_server_addrs = 192.168.1.166:45500,192.168.1.167:45500,192.168.1.168:45500
port = 3699
ws_ip = 192.168.1.168
log_dir = /日志
v = 0
minloglevel = 2
部署
复制品1
restart_policy
条件失效
刊登位置
限制条件
node.hostname == KF2-DATA-168
取决于
metad0
metad1
metad2
健康检查
测试“ CMD” “ curl” “ -f” “ http://192.168.1.168:13002/status”
间隔 30秒
超时 10秒
重试3
start_period 20秒
端口
目标3699
出版3641
协议 tcp
模式主机
目标13000
出版时间13002
协议 tcp
#模式:主机
目标13002
出版时间13004
协议 tcp
模式主机
卷数
原木图3:/原木
网络
星云网
网络
星云网
外部真
可附加的true
名称主机
卷数
data-metad0
logs-metad0
data-metad1
logs-metad1
data-metad2
logs-metad2
数据存储0
日志存储0
数据存储1
日志存储1
数据存储2
日志存储2
原木图
原木图2
原木图3
通过添加以下项目来编辑nebula.env文件:
TZ = UTC
USER =根
2.6启动星云图集群
docker stack部署星云-c docker-stack.yml
集群配置以实现负载平衡和高可用性
Nebula Graph客户端(1.X)当前不提供负载平衡功能。他们随机选择任何图形来连接数据库。因此,如果要在生产中使用Nebula Graph,则需要自行配置负载平衡和高可用性。
从上图可以看出,整个部署可以分为三层,即数据层,负载平衡层和高可用性层。
负载平衡层负责将请求从客户端分发到数据层,以实现负载平衡。
HA层由HAProxy实现,可确保负载平衡服务正常运行,从而使整个群集正常运行。
3.1负载均衡配置
HAProxy使用Docker compose进行配置。分别编辑以下三个文件:
1. Dockerfile
来自haproxy:1.7
复制haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
展览3640
2. docker-compose.yml
版本“ 3.2”
服务项目
haproxy
container_name haproxy
建立。
卷数
./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
端口
3640:3640
重新启动始终
网络
app_net
网络
app_net
外部真
3. haproxy.cfg
全球
守护程序
麦克斯康30000
记录127.0.0.1 local0信息
记录127.0.0.1 local1警告
默认值
日志格式%hr \%ST \%B \%Ts
全局登录
模式http
选项http-keep-alive
超时连接5000ms
超时客户端10000ms
超时服务器50000ms
超时http请求20000ms
#自定义自己的前端&&后端&&监听会议
#CUSTOM
听图集群
绑定*:3640
模式tcp
麦克斯康300
平衡轮循
服务器server1 192.168.1.166:3699 maxconn 300检查
服务器server2 192.168.1.167:3699 maxconn 300检查
服务器server3 192.168.1.168:3699 maxconn 300检查
听统计
绑定*:1080
统计刷新30秒
统计uri / stats
3.2启动HAProxy
docker-compose up -d
3.3高可用性配置
请按照192.168.1.166、192.168.1.167和192.168.1.168上的配置步骤进行操作。
1.安装Keepalived
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上配置
global_defs
router_id lb01#一个标识符;
vrrp_script chk_haproxy
脚本“ killall -0 haproxy” 间隔2
vrrp_instance VI_1
州主
界面ens160
virtual_router_id 52
优先999
#设置MASTER和BACKUP负载均衡器之间进行同步检查的时间间隔(以秒为单位)。
advert_int 1
#配置认证方式和密码
验证
#配置认证类型,主要为PASS和AH
auth_type通过
#设置认证密码,MASTER和BACKUP负载均衡器必须在同一vrrp_instance中使用相同的密码才能正常通信。
auth_pass琥珀色1
virtual_ipaddress
#虚拟IP为192.168.1.99/24; 有界接口为ens160;MASTER和BACKUP负载平衡器的别名为ens160:1
192.168.1.99/24 dev ens160标签ens160:1
track_script
chk_haproxy
2)在192.168.1.167上进行配置
global_defs
router_id lb01#一个标识符;
vrrp_script chk_haproxy
脚本“ killall -0 haproxy” 间隔2
vrrp_instance VI_1
状态备份
界面ens160
virtual_router_id 52
优先888
#设置MASTER和BACKUP负载均衡器之间进行同步检查的时间间隔(以秒为单位)。
advert_int 1
#配置认证方式和密码
验证
#配置认证类型,主要为PASS和AH
auth_type通过
#设置认证密码,MASTER和BACKUP负载均衡器必须在同一vrrp_instance中使用相同的密码才能正常通信。
auth_pass琥珀色1
virtual_ipaddress
#虚拟IP为192.168.1.99/24; 有界接口为ens160;MASTER和BACKUP负载平衡器的别名为ens160:1
192.168.1.99/24 dev ens160标签ens160:1
track_script
chk_haproxy
3)在192.168.1.168上进行配置
global_defs
router_id lb01#一个标识符;
vrrp_script chk_haproxy
脚本“ killall -0 haproxy” 间隔2
vrrp_instance VI_1
状态备份
界面ens160
virtual_router_id 52
优先777
#设置MASTER和BACKUP负载均衡器之间进行同步检查的时间间隔(以秒为单位)。
advert_int 1
#配置认证方式和密码
验证
#配置认证类型,主要为PASS和AH
auth_type通过
#设置认证密码,MASTER和BACKUP负载均衡器必须在同一vrrp_instance中使用相同的密码才能正常通信。
auth_pass琥珀色1
virtual_ipaddress
#虚拟IP为192.168.1.99/24; 有界接口为ens160;MASTER和BACKUP负载平衡器的别名为ens160:1
192.168.1.99/24 dev ens160标签ens160:1
track_script
chk_haproxy
Keepalived中使用的相关命令:
#启动Keepalived
systemctl启动keepalived
#自动启动Keepalived
systemctl启用keeplived
#重新启动Keepalived
systemctl重新启动keepalived
脱机部署群集
如何使用Docker Swarm离线部署Nebula Graph集群?答案很简单。将Docker映像更改为私有映像存储库即可。
如果您对部署自己的集群有任何疑问,请在下面留下评论,让我知道!