首先次脚本执行的前提条件是各服务器之间打通免密登录 (注意 这里不考虑安全只实现功能 各服务器最好同在一个内网)
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=′rabbit1′name=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/hosts−eRABBITMQERLANGCOOKIE=cookie ${iso}
sleep 20;
else
docker run -itd --hostname $name1 --restart=always --name
n
a
m
e
1
−
p
8181
:
name1 -p 8181:
name1−p8181: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/hosts−eRABBITMQERLANGCOOKIE=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=′rabbit1′names=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
shell一键脚本docker部署分布式rabbitmq集群
最新推荐文章于 2023-05-18 17:37:00 发布