1. 程式人生 > >SpringXD分散式模式部署

SpringXD分散式模式部署

Spring XD有兩種執行模式:單機和分散式模式。這裡關注分散式模式的部署和執行時特點。

分散式叢集元件

Spring XD分散式環境包含以下元件:

  • Admin 管理節點。管理Stream和Job的配置和釋出,提供REST介面等。
  • Container 執行流式任何和批量任務的節點,部署在獨立的主機上。
  • Zookeeper 管理XD叢集的執行時環境
  • Spring Batch Job 資料庫,儲存Spring Batch需要的資料資訊。
  • 訊息中介軟體 - XD支援Rabbit MQ和Redis做流式處理和任務處理是的訊息載體。Kafka目前僅可用於流式處理。
  • 分析倉庫 - XD使用Redis來儲存統計分析資料。

部署

安裝JDK

Spring XD基於Java編寫,需要JDK 7以上的執行時環境。具體部署略。

下載解壓Spring XD 1.3.1-RELEASE

當前最近版為1.3.1,下載並解壓。

wget http://repo.spring.io/libs-release/org/springframework/xd/spring-xd/1.3.1.RELEASE/spring-xd-1.3.1.RELEASE-dist.zip
tar
unzip spring-xd-1.3.1.RELEASE-dist.zip -d /data

配置關係型資料庫

上面提到XD依賴於一個關係型資料庫來作為其底層依賴的Spring Batch的支撐庫。這麼我們使用MySQL,部署MySQL的過程不再贅述,重點關注XD中關於db的配置部分。

修改xd/config/servers.yml配置檔案中,spring:datasource中MySQL樣例部分。同時,需要將mysql jdbc驅動的jar包放置到lib資料夾下

#Config for use with MySQL - uncomment and edit with relevant values for your environment
spring:
  datasource:
    url: jdbc:mysql://10.200.48.:3306/xd
    username: yourUsername
    password: yourPassword
    driverClassName
: com.mysql.jdbc.Driver validationQuery: select 1

配置spring:batch,啟用資料庫初始化

spring:
  batch:
# Configure other Spring Batch repository values.  Most are typically not needed
#    isolationLevel: ISOLATION_READ_COMMITTED
#    clobType:
#    dbType:
#    maxVarcharLength: 2500
#    tablePrefix: BATCH_
#    validateTransactionState: true
    initializer:
       enabled: true

配置Zookeeper

Spring XD相容 3.4.6版本的zookeeper。 如果沒有部署zookeeper你需要先部署zookeeper,因為spring XD沒有內嵌Zookeeper,在筆者是實驗環境中,有事前部署好的zookeeper例項。因此此處主要配置spring xd跟zookeeper的連線等資訊即可。同樣修改server.yml

# Zookeeper properties
# namespace is the path under the root where XD's top level nodes will be created
# client connect string: host1:port1,host2:port2,...,hostN:portN
zk:
  namespace: xd
  client:
     connect: 10.200.48.66:2181,10.200.48.67:2181,10.200.48.68:2181

配置Kafka

Spring XD訊息傳遞需要載體,根據文件可選擇redis、rabbitMQ和kafka。不過kafka僅支援實時資料處理。不過筆者還是決定直接使用叢集中已有的kafka作為訊息中介軟體,因為也想順便弄清楚到底哪裡使用了這些訊息載體。配置kafka:

xd:
  transport: kafka
  messagebus:
   kafka:
      brokers:                                 10.200.48.69:9092,10.200.48.70:9092,10.200.48.71:9092
      zkAddress:                               10.200.48.66:2181,10.200.48.67:2181,10.200.48.68:2181

配置Redis

雖然我們不適用Redis做訊息傳遞的載體,但是Spring XD還需要使用Redis來儲存分析資料。雖然Spring XD在其安裝包中附帶了Redis的安裝包,不過我們還是考慮使用獨立部署的Redis服務:

spring:
  redis:
   port: 6379
   host: 10.200.48.126

啟動Spring XD admin

在admin節點,執行

xd/bin/xd-admin

在container節點,執行命令

xd/bin/xd-container

啟動服務。 web-ui預設埠為9393。 例如:http://10.200.48.123:9393/admin-ui

至此,springxd啟動完成。