利用SSH实现分布式应用的一键安装部署

Posted 鮀城小帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用SSH实现分布式应用的一键安装部署相关的知识,希望对你有一定的参考价值。

1. 一键安装流程步骤

1.1 步骤:

  1. 拷贝安装包到远端主机
  2. 创建安装目录并解压安装包
  3. 格式化磁盘挂着载数据目录
  4. 修改服务配置文件
  5. 启动服务并验证集群运行状态

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实现分布式应用的一键安装部署的主要内容,如果未能解决你的问题,请参考以下文章

利用jenkins一键部署项目

[云原生专题-54]:Kubesphere云治理-操作-通过K8S的应用仓库一键部署微服务应用- 分布式协调服务中间件zookeeper的安装与部署

如何利用容器实现生产级别的redis sharding集群的一键交付

自定义Gradle Task实现一键批量部署Springboot应用

原创 :nfs软件服务利用ansible实现一键化部署

一键部署 spark