shell一键脚本docker部署分布式rabbitmq集群

首先次脚本执行的前提条件是各服务器之间打通免密登录 (注意 这里不考虑安全只实现功能 各服务器最好同在一个内网)
1.在其中一台服务器创建文件 ip.txt IP配置文件
备注: IP 用户名 密码 端口 (注意空格)
内容如下:
192.168.1.90 root 123456 22
192.168.1.92 root 123456 22
192.168.1.91 root 123456 22
192.168.1.93 root 123456 22
192.168.1.97 root 123456 22
192.168.1.98 root 123456 22
2.只需要在其中一台服务器执行这个脚本即可 此脚本须与 ip.txt IP配置文件同目录
rabbitmq-install.sh 脚本内容如下:
#!/bin/bash
ip=’’
user=’’
pwd=’’
j=1
logth=install.log
iso=‘rabbitmq:3-management’
cookie=‘rabbitcookie’
hport=15672
port1=5672
port2=4369
port3=25672
name1=rabbit1
rabbitmq=/home/web/rabbitmq
host=/root/hosts
#获取脚本参数
if [ ! -f ip.txt ];then
echo ‘请在脚本install.sh当前目录创建ip.txt文件内容一个IP对应一个用户名一个密码一个端口 格式为 IP username password port 中间空格隔开’
exit
fi
iparr=(cat ip.txt)
count=${#iparr[*]}
if [ ( ( (( ((count%4)) -ne 0 ];then
echo ‘请确保ip.txt文件内容一个IP对应一个用户名一个密码一个端口 格式为 IP username password port 中间空格隔开’
exit
fi
Int(){
if [ “ i " − l t " 4 " ] ; t h e n n a m e 1 = ′ r a b b i t 1 ′ n a m e = i" -lt "4" ];then name1='rabbit1' name= i"lt"4"];thenname1=rabbit1name=name1
else
name1=‘rabbit’${j}
fi
echo ‘关闭防火墙以及selinux’ $ip $name1
ssh -p $port u s e r @ user@ user@ip “systemctl stop firewalld.service && systemctl disable firewalld.service && setenforce 0”
echo ‘节点部署配置启动’ $ip $name1
ssh -p $port u s e r @ user@ user@ip > /dev/null 2>&1 << eeooff
yum -y install docker
systemctl start docker
systemctl enable docker
docker pull ${iso}
docker stop $name1
docker rm $name1
rm -rf ${rabbitmq}
mkdir -p r a b b i t m q i f [ " {rabbitmq} if [ " rabbitmqif["j” -ne “1” ];then
docker run -itd --hostname $name1 --restart=always --name $name1 -p p o r t 1 : port1: port1:port1 -p p o r t 2 : port2: port2:port2 -p p o r t 3 : port3: port3:port3 -v $rabbitmq:/var/lib/rabbitmq:z -v h o s t : / e t c / h o s t s − e R A B B I T M Q E R L A N G C O O K I E = host:/etc/hosts -e RABBITMQ_ERLANG_COOKIE= host:/etc/hostseRABBITMQERLANGCOOKIE=cookie ${iso}
sleep 20;
else
docker run -itd --hostname $name1 --restart=always --name n a m e 1 − p 8181 : name1 -p 8181: name1p8181:hport -p p o r t 1 : port1: port1:port1 -p p o r t 2 : port2: port2:port2 -p p o r t 3 : port3: port3:port3 -v $rabbitmq:/var/lib/rabbitmq:z -v h o s t : / e t c / h o s t s − e R A B B I T M Q E R L A N G C O O K I E = host:/etc/hosts -e RABBITMQ_ERLANG_COOKIE= host:/etc/hostseRABBITMQERLANGCOOKIE=cookie i s o f i e e o o f f i f [ " {iso} fi eeooff if [ " isofieeooffif["j" -gt “1” ];then
echo ‘node节点加入集群’ $ip $name1 $name
ssh -p $port u s e r @ user@ user@ip “docker exec KaTeX parse error: Expected 'EOF', got '&' at position 42: …mqctl stop_app &̲& rabbitmqctl r…{name} && rabbitmqctl start_app’”
fi
}
Sethost(){
jc=1
for (( js=0;js<KaTeX parse error: Expected '}', got '#' at position 2: {#̲iparr[@]};js=js+4))
do
bip=KaTeX parse error: Expected '}', got 'EOF' at end of input: {iparr[js]}
if [ “ j s " − l t " 4 " ] ; t h e n n a m e 2 = ′ r a b b i t 1 ′ n a m e s = js" -lt "4" ];then name2='rabbit1' names= js"lt"4"];thenname2=rabbit1names=name2
else
name2=‘rabbit’ j c f i c a = {jc} fi ca= jcfica=((jc++));
str=”$bip $name2 $name2"
ssh -p $port u s e r @ user@ user@ip > /dev/null 2>&1 << eeooff
if [ -f h o s t ] ; t h e n i f ! g r e p " host ];then if ! grep " host];thenif!grep"str" $host >/dev/null;then
echo $str >> $host
else
sed -i “s/$str/$str/g” $host
fi
else
echo $str > KaTeX parse error: Expected 'EOF', got '}' at position 25: …fi eeooff done }̲ for (( i=0;i<{#iparr[@]};i= i + 4 ) ) d o i p = i+4)) do ip= i+4))doip={iparr[KaTeX parse error: Expected 'EOF', got '}' at position 3: i]}̲ user={iparr[KaTeX parse error: Expected 'EOF', got '}' at position 5: i+1]}̲ pwd={iparr[KaTeX parse error: Expected 'EOF', got '}' at position 5: i+2]}̲ port={iparr[KaTeX parse error: Expected 'EOF', got '}' at position 5: i+3]}̲ Setho…((j++));
done

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值