使用 Docker Stack 部署多服务集群

使用 Docker Stack 部署多服务集群,第1张

单机模式下,我们可以使用 Docker Compose 来编排多个服务,而在 上一篇文章 中介绍的 Docker Swarm 只能实现对单个服务的简单部署。于是就引出了本文的主角 Docker Stack ,通过 Docker Stack 我们只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排。

注意:如果有多个 manager 节点,portainer 和 visualizer 可能分别部署在两台机器上,所以ip可能会不一样。

评论区有小伙伴提到,容器间通过服务名 ( 比如文中的 nginx ) 通讯时,对应的 IP 却和容器的实际 IP 对不上。出现这个情况是因为负载均衡( 对外表现为一个服务,内部为多个服务 )。下面是我做的试验,希望能帮助大家理解。

总结下:

整个请求的调用流程应该就是: 通过服务名 nginx 访问 -- 指向 --> stack 集群网关 ( 10.0.6.5 ) -- 转发 --> stack 集群中,位于当前服务器的负载均衡实例 ( 10.0.6.4 ) -- 分发 --> 最终的应用

把jdk安装到 /home/trs/ 目录下,这里是 /home/trs/jdk1.7.0_79

在文件开头增加:

而后执行

使之生效即可。

海贝需要安装在已安装了zookeeper的服务器上,参见 zookeeper集群部署 ,首先部署服务器(10.11.2.3):

a. 解压安装包

b. 把安装包拷贝到解压出来的海贝目录的media目录中作为自动部署的介质:

c. 启动海贝单节点

d. 自动部署其他节点

使用浏览器登录海贝,海贝地址为: http://ip:5555 默认账号:admin/trsadmin,首次登录后会提示修改密码

【菜单】-【节点管理】-【自动部署】

f. 启动海贝集群

理论上讲是可以通过启动每个节点来启动海贝集群的,但是亲测这样启动有时候会有各种乱七八糟的同步问题,所以建议使用统一启动的方式,即执行:

关于此脚本的具体信息参见后面的【批量自动更新】内容。

启动成功后,可以在海贝的节点管理中看到状态:

具体为:

a. 配置无密码登录

安装expect: # yum -y install expect

bin/nodes 存放IP地址列表,一行一个IP

b. 批量更新

更新文件(lib webpages trshybase-*.jar)的存放位置update目录(将更新包TRSHybase-server-update-****.tar.gz解压缩到update目录即可)

确保bin/nodes(或者在conf/nodes)里面有所有服务器的列表(一行一个)

执行 sbin/update_all.sh ,会自动执行批量关闭/更新/批量启动。

通过以上信息可知,其实这个 update_all.sh 的脚本,是可以实现全库批量关闭和启动的,因此只要update目录中不放文件,执行该脚本,就可以实现批量关闭/启动海贝集群

当然,修改该脚本,把update相关的内容删除,改造一个专门的启停脚本也可以。

a. Hybase节点对内存有较大的需求,因此建议用户使用多核、大内存的服务器(标配32G,推荐128G)

b. 集群在部署以后,应当修改conf/hybase-env.sh,增加Hybase可用的内存

c. 分配规则可以参考:留50%给操作系统,其余都给Hybase进程

例如32G内存,留16G给操作系统,16G给hybase。那么需要修改conf/hybase-env.sh,找到HYBASE_OPTS配置项,修改成:


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/279633.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存