2015-05-21 20 views
5

Chúng tôi hiện đang thử nghiệm để chuyển từ Wildfly 8.2.0 sang Wildfly 9.0.0.CR1 (hoặc CR2 được tạo từ ảnh chụp nhanh). Hệ thống này là một cụm bằng cách sử dụng mod_cluster và đang chạy trên VPS những gì trong thực tế ngăn chặn nó bằng cách sử dụng multicast.Wildfly 9 - mod_cluster trên TCP

On 8.2.0 chúng tôi đã được sử dụng các cấu hình sau đây của modcluster hoạt động tốt:

 <mod-cluster-config proxy-list="1.2.3.4:10001,1.2.3.5:10001" advertise="false" connector="ajp"> 
      <dynamic-load-provider> 
       <load-metric type="cpu"/> 
      </dynamic-load-provider> 
     </mod-cluster-config> 

Thật không may, trên 9.0.0 proxy-danh sách đã bị phản đối và sự bắt đầu của máy chủ sẽ kết thúc với một lỗi. Có một sự thiếu hụt tài liệu khủng khiếp, tuy nhiên sau một vài lần thử, tôi đã phát hiện ra rằng danh sách proxy đã được thay thế bằng proxy là danh sách các ràng buộc đi-ổ cắm. Do đó, cấu hình trông giống như sau:

 <mod-cluster-config proxies="mc-prox1 mc-prox2" advertise="false" connector="ajp"> 
      <dynamic-load-provider> 
       <load-metric type="cpu"/> 
      </dynamic-load-provider> 
     </mod-cluster-config> 

Và sau đây nên được bổ sung vào các ổ cắm ràng buộc nhóm thích hợp (full-ha trong trường hợp của tôi):

<outbound-socket-binding name="mc-prox1"> 
     <remote-destination host="1.2.3.4" port="10001"/> 
    </outbound-socket-binding> 
    <outbound-socket-binding name="mc-prox2"> 
     <remote-destination host="1.2.3.5" port="10001"/> 
    </outbound-socket-binding> 

Cho đến nay rất tốt . Sau đó, cụm httpd bắt đầu đăng ký các nút. Tuy nhiên tôi nhận được lỗi từ cân bằng tải. Khi tôi nhìn vào/mod_cluster-manager, tôi thấy một vài Node REMOVED dòng và cũng có nhiều nhiều lỗi như:

ERROR [org.jboss.modcluster] (UndertowEventHandlerAdapter - 1) MODCLUSTER000042: Error MEM sending STATUS command to node1/1.2.3.4:10001, configuration will be reset: MEM: Can't read node 

Trong nhật ký của mod_cluster có những lời cảnh báo tương đương:

manager_handler STATUS error: MEM: Can't read node

Theo tôi hiểu, vấn đề là mặc dù wildfly/modcluster có thể kết nối với httpd/mod_cluster, nó không hoạt động theo cách khác. Thật không may, ngay cả sau một nỗ lực rộng lớn, tôi đang bị mắc kẹt.

Ai đó có thể trợ giúp thiết lập mod_cluster cho Wildfly 9.0.0 mà không cần quảng cáo? Cảm ơn rất nhiều.

Trả lời

2

Sau một vài tuần, tôi đã quay lại vấn đề và tìm ra giải pháp. Vấn đề là - tất nhiên - trong cấu hình và không có gì chung với phiên bản đặc biệt của Wildfly. Chế độ cụ thể:

Có ba nút trong miền và ba máy chủ trong mỗi nút. Tất cả các nút đã được khởi chạy với thuộc tính sau:

-Djboss.node.name=nodeX 

... trong đó nodeX là tên của một nút cụ thể. Tuy nhiên, điều đó có nghĩa là cả ba máy chủ trong nút đều có cùng tên, đó chính xác là điều gây nhầm lẫn cho cân bằng tải. Ngay sau khi tôi xóa thuộc tính này, mọi thứ bắt đầu hoạt động.

+0

tôi đang thiết lập cluster cho JBoss EAP 7 ở chế độ độc lập. Tôi đang sử dụng Apache HTTPD 2.4.23 mod_cluster làm cân bằng tải. Tôi đã làm theo các bước theo hướng dẫn cấu hình mũ đỏ nhưng tôi không thể đăng nhập vào ứng dụng của mình. Tôi tự hỏi liệu nó là vấn đề phiên dính trong JBoss EAP 7 hoặc tôi đã bỏ lỡ một bước. Tôi đang chia sẻ liên kết tới câu hỏi: [link] (http://stackoverflow.com/questions/43454068/load-balancing-cluster-not-working-with-apache-http-server-2-4-6-and -jboss-eap-7) –

2

Không cần bất kỳ nỗ lực không cần thiết hoặc bất tiện nào về cấu hình proxy tĩnh. Mỗi bản phân phối WildFly đi kèm với các bảng xsd mô tả cấu hình hệ thống con xml. Ví dụ, với WildFly 9x, đó là:

WILDFLY_DIRECTORY/docs/schema/jboss-as-mod-cluster_2_0.xsd 

Nó nói:

<xs:attribute name="proxies" use="optional"> 
    <xs:annotation> 
    <xs:documentation>List of proxies for mod_cluster to register with defined by outbound-socket-binding in socket-binding-group.</xs:documentation> 
    </xs:annotation> 
    <xs:simpleType> 
    <xs:list itemType="xs:string"/> 
    </xs:simpleType> 
</xs:attribute> 

Các thiết lập sau công trình ra khỏi hộp

  1. Tải wildfly-9.0.0.CR1.zip hoặc xây dựng với ./build.sh from sources
  2. Giả bạn có 2 hộp, Apache HTTP Server với mod_cluster hoạt động như một proxy cân bằng tải và máy chủ WildFly của bạn hoạt động như một công nhân. Đảm bảo máy chủ botch có thể truy cập vào nhau trên cả hai MCMP đã bật địa chỉ và cổng của VirtualHost (Apache HTTP Server side) và trên WildFly AJP và bên kết nối HTTP. Sai lầm phổ biến là binf WildFLy đến localhost; sau đó nó báo cáo addess của nó là localhost cho Apache HTTP Server nằm trên một hộp dofferent, điều này khiến nó không thể liên lạc với máy chủ WildFly. Giao tiếp là hai chiều.
  3. Đây là cấu hình của tôi khác với mặc định wildfly-9.0.0.CR1.zip.

328c328
< <mod-cluster-config advertise-socket="modcluster" connector="ajp" advertise="false" proxies="my-proxy-one">
---
> <mod-cluster-config advertise-socket="modcluster" connector="ajp">
384c384
< <subsystem xmlns="urn:jboss:domain:undertow:2.0" instance-id="worker-1">
---
> <subsystem xmlns="urn:jboss:domain:undertow:2.0">
435c435
< <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:102}">
---
> <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
452,454d451
< <outbound-socket-binding name="my-proxy-one">
< <remote-destination host="10.10.2.4" port="6666"/>
< </outbound-socket-binding>
456c453
< </server>
---
> </server>

Thay đổi giải thích

  • proxies="my-proxy-one", tên ràng buộc ổ cắm ra; có thể nhiều hơn ở đây.
  • instance-id="worker-1", tên của nhân viên, a.k.a. JVMRoute.
  • bù đắp - bạn có thể bỏ qua, nó chỉ dành cho thiết lập thử nghiệm của tôi. Bù đắp không áp dụng cho các ràng buộc ổ cắm ngoài.
  • <outbound-socket-binding name="my-proxy-one"> - IP và cổng của VirtualHost trong Máy chủ HTTP Apache chứa chỉ thị EnableMCPMReceive.

Kết luận

Nói chung, các MEM đọc/nút thông báo lỗi có liên quan đến vấn đề về mạng, ví dụ WildFly có thể liên lạc với Apache, nhưng Apache không thể liên lạc lại với WildFly. Cuối cùng nhưng không kém phần quan trọng, có thể xảy ra cấu hình của Máy chủ HTTP HTTP sử dụng chỉ thị PersistSlots và một số thay đổi đáng kể về môi trường đã xảy ra, ví dụ: chuyển từ mpm_prefork sang mpm_worker. Trong trường hợp này, các thông báo lỗi MEM Read không được thực hiện với WildFly, nhưng đối với các tệp slotmem được lưu trong bộ nhớ cache trong HTTPD/cache/mod_custer cần được xóa. Tôi chắc chắn đó là mạng trong trường hợp của bạn.

2

Tôi đã gặp sự cố với Node Removed. tôi quản lý để giải quyết nó bằng cách sử dụng sau khi dụ-id

<subsystem xmlns="urn:jboss:domain:undertow:2.0" instance-id="${jboss.server.name}"> 

Tôi hy vọng điều này sẽ giúp người khác;)