单机模式下,我们可以使用 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配置项,修改成:
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)