【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 循环内部改成自己的代码就可以了

目录
相关文章
|
10天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
93 6
|
11天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
47 3
|
11天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
37 2
|
6天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
34 3
|
13天前
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
32 5
|
11天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
44 3
|
14天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
49 6
|
15天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
25 7
|
15天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
33 4
|
14天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
16 2
下一篇
无影云桌面