Vertx集群配置

vertx集群配置

1. pom文件中引入vertx-hazelcast jar

<dependency>
    <groupId>io.vertxgroupId>
    <artifactId>vertx-hazelcastartifactId>
    <version>${vertx-version}version>
dependency>

目前是3.3.3版本

2. resources内加入hazelcast的配置文件cluster.xml

默认vertx会去找vertx-hazelcast.jar内的default-cluster.xml
Vertx集群配置_第1张图片
如果需要自定义配置文件,需要将其放在classpath下,并且命名为cluster.xml,即打成fat包后在主目录下面。
Vertx集群配置_第2张图片
eclipse的java项目只需将default-cluster.xml文件copy一份到resources目录内,并修改名字为cluster.xml,打包的时候就会打到classpath的主目录下。
Vertx集群配置_第3张图片

3. cluster.xml配置

hazelcast的集群有3种方式

  1. 广播multicast模式
<multicast enabled="true">
  <multicast-group>224.2.2.3multicast-group>
  <multicast-port>54327multicast-port>
multicast>

如果为true,同一个网段内的vertx实例会自动发现,并集群
2. ip地址tcp-ip模式

<tcp-ip enabled="true">
  <interface>192.168.1.28interface>
  <interface>192.168.1.27interface>
  <interface>192.168.1.26interface>
tcp-ip>

需要把要集群的ip地址列在这里
3. aws亚马逊云集群模式

<aws enabled="false">
  <access-key>my-access-keyaccess-key>
  <secret-key>my-secret-keysecret-key>
  
  <region>us-west-1region>
  
  <host-header>ec2.amazonaws.comhost-header>
  
  <security-group-name>hazelcast-sgsecurity-group-name>
  <tag-key>typetag-key>
  <tag-value>hz-nodestag-value>
aws>

一般采用第二种ip地址tcp-ip模式,将其它模式置为false。整体的cluster.xml文件:


<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.2.xsd"
           xmlns="http://www.hazelcast.com/schema/config"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <properties>
    <property name="hazelcast.mancenter.enabled">falseproperty>
    <property name="hazelcast.memcache.enabled">falseproperty>
    <property name="hazelcast.rest.enabled">falseproperty>
    <property name="hazelcast.wait.seconds.before.join">0property>
  properties>

  <group>
    <name>devname>
    <password>dev-passpassword>
  group>
  <management-center enabled="false">http://localhost:8080/mancentermanagement-center>
  <network>
    <port auto-increment="true" port-count="10000">5701port>
    <outbound-ports>
      
      <ports>0ports>
    outbound-ports>
    <join>
      <multicast enabled="false">
        <multicast-group>224.2.2.3multicast-group>
        <multicast-port>54327multicast-port>
      multicast>
      <tcp-ip enabled="true">
        <interface>192.168.1.28interface>
        <interface>192.168.1.27interface>
        <interface>192.168.1.26interface>
      tcp-ip>
      <aws enabled="false">
        <access-key>my-access-keyaccess-key>
        <secret-key>my-secret-keysecret-key>
        
        <region>us-west-1region>
        
        <host-header>ec2.amazonaws.comhost-header>
        
        <security-group-name>hazelcast-sgsecurity-group-name>
        <tag-key>typetag-key>
        <tag-value>hz-nodestag-value>
      aws>
    join>
    <interfaces enabled="false">
      <interface>10.10.1.*interface>
    interfaces>
    <ssl enabled="false"/>
    <socket-interceptor enabled="false"/>
    <symmetric-encryption enabled="false">
      
      <algorithm>PBEWithMD5AndDESalgorithm>
      
      <salt>thesaltsalt>
      
      <password>thepasspassword>
      
      <iteration-count>19iteration-count>
    symmetric-encryption>
  network>
  <partition-group enabled="false"/>
  <executor-service name="default">
    <pool-size>16pool-size>
    
    <queue-capacity>0queue-capacity>
  executor-service>

  <multimap name="__vertx.subs">

    
    <backup-count>1backup-count>
  multimap>

  <map name="__vertx.haInfo">

    
    <backup-count>1backup-count>
    
    <time-to-live-seconds>0time-to-live-seconds>
    
    <max-idle-seconds>0max-idle-seconds>
    
    <eviction-policy>NONEeviction-policy>
    
    <max-size policy="PER_NODE">0max-size>
    
    <eviction-percentage>25eviction-percentage>
    
    <merge-policy>com.hazelcast.map.merge.LatestUpdateMapMergePolicymerge-policy>

  map>

  
  <semaphore name="__vertx.*">
    <initial-permits>1initial-permits>
  semaphore>

hazelcast>

4. 集群方式运行fat.jar包

java -jar F:\work\i5xwxpro\target\i5xwxpro.jar -cluster

分别在对应的服务器上执行命令即可。

-cluster即是代表集群方式启动

5. nginx负载均衡

    upstream web{
        server 192.168.1.28:8080;
        server 192.168.1.27:8080;
        server 192.168.1.26:8080;
    }

nginx将请求负载到不同的vertx服务器即可

你可能感兴趣的:(Vert.x)