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啟動完成。