karaf版本: apache-karaf-4.2.8.tar.gz
karaf安裝: https://mirror.bit.edu.cn/apache/karaf/documentation/4_x.html#_user_guide
jdk版本: jdk-8u201-linux-x64.tar.gz
三臺虛擬機:
192.xx.xx.40
192.xx.xx.41
192.xx.xx.42
1. karaf部署
1.1 Java環境
(1)上傳jdk-8u201-linux-x64.tar.gz到/usr/local/jdk目錄
進入/usr/local/jdk目錄
# cd /usr/local/jdk
解壓
# tar -zxvf jdk-8u201-linux-x64.tar.gz
(2)設置環境變量
編輯 /etc/profile
# vim /etc/profile
在文檔末尾添加如下配置:
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_201
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
刷新配置
# source /etc/profile
測試配置是否成功:
# java –version
至此,java環境配置完成。
1.2 karaf安裝
40服務器:
1.新建目錄/usr/local/karaf
#mkdir /usr/local/karaf
2.上傳apache-karaf-4.2.8.tar.gz到/usr/local/karaf目錄
3.解壓
# tar –zxvf apache-karaf-4.2.8.tar.gz
# cd apache-karaf-4.2.8
解壓目錄:
bin: 下的文件可以選擇不同的啓動方法
data: karaf運行時一些內容、配置和記錄的輸出方式
data/log: karaf默認的日誌輸出路徑
deploy: 類似tomact的webapp目錄,需要運行的bundle.jar包存入此路徑下,karaf啓動的時候回自動啓動此bundle
etc:karaf的配置文件路徑,karaf所有的配置都在此目錄下
lib: karaf插件依賴的目錄
system: 在karaf中運行的feature和其依賴安裝目錄,卸載feature時會自動刪除
4.進入並查看配置文件
# cd /etc
# ls
org.ops4j.pax.web.cfg 對外提供的http端口,默認是8181
org.apache.karaf.management.cfg 遠程連接karaf,如使用jmx管理karaf,需修改ip地址
org.ops4j.pax.url.mvn.cfg karaf連接的倉庫地址配置
5.修改倉庫配置文件
# vim org.ops4j.pax.url.mvn.cfg
#本地倉庫
org.ops4j.pax.url.mvn.localRepository=/usr/local/maven/maven-repo
#遠程倉庫
org.ops4j.pax.url.mvn.repositories=http://maven.aliyun.com/nexus/content/groups/public/@id=alimaven,\ http://zns.commnet.com.cn:8081/nexus/content/repositories/nbrrmpReleasesRepo/@id=nbrrmpReleasesRepo,\ http://zns.commnet.com.cn:8081/nexus/content/repositories/nbrrmpSnapshotsRepo/@id=nbrrmpSnapshotsRepo
注:
1)org.ops4j.pax.url.mvn.repositories 用來配置遠程倉庫,可以配置多個,用逗號分隔。
2)org.ops4j.pax.url.mvn.defaulRepositories 用來配置只讀的本地倉庫,會在查找遠程倉庫之前查找,可以配置多個,用逗號分隔。
3)org.ops4j.pax.url.mvn.localRepository 用來配置本地倉庫,默認用的是~/.m2下的倉庫,從遠程倉庫下載的構件會保存在這個倉庫,下一次就直接從本地倉庫讀取,這是三個倉庫裏最先查找的一個,只能配置一個。
6.修改遠程jmx管理遠程連接地址
將rmiRegistryHost = 127.0.0.1和rmiServerHost = 127.0.0.1修改爲rmiRegistryHost = 192.xx.xx.40和rmiServerHost = 192.xx.xx.40
注:41,42服務器上配置本機的ip地址。
7.啓動與停止
進入bin目錄
# cd /bin
控制檯啓動
# ./karaf
控制檯關閉
karaf@root()> shutdown –f # karaf控制檯命令
後臺啓動
# ./start
後臺關閉
# ./stop
8.安裝webconsole
karaf@root()> feature:install webconsole
訪問web控制檯http://192.xx.xx.40:8181/system/console,使用karaf用戶名和karaf密碼登錄。
注:在41和42服務器重複上面的部署過程。
2. karaf-cellar集羣部署
2.1 簡介
我們已經完成在每臺服務器上部署了karaf,使用karaf-cellar將各個karaf添加到集羣節點。Karaf-cellar的首要目標是同步幾個Karaf實例(命名節點)的狀態。
cellar能夠同步:
bundles (remote or local)
config
features
cellar節點的發現:
Cellar uses Hazelcast as cluster engine.
When you install the cellar feature, a hazelcast feature is automatically installed, providing the etc/hazelcast.xml configuration file.
當安裝cellar功能後, 會自動安裝hazelcast並生成一個hazelcast.xml配置文件,通過修改配置文件實現集羣節點的發現與相互註冊。
2.2 karaf-cellar安裝
1.安裝cellar
karaf@root()> feature:repo-add cellar 4.1.3
karaf@root()> feature:install cellar
可以看到已經安裝好了cellar的相關bundle。
2.修改hazelcast.xml
# vim hazelcast.xml
<multicast enabled="true">的true 改爲 false
<tcp-ip enabled="false">改爲如下
<tcp-ip enabled="true">
<interface>192.xx.xx.41</interface>
<interface>192.xx.xx.42</interface>
</tcp-ip>
注意:這裏的interface是除本機之外的其他安裝了karaf的服務器地址。
<interfaces enabled="false">改爲如下
<interfaces enabled="true">
<interface>192.xx.xx.40</interface>
</interfaces>
注意:這裏的interface直接填本機ip
同理,在41和42服務器上安裝cellar。
3.啓動karaf集羣
重啓三臺服務器的karaf,使用cluster:node-list命令查看節點。
X表示本機
4.karaf-cellar部分命令
cellar組(默認是default),指定組內節點同步資源,可自己創建
cluster:group-create mygroup
安裝bundle:
cluster:bundle-install default mvn:com.google.code.gson/gson/2.4
啓動:
cluster:bundle-start default xxx
安裝feature
cluster:feature-install default xx
查看組的feature:
cluster:feature-list default
向組添加feature-repo:
cluster:feature-repo-add default mvn:com.demo/karaf_demo_feature/1.0.0/xml
注:在karaf安裝一些feature時,自動下載的配置文件可能並不正確,導致使
用相關功能的時候報錯,注意檢查相應的配置文件。
3. karaf開機自啓動
1.進入/etc/init.d目錄
# cd /etc/init.d
2.編寫服務自啓動腳本
# vim karaf
腳本內容:
#!/bin/bash
#chkconfig:35 95 1
#description:script to start/stop karaf
su - root <<!
case $1 in
start)
sh /usr/local/karaf/apache-karaf-4.2.8/bin/start
;;
stop)
sh /usr/local/karaf/apache-karaf-4.2.8/bin/stop
;;
*)
echo "Usage:$0(start|stop)"
;;
esac
exit
!
3.賦予權限
# chmod 775 karaf
4.添加服務開機自啓動
# chkconfig --add karaf
5.查看karaf服務狀態
# chkconfig --list karaf
注:三臺服務器都添加karaf開機自啓動。