使用Fabric8在OpenShift v3上扩展和平衡WildFly

您是否喜欢使用Fabric8和OpenShift v3进行第一次骑行? 还有更多的东西要来。 在第一个WildFly容器在Kubernetes上启动并运行之后,无需处理其固有的复杂性,我认为现在是时候开始扩展和平衡WildFly了。

先决条件

确保您具有完整的Vagrant,Fabric8,OpenShift v3,Kubernetes环境正在运行。 我在较早的博客文章中介绍了Windows上的安装 ,但是您也可以在Google Container EngineOpenShift v3上进行尝试。

基础

昨天我们要做的是获取本地Java EE 7应用程序,并根据最新的jboss / wildfly:9.0.1.Final image对它进行docker化。 完成之后,我们构建新的myfear / wildfly-test:latest自定义映像,并将其推送到在无业游民映像上运行的docker注册表中。 Fabric8 Maven插件为我们创建了Kubernetes JSON,并为我们将其推出了OpenShift。 所有这些都在一个易于使用的网络控制台的帮助下进行。 这篇文章将重复使用相同的Java EE 7示例 ,您可以从我的github帐户grep。

使用Fabric在OpenShift上扩展Java EE应用程序

Java EE应用程序服务器的最大功能之一就是扩展。 在Kubernetes上运行高负载与过去通常所做的完全不匹配。 使用Kubernetes,您可以根据需要扩展节点和Minions,复制控制器和Pod。 您无需启动新的JVM,而可以启动新的容器实例。 而且,我们了解到,Fabric8是Kubernetes的非常方便的管理工具,因此我们将对应用程序进行一些扩展。

因此,构建您的Java EE 7应用程序的docker映像,并使用以下maven命令将其部署到Fabric8:

mvn clean install docker:build
mvn fabric8:json fabric8:apply

如果成功,则可以通过http://myfear-wildfly-test.vagrant.f8/访问您的应用程序。 HelloWorld Servlet显示主机名和POD ID

Pod-id

无论您现在有多频繁命中刷新,此响应中都不会再有另一个Pod ID。 当然,到目前为止,我们只运行一个实例。 让我们切换到Fabric 8控制台并放大Pod。 切换到“应用程序”标签,然后单击应用程序右下方的绿色小图标。 在叠加层中,将窗格的数量从一更改为三个。

更改副本数

一段时间后,更改会反映在您的控制台中,并且pod在几秒钟内从下载变为绿色:

新荚

让我们回到我们的Web界面,点击几次刷新。 没有什么变化? 发生了什么? 怎么了? 让我稍微介绍一下该体系结构:

整体架构

昨天的博客文章留下了您的疑问吗? 所有部分如何协同工作? 这是给您的更好的概述。 剧透警报:这过度简化了OpenShift架构 。 请自行深入研究细节。 我只想给您一个非常集中的观点,介绍使用Fabric8和OpenShift进行扩展和负载平衡。

建筑

一切都取决于OpenShift路由和各个Pod的管理。 端口由容器公开,并通过服务进行映射。 这从客户端到正在运行的实例都背对背。 HAProxy显然是进行路由的核心组件。 这是一个普通的pod,只有一个例外:它具有一个公共IP地址。 让我们看看,这件事在OpenShift上做了什么,以及它是如何配置的。

HAProxy作为OpenShift上的标准路由器

OpenShift上的默认路由器实现是HAProxy。 它使用基于http-keep-alive的粘性会话。 另外,路由器插件为基础实现提供服务名称和名称空间。 这可以用于更高级的配置,例如实现在一组对等体之间同步的stick-table。

HAProxy路由器公开用于HAProxy统计信息的Web侦听器。 您可以通过访问http://vagrant.f8:1936 /在我们的示例中查看统计信息。 找出管理员密码有点棘手。 此密码和端口是在路由器安装期间配置的,但是可以通过查看容器上的haproxy.conf文件找到。 您需要找出的就是Pod,登录到该Pod,找到配置文件并阅读密码。 我的情况是“ 6AtZV43YUk”。

oc get pods
oc exec -it -p <POD_ID> bash
less haproxy.config

现在,我们发现了这一点,事情变得更加清晰。 一次,我们可以打开到一个实例的连接,在标准配置中不会再次释放该连接。 但是我们可以通过查看统计信息来检查路线是否到位。

羟基

而且,如果您真的想知道它确实有效,则需要使用一些卷发魔术来解决粘性问题。 如果您在Windows上安装了Mysysgit ,则可以在我的存储库中运行小批处理脚本 。 它是一个REST端点,它发出用于服务请求的POD ID:

{"name":"myfear","environment":"sample-web-jruh5"}
{"name":"myfear","environment":"sample-web-jruh5"}
{"name":"myfear","environment":"sample-web-jruh5"}
{"name":"myfear","environment":"sample-web-jruh5"}
{"name":"myfear","environment":"sample-web-jruh5"}
{"name":"myfear","environment":"sample-web-4oxjj"}
{"name":"myfear","environment":"sample-web-jruh5"}
{"name":"myfear","environment":"sample-web-pku0c"}
{"name":"myfear","environment":"sample-web-4oxjj"}
{"name":"myfear","environment":"sample-web-jruh5"}
{"name":"myfear","environment":"sample-web-pku0c"}

前五个请求始终返回相同的POD ID,直到出现新的POD且HAProxy开始调度请求。 如果要影响此行为,可以执行此操作。 只需在OpenShift管理文档中阅读有关路由器管理的更多信息。 这是有关“ oc”命令行界面完整参考 。 如果您需要一些有关如何使用oc客户端查找不同对象和类型的想法,可以在github上的fabric8 / bin文件夹中找到一组完整的批处理脚本

现在是时候深入研究Fabric8的开发人员工具了。 请继续关注下一篇博客文章中的更多详细信息。

翻译自: https://www.javacodegeeks.com/2015/08/scaling-and-load-balancing-wildfly-on-openshift-v3-with-fabric8.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值