脚本下载地址http://yellowcong.qiniudn.com/activemq-cluster-install.sh,里面是我固定写死的的ip端口好和配置情况,大家可以根据自己的需求进行更改。通过一键安装ActiveMq集群,老爽了。
架构
ActiveMQ架构
节点 | 控制端口 | 管控台端口 | 目录 |
---|---|---|---|
192.168.100.10:62621 | 51511 | 8161 | /usr/local/activemq-cluster/node1 |
192.168.100.10:62622 | 51512 | 8162 | /usr/local/activemq-cluster/node2 |
192.168.100.10:62623 | 51513 | 8163 | /usr/local/activemq-cluster/node3 |
脚本使用
方法1
#下载脚本
wget http://yellowcong.qiniudn.com/activemq-cluster-install.sh
#执行
chmod a+x activemq-cluster.sh
#执行脚本
./activemq-cluster.sh
截图可以查看到脚本赋予权限
方法2
#获取文件,并执行
wget -qO- http://yellowcong.qiniudn.com/activemq-cluster-install.sh | sh
运行结果
原理介绍
通过sed 进行配置文件的修改和添加操作
#创建一个执行脚本
touch active-cluster.sh && chmod a+x active-cluster.sh
#编辑脚本
vim active-cluster.sh
#创建目录
mkdir node4
#下载文件到activemq-cluster 目录
wget http://yellowcong.qiniudn.com/apache-activemq-5.11.1-bin.tar.gz -d /usr/local/activemq-cluster
#解压到node4文件夹
tar -zxvf apache-activemq-5.11.1-bin.tar.gz -C node4/
#修改jetty端口
sed -i 's/8161/testestes/g' node4/apache-activemq-5.11.1/conf/jetty.xml
#修改brokerName
sed -i 's/brokerName="localhost"/brokerName="doubi"/g' node4/apache-activemq-5.11.1/conf/activemq.xml
#修改persistenceAdapter
#删除
sed -i '/kahaDB directory/d' node4/apache-activemq-5.11.1/conf/activemq.xml
#添加数据
sed -i '/<\/persistenceAdapter>/i \
<replicatedLevelDB \
directory="${activemq.data}/leveldb" \
replicas="3" \
bind="tcp://0.0.0.0:62621" \
zkAddress="192.168.100.10:2182,192.168.100.10:2183,192.168.100.10:2184" \
zkPassword="" \
hostname="yellowcong" \
sync="local_disk" \
zkPath="/activemq/leveldb-stores" \
/> \
' node4/apache-activemq-5.11.1/conf/activemq.xml
#上面这段多行替换代码中, 这个 ' 需要单独在一行,才能多行替换的时候 \ 转义为 回车
#修改通信端口51511
sed -i 's#/tcp://0.0.0.0:61616#/tcp://0.0.0.0:51511#' node4/apache-activemq-5.11.1/conf/activemq.xml
单个节点添加
#!/bin/bash
#节点的路径
NODE_PATH=/usr/local/activemq-cluster/node4
#配置文件的路径
NODE_CONF=$NODE_PATH/apache-activemq-5.11.1/conf
#创建节点目录
mkdir -p $NODE_PATH
#下载文件
wget http://yellowcong.qiniudn.com/apache-activemq-5.11.1-bin.tar.gz -d /usr/local/activemq-cluster
#解压到node4文件夹
tar -zxvf apache-activemq-5.11.1-bin.tar.gz -C $NODE_PATH
#修改jetty端口
sed -i 's/8161/testestes/g' $NODE_CONF/jetty.xml
#修改brokerName
sed -i 's/brokerName="localhost"/brokerName="doubi_test"/g' $NODE_CONF/activemq.xml
#修改persistenceAdapter
#删除
sed -i '/kahaDB directory/d' $NODE_CONF/activemq.xml
#添加db和zookeeper信息
sed -i '/<\/persistenceAdapter>/i \
<replicatedLevelDB \
directory="${activemq.data}/leveldb" \
replicas="3" \
bind="tcp://0.0.0.0:62621" \
zkAddress="192.168.100.10:2182,192.168.100.10:2183,192.168.100.10:2184" \
zkPassword="" \
hostname="yellowcong" \
sync="local_disk" \
zkPath="/activemq/leveldb-stores" \
/> \
' $NODE_CONF/activemq.xml
#修改通信端口51511
#这个带斜杠的修改 ,都变成 #了
sed -i 's#tcp://0.0.0.0:61616#tcp://0.0.0.0:51511#' $NODE_CONF/activemq.xml
#查看配置的信息
cat $NODE_CONF/activemq.xml
多节点添加脚本代码
activemq-cluster.sh
我创建了activemq-cluster.sh 脚本,直接就可以执行下载并执行mq
#!/bin/bash
#外部访问端口
SERVICE_IPS=(62621 62622 62623)
#管控台端口
WEB_IPS=(8161 8162 8163)
#控制端口,用于ActiveMq内部交流用
CONTROL_IPS=(51511 51512 51513)
#nodes name
NODE_NAMES=(node1 node2 node3)
#brokenName
BROKER_NAME="yellowcong-cluster"
#zookeeper的服务器地址
ZOOKEEP_URL="192.168.100.10:2182,192.168.100.10:2183,192.168.100.10:2184"
#节点的目录文件夹
CLUSTER_HOME=/usr/local/activemq-cluster
#主机名称
HOSTNAME="yellowcong"
#ActiveMQ 在Zookeeper配置的地址
ZK_PATH="/activemq/leveldb-stores"
#文件下载
downloadFile(){
#创建文件夹
echo $CLUSTER_HOME
mkdir -p $CLUSTER_HOME
#下载到目标文件夹
wget http://yellowcong.qiniudn.com/apache-activemq-5.11.1-bin.tar.gz -O $CLUSTER_HOME/apache-activemq-5.11.1-bin.tar.gz
echo "下载到了\t"$CLUSTER_HOME
}
#$1 第一个参数 文件夹名称
#$2 第二个参数 web 访问的ip名称
#$3 第三个参数 内部控制的端口
#$4 第四个参数 提供服务的端口
createNode(){
#节点的路径
NODE_PATH=$CLUSTER_HOME/$1
#创建目录
mkdir $NODE_PATH
#配置文件的路径
NODE_CONF=$NODE_PATH/apache-activemq-5.11.1/conf
echo "解压文件中............."
#解压到node4文件夹
tar -zxvf $CLUSTER_HOME/apache-activemq-5.11.1-bin.tar.gz -C $NODE_PATH >/dev/null
#修改jetty端口
sed -i 's/8161/'$2'/g' $NODE_CONF/jetty.xml
#修改brokerName
sed -i 's/brokerName="localhost"/brokerName="'$BROKER_NAME'"/g' $NODE_CONF/activemq.xml
#修改persistenceAdapter
#删除
sed -i '/kahaDB directory/d' $NODE_CONF/activemq.xml
#添加db和zookeeper信息
sed -i '/<\/persistenceAdapter>/i \
<replicatedLevelDB \
directory="${activemq.data}/leveldb" \
replicas="3" \
bind="tcp://0.0.0.0:'$4'" \
zkAddress="'$ZOOKEEP_URL'" \
zkPassword="" \
hostname="'$HOSTNAME'" \
sync="local_disk" \
zkPath="'$ZK_PATH'" \
/> \
' $NODE_CONF/activemq.xml
#修改通信端口51511
#这个带斜杠的修改 ,都变成 #了
sed -i 's#tcp://0.0.0.0:61616#tcp://0.0.0.0:'$3'#' $NODE_CONF/activemq.xml
echo $1“配置完成”
}
#启动mq的操作
start_mq(){
i=0
#开启服务
while [[ i -lt ${#NODE_NAMES[@]} ]]
do
#节点名称
node_name=${NODE_NAMES[i]}
#节点的路径
BIN_PATH=$CLUSTER_HOME/$node_name/apache-activemq-5.11.1/bin
echo $BIN_PATH/activemq
#启动服务
sh $BIN_PATH/activemq start
let i++
done
}
#执行下载命令
downloadFile
#创建节点
while [[ i -lt ${#NODE_NAMES[@]} ]]
do
#节点名称
node_name=${NODE_NAMES[i]}
#节点提供activemq服务的ip
service_ip=${SERVICE_IPS[i]}
#节点内部沟通的ip
control_ip=${CONTROL_IPS[i]}
#管控台访问的ip
web_ip=${WEB_IPS[i]}
echo "节点路径"-${NODE_NAMES[i]}
echo “服务ip地址”-${SERVICE_IPS[i]}
echo “控制端ip地址”-${CONTROL_IPS[i]}
echo “WEB管控台ip地址”-${WEB_IPS[i]}
#创建节点
createNode $node_name $web_ip $control_ip $service_ip
#在linux中一定要注意空格了,这个i++ 不能有空格
let i++
done
#启动mq
start_mq
停止activemq方法1
这种直接杀死进程的方式,比较的暴力
#查看目录
jps
#杀掉进程
kill 进程号
停止activemq方法2
这种直接杀死进程的方式,比较的暴力
#通过activemq 来进行关闭
activemq-cluster/node1/apache-activemq-5.11.1/bin/activemq stop