wildfly mysql_MySQL作为Kubernetes服务,可从WildFly Pod访问
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 RunningMySQL服務器處于這種狀態需要幾分鐘,所以請喝杯咖啡或快速喝一口米勒!
啟動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&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_734d54ebWildFly日志的最后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访问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 批量删除电脑系统中的文件如何批量删除电脑
- 下一篇: 插件在AE中的重要位置AE插件位置