【Linux】分布式应用部署小技巧-远程免密执行命令

简介: 【Linux】分布式应用部署小技巧-远程免密执行命令

正文


在 Linux 服务器上经常会部署一些分布式应用,这些分布式应用的安装步骤里除了 IP 基本上都是相同的,但经常会要求安装之前系统内包含 Java 环境。辟如下面的Starrocks 的安装:

126.webp.jpg

Starrocks安装要求Java和mysql

这里分享一个分布式应用部署的小技巧,本质上就是使用 ssh 远程执行命令

下面的例子使用了两个节点,IP 分别是 10.10.15.11310.10.15.105


1、 配置节点文件 nodes.conf 文件,内容如下:

10.10.15.113
10.10.15.105

该文件是为了让脚本读取各个节点的 ip 地址。


2、编写脚本

#!/bin/bash
#Program:
#       edit hostname mapping
#History:
#2022/09/12     junfenghe.cloud@qq.com  version:0.0.1
path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export path
env_nodes=""
while IFS=$'\n' read -r node
do
    env_nodes=${env_nodes}" ${node}"
done < nodes.conf
export env_nodes
#trust nodes for transfer package
if [ -d ~/.ssh ] && [ -f ~/.ssh/id_rsa ] && [ -f ~/.ssh/id_rsa.pub ]
then
    echo "trust key has exist"
else
    if [ -d ~/.ssh ]
    then
        echo
    else
        mkdir ~/.ssh && chmod 700 ~/.ssh
    fi
    ssh-keygen -f ~/.ssh/id_rsa -N ""
fi
for node in ${env_nodes}
do
    sed -i "s/^${node}.*//g" ~/.ssh/known_hosts
    ssh-copy-id root@${node}
done
for node in ${env_nodes}
do
    # 这个 for 循环内部,就是你的实际业务代码了,我下面写的是自己配置 JAVA 环境的脚本
    scp -r ./* root@${node}:~/
    ssh root@${node} "cd ~/ && mkdir -p /usr/local/java &&tar -zxvf jre17.tar.gz && mv jre /usr/local/java/"
    ssh root@${node} "echo '#set java environment' >> ~/.bashrc"
    ssh root@${node} "echo 'export JAVA_HOME=/usr/local/java/jre' >> ~/.bashrc"
    ssh root@${node} "echo 'export PATH=\$JAVA_HOME/bin:\$PATH' >> ~/.bashrc"
done
echo "all finished."


3.、脚本解释


这个脚本其实核心在于前半部分:让部署用的服务器信任各个节点,这样让咱们(的脚本)在传输文件时,就不需要输入账号密码了。

完成互相信任之后,各个节点安装所需要的文件就都有了,最后的一个 for 循环,其实就是远程在各个节点执行命令,咱们在自己的实际应用中,将for 循环内部改成自己的代码就可以了

目录
相关文章
|
9天前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
9天前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
27天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
52 14
Linux 10 个“who”命令示例
|
6天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
28 8
|
16天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
100 20
|
8天前
|
Ubuntu 网络协议 Linux
快速部署WSL(Windows Subsystem for Linux)
WSL提供了一种轻量级的方法,使开发者能够在Windows上无缝运行Linux环境。通过本文介绍的步骤,可以快速安装、配置和使用WSL,以满足开发和测试的需求。
44 8
|
16天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
43 7
|
2月前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
35 9
|
2月前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
2月前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
158 3