您的位置:首页 > 运维架构 > Shell

Shell实战之一键搭建ActiveMq集群-yellowcong

2017-12-09 20:02 405 查看
脚本下载地址http://yellowcong.qiniudn.com/activemq-cluster-install.sh,里面是我固定写死的的ip端口好和配置情况,大家可以根据自己的需求进行更改。通过一键安装ActiveMq集群,老爽了。

架构

ActiveMQ架构

节点控制端口管控台端口目录
192.168.100.10:62621515118161/usr/local/activemq-cluster/node1
192.168.100.10:62622515128162/usr/local/activemq-cluster/node2
192.168.100.10:62623515138163/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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: