利用SSH实现分布式应用的一键安装部署
Posted 鮀城小帅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用SSH实现分布式应用的一键安装部署相关的知识,希望对你有一定的参考价值。
1. 一键安装流程步骤
1.1 步骤:
- 拷贝安装包到远端主机
- 创建安装目录并解压安装包
- 格式化磁盘挂着载数据目录
- 修改服务配置文件
- 启动服务并验证集群运行状态
1.2 服务一键启停及状态监测
2.分布式kafka集群安装部署脚本
2.1 脚本框架
#!/bin/bash
#第一步:关闭firewalld和selinux
#第二步:安装配置JDK
#第三步:安装配置zookeeper,并启动服务
#第四步:安装配置kafka,并启动服务
2.2 多主机执行指令函数封装
#!/bin/bash
HOST_LIST="192.168.126.136 192.168.126.137"
# 多主机执行指令函数封装
function remote_execute
for host in $HOST_LIST;do
echo "++++++++++Execute Command < $@ > ON Host: $host +++++++++++"
sshpass -p root ssh -o StrictHostKeyChecking=no root@$host $@
if [ $? -eq 0 ];then
echo "$CMD_NUM Congratulation.Command < $@ > execute success"
else
echo "$CMD_NUM Sorry.Command < $@ > execute failed"
fi
done
remote_execute "df -h"
remote_execute "cat /etc/fstab"
#第一步:关闭firewalld和selinux
#第二步:安装配置JDK
#第三步:安装配置zookeeper,并启动服务
#第四步:安装配置kafka,并启动服务
2.3 利用exec 管理安装部署日志
#!/bin/bash
#
#删除旧日志
if [ -e ./deploy_kafka.log ];then
rm -f ./deploy_kafka/log
fi
#实现将echo语句重定向到log中,就不需要每个echo都进行输出
exec 1>> ./deploy_kafka.log 2>&1
HOST_LIST="192.168.126.136"
CMD_NUM=0
# 多主机执行指令函数封装
function remote_execute
for host in $HOST_LIST;do
CMD_NUM=`expr $CMD_NUM + 1`
echo "++++++++++Execute Command < $@ > ON Host: $host +++++++++++"
sshpass -p root ssh -o StrictHostKeyChecking=no root@$host $@
if [ $? -eq 0 ];then
echo "$CMD_NUM Congratulation.Command < $@ > execute success"
else
echo "$CMD_NUM Sorry.Command < $@ > execute failed"
fi
done
remote_execute "df -h"
remote_execute "cat /etc/fstab"
#第一步:关闭firewalld和selinux
#第二步:安装配置JDK
#第三步:安装配置zookeeper,并启动服务
#第四步:安装配置kafka,并启动服务
2.4 实现一键永久关闭 firewalld和selinux
#!/bin/bash
#
#删除旧日志
if [ -e ./deploy_kafka.log ];then
rm -f ./deploy_kafka/log
fi
#实现将echo语句重定向到log中,就不需要每个echo都进行输出
exec 1>> ./deploy_kafka.log 2>&1
HOST_LIST="192.168.126.136 192.168.126.137"
CMD_NUM=0
# 多主机执行指令函数封装
function remote_execute
for host in $HOST_LIST;do
CMD_NUM=`expr $CMD_NUM + 1`
echo "++++++++++Execute Command < $@ > ON Host: $host +++++++++++"
sshpass -p root ssh -o StrictHostKeyChecking=no root@$host $@
if [ $? -eq 0 ];then
echo "$CMD_NUM Congratulation.Command < $@ > execute success"
else
echo "$CMD_NUM Sorry.Command < $@ > execute failed"
fi
done
#remote_execute "df -h"
#remote_execute "cat /etc/fstab"
#第一步:关闭firewalld和selinux
remote_execute "systemctl stop firewalld.service"
remote_execute "systemctl disable firewalld.service"
remote_execute "setenforce 0"
remote_execute "sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux"
#第二步:安装配置JDK
#第三步:安装配置zookeeper,并启动服务
#第四步:安装配置kafka,并启动服务
2.5 多主机传输文件函数封装
#!/bin/bash
#
#删除旧日志
if [ -e ./deploy_kafka.log ];then
rm -f ./deploy_kafka/log
fi
#实现将echo语句重定向到log中,就不需要每个echo都进行输出
exec 1>> ./deploy_kafka.log 2>&1
HOST_LIST="192.168.126.136 192.168.126.139"
CMD_NUM=0
LOCAL_DIR="/opt/tmp"
PACKAGE_DIR="/opt/package"
APP_DIR="/opt/source"
JDK_NAME="jdk-8u152-linux-x64.tar.gz"
# 多主机执行指令函数封装
function remote_execute
for host in $HOST_LIST;do
CMD_NUM=`expr $CMD_NUM + 1`
echo "++++++++++Execute Command < $@ > ON Host: $host +++++++++++"
sshpass -p root ssh -o StrictHostKeyChecking=no root@$host $@
if [ $? -eq 0 ];then
echo "$CMD_NUM Congratulation.Command < $@ > execute success"
else
echo "$CMD_NUM Sorry.Command < $@ > execute failed"
fi
done
# 多主机传输文件函数封装
function remote_transfer
SRC_FILE=$1
DST_DIR=$2
# 函数必须有2个参数,第一个参数是本地文件或目录,第二个参数为远端主机目录
if [ $# -lt 2 ];then
echo "Usage: $0 <file|dir> <dst_dir>"
exit 1
fi
# 判断第1个参数是否存在,如果不存在则直接退出并提示给用户
if [ ! -e $SRC_FILE ];then
echo "ERROR - $SRC_FILE is not exist,Please check..."
exit 1
fi
# 判断第2个参数,远端主机目录是否存在,如果不存在,则创建
for host in $HOST_LIST;do
echo "++++++++++++++++Transfer File To HOST: $host ++++++++++++++++"
CMD_NUM=`expr $CMD_NUM + 1`
# 判断第2个参数,远端主机目录是否存在;如果不存在,则创建
sshpass -p root ssh -o StrictHostKeyChecking=no root@$host "if [ ! -e $DST_DIR ];then mkdir $DST_DIR -p;fi"
sshpass -p root scp -o StrictHostKeyChecking=no $SRC_FILE root@$host:$DST_DIR/
if [ $? -eq 0 ];then
echo "Remote Host: $host - $CMD_NUM - INFO - SCP $SRC_FILE To dir $DST_DIR Success"
else
echo "Remote Host: $host - $CMD_NUM - ERROR - SCP $SRC_FILE To dir $DST_DIR Failed"
fi
done
#测试多主机传输文件函数
remote_transfer /etc/fstab /tmp
remote_transfer /tmp/test /mnt/file
#第一步:关闭firewalld和selinux
remote_execute "systemctl stop firewalld.service"
remote_execute "systemctl disable firewalld.service"
remote_execute "setenforce 0"
remote_execute "sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux"
#第二步:安装配置JDK
#第三步:安装配置zookeeper,并启动服务
#第四步:安装配置kafka,并启动服务
以上是关于利用SSH实现分布式应用的一键安装部署的主要内容,如果未能解决你的问题,请参考以下文章
[云原生专题-54]:Kubesphere云治理-操作-通过K8S的应用仓库一键部署微服务应用- 分布式协调服务中间件zookeeper的安装与部署
如何利用容器实现生产级别的redis sharding集群的一键交付