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下的仓库,从远程仓库下载的构件会保存在这个仓库,下一次就直接从本地仓库读取,这是三个仓库里最先查找的一个,只能配置一个。
在实际操作中,出现了插件包缓存到~/.m2的默认本地仓库,导致无法更新插件包的问题:
解决办法:1)手动删除缓存的jar包
2)jar包更新,同步更新版本号
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
cluster:feature-uninstall default xx
查看组的feature:
cluster:feature-list default
cluster:feature-list default |grep xxx
向组添加/移除feature-repo:
cluster:feature-repo-add default mvn:com.demo/karaf_demo_feature/1.0.0/xml
cluster:feature-repo-remove default mvn:com.demo/karaf_demo_feature/1.0.0/xml
注:1)在karaf安装一些feature时,自动下载的配置文件可能并不正确,导致使
用相关功能的时候报错,注意检查相应的配置文件。
2)在手动更新feature-repo时,先uninstall旧的feature, 移除repo, 再添加repo,install新的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开机自启动。