wildfly mysql

Kubernetes上使用Vagrant的Java EE 7和WildFly(技术提示#71)介绍了如何在使用Kubernetes和Docker托管的WildFly上运行琐碎的Java EE 7应用程序。 Java EE 7应用程序是在世界范围内交付的动手实验室 。 它使用与WildFly捆绑在一起的内存数据库,并允许了解Kubernetes的关键构建块。 这是使您开始进行初始开发工作的好方法,但是由于在应用程序服务器关闭时数据库丢失,因此很快成为瓶颈。 该技术提示将展示如何运行另一个普通的Java EE 7应用程序,以及如何使用MySQL作为数据库服务器。 它将使用Kubernetes Services解释如何轻松地将MySQL和WildFly分离。

让我们开始吧!

确保按照Kubernetes中使用Vagrant的说明进行工作的Kubernetes设置。

该博客中使用的完整源代码可在github.com/arun-gupta/kubernetes-java-sample中找到 。

启动MySQL Kubernetes pod

第一步是启动MySQL pod。 这可以通过使用MySQL Kubernetes配置文件启动:

kubernetes> ./cluster/kubectl.sh create -f ../kubernetes-java-sample/mysql.json
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path=/Users/arungupta/.kubernetes_vagrant_auth create -f ../kubernetes-java-sample/mysql.json
mysql

使用的配置文件位于github.com/arun-gupta/kubernetes-java-sample/blob/master/mysql.json 。

检查MySQL pod的状态:

kubernetes> ./cluster/kubectl.sh get pods
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path=/Users/arungupta/.kubernetes_vagrant_auth get pods
POD                 IP                  CONTAINER(S)        IMAGE(S)            HOST                    LABELS              STATUS
mysql               10.246.1.3          mysql               mysql:latest        10.245.1.3/10.245.1.3   name=mysql          Pending

等待状态更改为“正在运行”。 它看起来像:

KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path=/Users/arungupta/.kubernetes_vagrant_auth get pods
POD                 IP                  CONTAINER(S)        IMAGE(S)            HOST                    LABELS              STATUS
mysql               10.246.1.3          mysql               mysql:latest        10.245.1.3/10.245.1.3   name=mysql          Running

MySQL服务器处于这种状态需要几分钟,所以请喝杯咖啡或快速喝一口米勒!

启动MySQL Kubernetes服务

Pod和分配给它们的IP地址都是短暂的。 如果某个Pod死了,那么Kubernetes将由于其自愈功能而重新创建该Pod,但是它可能会在其他主机上重新创建它。 即使它在同一主机上,也可以为其分配不同的IP地址。 因此,任何应用程序都不能依赖容器的IP地址。

Kubernetes 服务是一种抽象,定义了一组逻辑上的Pod。 服务通常由一个或多个物理Pod(使用标签关联)进行后端管理,并且它具有可被其他Pod /应用程序使用的永久IP地址。 例如,WildFly容器不能直接连接到MySQL容器,但是可以连接到MySQL服务。 本质上,Kubernetes服务为客户端提供了一个IP和端口对,当访问它们时,它们将重定向到适当的后端。

让我们启动MySQL服务。

kubernetes> ./cluster/kubectl.sh create -f ../kubernetes-java-sample/mysql-service.json
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path=/Users/arungupta/.kubernetes_vagrant_auth create -f ../kubernetes-java-sample/mysql-service.json
mysql

使用的配置文件位于github.com/arun-gupta/kubernetes-java-sample/blob/master/mysql-service.json 。 在这种情况下,仅启动一个MySQL实例。 但是可以轻松启动多个MySQL实例,WildFly Pod将继续使用MySQL Service引用所有实例。

检查MySQL服务的状态/ IP:

kubernetes> ./cluster/kubectl.sh get services
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path=/Users/arungupta/.kubernetes_vagrant_auth get services
NAME                LABELS                                    SELECTOR            IP                  PORT
kubernetes          component=apiserver,provider=kubernetes   <none>              10.247.0.2          443
kubernetes-ro       component=apiserver,provider=kubernetes   <none>              10.247.0.1          80
mysql               name=mysql                                name=mysql          10.247.202.104      3306
skydns              k8s-app=skydns                            k8s-app=skydns      10.247.0.10         53

启动WildFly Kubernetes Pod

必须在MySQL服务启动后启动WildFly Pod。 这是因为用于在WildFly中创建JDBC资源的环境变量仅在服务启动并运行后才可用。 具体来说,JDBC资源创建为:

data-source add --name=mysqlDS --driver-name=mysql --jndi-name=java:jboss/datasources/ExampleMySQLDS --connection-url=jdbc:mysql://$MYSQL_SERVICE_HOST:$MYSQL_SERVICE_PORT/sample?useUnicode=true&characterEncoding=UTF-8 --user-name=mysql --password=mysql --use-ccm=false --max-pool-size=25 --blocking-timeout-wait-millis=5000 --enabled=true

$MYSQL_SERVICE_HOST$MYSQL_SERVICE_PORT环境变量由Kubernetes填充,如此处所述 。

这在github.com/arun-gupta/docker-images/blob/master/wildfly-mysql-javaee7/customization/execute.sh#L44中显示 。

启动WildFly pod:

kubernetes> ./cluster/kubectl.sh create -f ../kubernetes-java-sample/wildfly.json
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path=/Users/arungupta/.kubernetes_vagrant_auth create -f ../kubernetes-java-sample/wildfly.json
wildfly

使用的配置文件位于github.com/arun-gupta/kubernetes-java-sample/blob/master/wildfly.json中 。

检查吊舱的状态:

KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path=/Users/arungupta/.kubernetes_vagrant_auth get pods
POD                 IP                  CONTAINER(S)        IMAGE(S)                                 HOST                    LABELS              STATUS
mysql               10.246.1.3          mysql               mysql:latest                             10.245.1.3/10.245.1.3   name=mysql          Running
wildfly             10.246.1.4          wildfly             arungupta/wildfly-mysql-javaee7:knetes   10.245.1.3/10.245.1.3   name=wildfly        Pending

等待,直到WildFly pod的状态更改为“正在运行”。 这可能需要几分钟的时间,因此可能是时候再抓紧另一个miler了!

容器启动并运行后,您可以检查WildFly容器中的/opt/jboss/wildfly/standalone/configuration/standalone.xml并验证连接URL确实包含正确的IP地址。 这是在我的机器上的外观:

[jboss@wildfly ~]$ grep 3306 /opt/jboss/wildfly/standalone/configuration/standalone.xml <connection-url>jdbc:mysql://10.247.202.104:3306/sample?useUnicode=true&amp;characterEncoding=UTF-8</connection-url>

更新状态(在容器运行之后)如下所示:

kubernetes> ./cluster/kubectl.sh get pods
KUBE_MASTER_IP: 10.245.1.2
Running: ./cluster/../cluster/vagrant/../../_output/dockerized/bin/darwin/amd64/kubectl --auth-path=/Users/arungupta/.kubernetes_vagrant_auth get pods
POD                 IP                  CONTAINER(S)        IMAGE(S)                                 HOST                    LABELS              STATUS
mysql               10.246.1.3          mysql               mysql:latest                             10.245.1.3/10.245.1.3   name=mysql          Running
wildfly             10.246.1.4          wildfly             arungupta/wildfly-mysql-javaee7:knetes   10.245.1.3/10.245.1.3   name=wildfly        Running

访问Java EE 7应用程序

记下WildFly容器的HOST IP地址,并按以下方式访问应用程序:

curl http://10.245.1.3:8080/employees/resources/employees

看到的输出为:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><collection><employee><id>1</id><name>Penny</name></employee><employee><id>2</id><name>Sheldon</name></employee><employee><id>3</id><name>Amy</name></employee><employee><id>4</id><name>Leonard</name></employee><employee><id>5</id><name>Bernadette</name></employee><employee><id>6</id><name>Raj</name></employee><employee><id>7</id><name>Howard</name></employee><employee><id>8</id><name>Priya</name></employee></collection>

或在浏览器中查看为:

调试Kubernetes和Docker

登录Minion-1 VM:

kubernetes> vagrant ssh minion-1
Last login: Tue Feb 10 23:20:13 2015 from 10.0.2.2

以root身份登录:

[vagrant@kubernetes-minion-1 ~]$ su -
Password:
[root@kubernetes-minion-1 ~]#

Vagrant创建的VM映像的默认根密码为“ vagrant”。

在此VM上运行的Docker容器列表可以看成是:

[root@kubernetes-minion-1 ~]# docker ps
CONTAINER ID        IMAGE                                    COMMAND                CREATED             STATUS              PORTS                                            NAMES
7fc1fca102bf        arungupta/wildfly-mysql-javaee7:knetes   "/opt/jboss/wildfly/   28 minutes ago      Up 28 minutes                                                        k8s_wildfly.6c5f240e_wildfly.default.api_1230e74a-b178-11e4-8464-0800279696e1_509268aa
4aa49c0ebb70        kubernetes/pause:go                      "/pause"               43 minutes ago      Up 43 minutes       0.0.0.0:8080->8080/tcp, 0.0.0.0:9090->9090/tcp   k8s_POD.bca60d1a_wildfly.default.api_1230e74a-b178-11e4-8464-0800279696e1_0bff6efa
c36e99cd4557        mysql:latest                             "/entrypoint.sh mysq   47 minutes ago      Up 47 minutes                                                        k8s_mysql.278e3c40_mysql.default.api_f3d07101-b175-11e4-8464-0800279696e1_ddbcaf62
ed4611b5c276        google/cadvisor:0.8.0                    "/usr/bin/cadvisor"    56 minutes ago      Up 56 minutes                                                        k8s_cadvisor.8d424740_cadvisor-agent.file-6bb810db-kubernetes-minion-1.file_80331227d28e618b4cef459507a31796_36d83f7d
50a3428612f0        kubernetes/pause:go                      "/pause"               58 minutes ago      Up 58 minutes       0.0.0.0:3306->3306/tcp                           k8s_POD.c783ea16_mysql.default.api_f3d07101-b175-11e4-8464-0800279696e1_e46a8424
11a95eeda794        kubernetes/pause:go                      "/pause"               59 minutes ago      Up 59 minutes       0.0.0.0:4194->8080/tcp                           k8s_POD.252debe0_cadvisor-agent.file-6bb810db-kubernetes-minion-1.file_80331227d28e618b4cef459507a31796_734d54eb

WildFly日志的最后10行(在访问了几次应用程序之后)可以看成是:

23:12:25,004 INFO  [stdout] (ServerService Thread Pool -- 50) Hibernate: INSERT INTO EMPLOYEE_SCHEMA(ID, NAME) VALUES (8, 'Priya')
23:12:27,928 INFO  [org.jboss.resteasy.spi.ResteasyDeployment] (MSC service thread 1-5) Deploying javax.ws.rs.core.Application: class org.javaee7.samples.employees.MyApplication
23:12:27,987 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-5) JBAS017534: Registered web context: /employees
23:12:28,073 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed "employees.war" (runtime-name : "employees.war")
23:12:28,203 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015961: Http management interface listening on http://127.0.0.1:9990/management
23:12:28,203 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
23:12:28,204 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final "Tweek" started in 26772ms - Started 280 of 334 services (92 services are lazy, passive or on-demand)
23:23:16,091 INFO  [stdout] (default task-16) Hibernate: select employee0_.id as id1_0_, employee0_.name as name2_0_ from EMPLOYEE_SCHEMA employee0_
23:24:07,322 INFO  [stdout] (default task-17) Hibernate: select employee0_.id as id1_0_, employee0_.name as name2_0_ from EMPLOYEE_SCHEMA employee0_
23:35:07,030 INFO  [stdout] (default task-18) Hibernate: select employee0_.id as id1_0_, employee0_.name as name2_0_ from EMPLOYEE_SCHEMA employee0_

同样,MySQL日志被视为:

2015-02-10 22:52:55 1 [Note] Server hostname (bind-address): '*'; port: 3306
2015-02-10 22:52:55 1 [Note] IPv6 is available.
2015-02-10 22:52:55 1 [Note]   - '::' resolves to '::';
2015-02-10 22:52:55 1 [Note] Server socket created on IP: '::'.
2015-02-10 22:52:56 1 [Note] Event Scheduler: Loaded 0 events
2015-02-10 22:52:56 1 [Note] Execution of init_file '/tmp/mysql-first-time.sql' started.
2015-02-10 22:52:56 1 [Note] Execution of init_file '/tmp/mysql-first-time.sql' ended.
2015-02-10 22:52:56 1 [Note] mysqld: ready for connections.
Version: '5.6.23'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
2015-02-10 23:12:21 1 [Warning] IP address '10.246.1.1' could not be resolved: Name or service not known

请享用!

翻译自: https://www.javacodegeeks.com/2015/02/mysql-kubernetes-service-access-wildfly-pod.html

wildfly mysql

wildfly mysql_MySQL作为Kubernetes服务,可从WildFly Pod访问相关推荐

  1. MySQL作为Kubernetes服务,可从WildFly Pod访问

    Kubernetes上使用Vagrant的Java EE 7和WildFly(技术提示#71)介绍了如何在使用Kubernetes和Docker托管的WildFly上运行琐碎的Java EE 7应用程 ...

  2. jconsole_我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问

    jconsole 与以前的版本相比,JBoss AS7的目标之一是使其在默认情况下更加安全. 受此目标直接影响的领域之一是,您不再期望服务器在端口上公开某些服务并无需任何身份验证/授权就可以访问它. ...

  3. jconsole 使用_我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问

    jconsole 使用 与以前的版本相比,JBoss AS7的目标之一是使其在默认情况下更加安全. 受此目标直接影响的领域之一是,您不再期望服务器在端口上公开某些服务,而无需任何身份验证/授权即可访问 ...

  4. 我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问

    与以前的版本相比,JBoss AS7的目标之一是使其在默认情况下更加安全. 受此目标直接影响的领域之一是,您不再期望服务器在端口上公开某些服务,而无需任何身份验证/授权就可以访问它. 请记住,在以前的 ...

  5. 微软发布多项Azure Kubernetes服务更新,增加GPU支持

    微软宣布对他们托管的Azure Kubernetes服务进行多项更新.更新公告中包括AKS虚拟节点的特性更新.对Azure容器实例的GPU支持以及将Virtual Kubelet项目捐赠给原生云计算基 ...

  6. mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南

    4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...

  7. 阿里云Kubernetes服务 - Service Broker快速入门指南

    4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...

  8. 配置kubernetes服务basic auth

    由于一些内部服务访问并不需要鉴权,如kubernetes-dashboard.traefik-ui,所以当我们想通过外网域名访问的时候会有安全问题.这里我们可以为服务配置basic auth,访问时需 ...

  9. 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践

    介绍 本文的目的是:通过使用 DockerHub 和 Azure Kubernetes Service (AKS) 将之前 使用 .NET 和 Docker 构建的微服务 部署到微软 Azure 云上 ...

最新文章

  1. windows node.js 安装
  2. 阿里发布图计算平台GraphScope,即将向全社会开源
  3. struts2异常ognl.MethodFailedException: Method setId failed for object
  4. 中国十大名画,你知道几幅?(附高清全图)
  5. tensorflow 加载bert_用NodeJS/TensorFlowJS调用BERT实现文本分类
  6. 物联网和工业互联网场景下的边缘计算
  7. Linux命令之乐--iconv
  8. win系统常用的运行命令
  9. C# 正则表达式大全
  10. AVX2指令集浮点乘法性能分析
  11. 绿幕抠图支持网页、PPT背景类型
  12. 曙光服务器怎么进入bios_怎么进入bios,教您怎么进入bios
  13. UDP重传,似牛非马。。。
  14. 数组旋转(上下对称,主对角线对称)
  15. 智能家居论文文献_智能家居文献综述范文
  16. 超好看的导航页面(静态页面)
  17. 机器学习——神经网络、深度学习 知识点总结 及 面试题汇总
  18. Phonics 自然拼读法 g, o, u, l, f, b Teacher:Lamb
  19. 国外计算机图书月旦评
  20. tailWindCSS

热门文章

  1. P2114-[NOI2014]起床困难综合症【位运算】
  2. POJ1330-Nearest Common Ancestors【tarjan,LCA】
  3. P4062 [Code+#1]Yazid 的新生舞会(区间绝对众数+分治/树状数组维护高维前缀和)
  4. Codeforces Round #665 (Div. 2)
  5. 【AC自动机】AC自动机(二次加强版)(luogu 5357)
  6. NOI2021模拟测试赛 解题报告
  7. Codeforces 1176F
  8. 开发人员也要懂点的测试知识
  9. Oracle入门(十三A2)之单行函数
  10. 阿里巴巴对Java编程【OOP规约】的规约