ค้นหาเว็บไซต์

แนวคิดพื้นฐานของ WildFly (JBoss Application Server)


ในสองบทความล่าสุด เราได้ผ่านการติดตั้ง WildFly แล้วจึงจัดการเซิร์ฟเวอร์โดยใช้ GUI เวอร์ชันของ CLI วันนี้เราจะพูดถึงแนวคิดพื้นฐานหรือจะพูดคำศัพท์ที่ใช้ใน WildFly ก็ได้ คุณสามารถอ่านบทความที่เผยแพร่ล่าสุดของเราได้ที่

  1. WildFly – การติดตั้งเซิร์ฟเวอร์แอปพลิเคชัน JBoss ที่ปรับปรุงใหม่
  2. จัดการเซิร์ฟเวอร์ WildFly (JBoss AS) โดยใช้ CLI เวอร์ชัน GUI

ผู้ที่คุ้นเคยกับ Jboss AS อยู่แล้วจะทราบถึงการเปลี่ยนแปลงครั้งใหญ่ที่เกิดขึ้นกับ Jboss AS 7.* และด้วยเหตุนี้ WildFly การเปลี่ยนแปลงคือการออกแบบโมดูลาร์ หมายความว่าจะโหลดคลาสที่แอปพลิเคชันต้องการ แทนที่จะโหลดคลาสทั้งหมด

ด้านล่างนี้คือคำศัพท์พื้นฐานบางส่วนที่ใช้ใน WildFly:

โหมดการเริ่มต้น

Wildfly ได้เปิดตัวโหมดการเริ่มต้นใหม่ มีโหมดการทำงานสองโหมดที่ใช้คือการจัดการการทำงานของเซิร์ฟเวอร์ทั้งหมด

  1. โหมดสแตนด์อโลน
  2. โหมดโดเมน

ทั้งสองโหมดนี้ได้รับการจัดการโดยสคริปต์สองตัวที่แตกต่างกันที่ให้ไว้ในไดเร็กทอรี "bin" ของการติดตั้ง WildFly

[root@tecmint bin]# ll -m1 standalone.sh domain.sh

domain.sh
standalone.sh

โหมดสแตนด์อโลน

ในเวอร์ชันก่อนหน้าของ Jboss AS 7.* เช่น แอปพลิเคชัน Jboss เซิร์ฟเวอร์ 3, 4, 5< หรือ 6 อินสแตนซ์ jboss ที่ทำงานอยู่ทั้งหมดมีกระบวนการเฉพาะของตัวเอง ทุกอินสแตนซ์จะมีคอนโซลผู้ดูแลระบบของตัวเองและฟังก์ชันอื่น ๆ สำหรับการควบคุมสิ่งเดียวกัน

ในทำนองเดียวกันการทำงานของโหมดสแตนด์อโลน เราสามารถเปิดใช้เซิร์ฟเวอร์แบบสแตนด์อโลนได้โดยใช้สคริปต์ “standalone.sh“ และส่งพารามิเตอร์ต่างๆ ตามความต้องการ เราสามารถเปิดใช้อินสแตนซ์ได้มากเท่าที่ต้องการ (ทั้งหมดควรได้รับการกำหนดค่าให้ทำงานบนพอร์ตที่แตกต่างกัน)

นอกจากนี้เรายังสามารถสร้างคลัสเตอร์ HA ที่แตกต่างกันได้เหมือนกับที่เราทำกับเวอร์ชันก่อนหน้า เช่น 4, 5 หรือ 6

การเริ่ม WildFly ในโหมดสแตนด์อโลน

ย้ายไปยังไดเร็กทอรี $JBOSS_HOME/bin และเรียกใช้สคริปต์ standalone.sh จากเทอร์มินัลดังที่แสดงด้านล่าง หากเราไม่ระบุพารามิเตอร์ใดๆ ตามค่าเริ่มต้น พารามิเตอร์จะเชื่อมโยงกับที่อยู่ลูปแบ็คและใช้ไฟล์ standalone.xml

[root@tecmint bin]# ./standalone.sh
ผลลัพธ์ตัวอย่าง
tecmint-VGN-Z13GN bin # ./standalone.sh
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: "/data/wildfly-8.0.0.Final"

  JAVA: java

  JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

=========================================================================

13:25:22,168 INFO  [org.jboss.modules] (main) JBoss Modules version 1.3.0.Final
13:25:22,717 INFO  [org.jboss.msc] (main) JBoss MSC version 1.2.0.Final
13:25:22,818 INFO  [org.jboss.as] (MSC service thread 1-3) JBAS015899: WildFly 8.0.0.Final "WildFly" starting
13:25:24,287 INFO  [org.jboss.as.server] (Controller Boot Thread) JBAS015888: Creating http management service using socket-binding (management-http)
13:25:24,310 INFO  [org.xnio] (MSC service thread 1-1) XNIO version 3.2.0.Final
13:25:24,332 INFO  [org.xnio.nio] (MSC service thread 1-1) XNIO NIO Implementation Version 3.2.0.Final
13:25:24,486 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 33) JBAS010280: Activating Infinispan subsystem.
13:25:24,491 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 28) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
13:25:24,514 INFO  [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 4.0.0.Final
13:25:24,573 INFO  [org.jboss.as.jsf] (ServerService Thread Pool -- 39) JBAS012615: Activated the following JSF Implementations: [main]
13:25:24,575 INFO  [org.jboss.as.connector.logging] (MSC service thread 1-3) JBAS010408: Starting JCA Subsystem (IronJacamar 1.1.3.Final)
13:25:24,587 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) JBAS010417: Started Driver service with driver-name = h2
13:25:24,622 INFO  [org.jboss.as.naming] (ServerService Thread Pool -- 41) JBAS011800: Activating Naming Subsystem
13:25:24,691 INFO  [org.jboss.as.security] (ServerService Thread Pool -- 46) JBAS013171: Activating Security Subsystem
13:25:24,707 INFO  [org.jboss.as.naming] (MSC service thread 1-4) JBAS011802: Starting Naming Service
13:25:24,708 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-3) JBAS015400: Bound mail session [java:jboss/mail/Default]
13:25:24,737 INFO  [org.jboss.as.security] (MSC service thread 1-1) JBAS013170: Current PicketBox version=4.0.20.Final
13:25:24,754 INFO  [org.jboss.as.webservices] (ServerService Thread Pool -- 50) JBAS015537: Activating WebServices Extension
13:25:24,800 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-4) JBAS017502: Undertow 1.0.0.Final starting
13:25:24,800 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 49) JBAS017502: Undertow 1.0.0.Final starting

หมายเหตุ : คุณสามารถใช้ตัวเลือก –b [IP] เพื่อเริ่มต้นเซิร์ฟเวอร์ด้วย IP อื่น และเพื่อโหลดการใช้ไฟล์กำหนดค่าอื่น ๆ -c [ชื่อไฟล์การกำหนดค่า]

โหมดโดเมน

นี่เป็นแนวคิดใหม่ที่ได้รับการแนะนำใน AS-7.* ด้วยคุณลักษณะใหม่นี้ใน WildFly-8 เราสามารถจัดการอินสแตนซ์ต่างๆ ได้จากจุดเดียว สิ่งนี้ช่วยให้เราย่อขนาดลงเหลือเพียงจุดควบคุมเดียว แทนที่จะต้องจัดการเซิร์ฟเวอร์สแตนด์อโลนหลายเครื่อง

เซิร์ฟเวอร์ทั้งหมดที่จัดการโดยโดเมนเรียกว่าสมาชิกของโดเมน สมาชิกทุกคนในโดเมนสามารถใช้การกำหนดค่า/การปรับใช้งานเดียวกันได้ สิ่งนี้มีประโยชน์มากและเป็นประโยชน์สำหรับสภาพแวดล้อมการทำคลัสเตอร์

ในโหมดโดเมนเราสามารถสร้างกลุ่มเซิร์ฟเวอร์จากนั้นจึงเพิ่มจำนวนเซิร์ฟเวอร์ให้กับกลุ่มนั้นได้ ไม่ว่าเราทำกับกลุ่มเซิร์ฟเวอร์นี้ ทุกอย่างจะถูกจำลองไปยังแต่ละเซิร์ฟเวอร์ในกลุ่มเซิร์ฟเวอร์

การเริ่มต้น WildFly ในโหมดโดเมน

ย้ายไปยังไดเร็กทอรี $JBOSS_HOME/bin และเรียกใช้สคริปต์ domain.sh จากเทอร์มินัลดังที่แสดงด้านล่าง

[root@tecmint bin]# ./domain.sh
ผลลัพธ์ตัวอย่าง
=========================================================================

  JBoss Bootstrap Environment

 JBOSS_HOME: "/data/wildfly-8.0.0.Final"

  JAVA: java

  JAVA_OPTS: -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true

=========================================================================

13:30:33,939 INFO  [org.jboss.modules] (main) JBoss Modules version 1.3.0.Final
13:30:34,077 INFO  [org.jboss.as.process.Host Controller.status] (main) JBAS012017: Starting process 'Host Controller'
[Host Controller] 13:30:34,772 INFO  [org.jboss.modules] (main) JBoss Modules version 1.3.0.Final
[Host Controller] 13:30:34,943 INFO  [org.jboss.msc] (main) JBoss MSC version 1.2.0.Final
[Host Controller] 13:30:34,999 INFO  [org.jboss.as] (MSC service thread 1-4) JBAS015899: WildFly 8.0.0.Final "WildFly" starting
[Host Controller] 13:30:35,689 INFO  [org.xnio] (MSC service thread 1-1) XNIO version 3.2.0.Final
[Host Controller] 13:30:35,692 INFO  [org.jboss.as] (Controller Boot Thread) JBAS010902: Creating http management service using network interface (management) port (9990) securePort (-1)
[Host Controller] 13:30:35,701 INFO  [org.xnio.nio] (MSC service thread 1-1) XNIO NIO Implementation Version 3.2.0.Final
[Host Controller] 13:30:35,747 INFO  [org.jboss.remoting] (MSC service thread 1-1) JBoss Remoting version 4.0.0.Final
[Host Controller] 13:30:35,817 INFO  [org.jboss.as.remoting] (MSC service thread 1-2) JBAS017100: Listening on 127.0.0.1:9999
^C13:30:36,415 INFO  [org.jboss.as.process] (Shutdown thread) JBAS012016: Shutting down process controller
13:30:36,416 INFO  [org.jboss.as.process.Host Controller.status] (Shutdown thread) JBAS012018: Stopping process 'Host Controller'
[Host Controller] 13:30:36,456 INFO  [org.jboss.as] (MSC service thread 1-2) JBAS015950: WildFly 8.0.0.Final "WildFly" stopped in 19ms
[Host Controller] 
13:30:36,476 INFO  [org.jboss.as.process.Host Controller.status] (reaper for Host Controller) JBAS012010: Process 'Host Controller' finished with an exit status of 130
13:30:36,476 INFO  [org.jboss.as.process] (Shutdown thread) JBAS012015: All processes finished; exiting

อีกสิ่งหนึ่งที่คุณจะสังเกตเห็นความแตกต่างระหว่างจำนวนบริการที่เริ่มต้นในแบบสแตนด์อโลน (183 จาก 0f 232) และโหมดโดเมน (207 จาก 255)

ความแตกต่างที่สำคัญที่สุดอีกประการระหว่างโหมด สแตนด์อโลน และ โดเมน คือคำสั่งเริ่มต้นที่ใช้ในสคริปต์เริ่มต้น ในแบบสแตนด์อโลน จุดเริ่มต้นคือ “org.jboss.as.standalone ” ในขณะที่จุดเริ่มต้นในโหมดโดเมนคือ “org.jboss.as.process-controller ” ด้านล่างนี้เป็นรูปภาพที่แสดงความสัมพันธ์เชิงตรรกะระหว่างกระบวนการต่างๆ

ในโหมดโดเมน ขั้นแรกจะเริ่มตัวควบคุมกระบวนการ และสร้างกระบวนการใหม่ที่เรียกว่า ตัวควบคุมโฮสต์ กระบวนการ ตัวควบคุมโฮสต์ นี้จะรับผิดชอบในการจัดการเซิร์ฟเวอร์หลายเครื่องภายในกลุ่มเซิร์ฟเวอร์ที่แตกต่างกัน อีกจุดที่ต้องทราบว่าทุกเซิร์ฟเวอร์จะมีกระบวนการ JVM ของตัวเอง

นั่นคือทั้งหมดสำหรับตอนนี้! ในบทความที่กำลังจะมาถึง เราจะแสดงวิธีต่างๆ ในการใช้งาน WildFly จนกว่าจะคอยติดตามและเชื่อมต่อกับ Tecmint และอย่าลืมให้ข้อเสนอแนะอันมีค่าของคุณในส่วนความคิดเห็นของเราด้านล่าง