`

windows上部署linux集群应用

阅读更多
在独立开发一个跨云的集群应用的时候,突然发现以往使用的jekins、shell脚本完全不够用了,部署一个版本效率低下到要死要死了。于是觉得非常有必要手写一个bat脚本,去操作集群在linus上的jar应用,虽然忙乎了一个晚上,但是部署效率直线上升。

windows上传和操作应用使用到两个工具分别是pscp和plink

pscp,就像linux的scp命令指令如下,
Usage: pscp [options] [user@]host:source target
       pscp [options] source [source...] [user@]host:target
       pscp [options] -ls [user@]host:filespec
Options:
  -V        print version information and exit
  -pgpfp    print PGP key fingerprints and exit
  -p        preserve file attributes
  -q        quiet, don't show statistics
  -r        copy directories recursively
  -v        show verbose messages
  -load sessname  Load settings from saved session
  -P port   connect to specified port
  -l user   connect with specified username
  -pw passw login with specified password
  -1 -2     force use of particular SSH protocol version
  -4 -6     force use of IPv4 or IPv6
  -C        enable compression
  -i key    private key file for user authentication
  -noagent  disable use of Pageant
  -agent    enable use of Pageant
  -hostkey aa:bb:cc:...
            manually specify a host key (may be repeated)
  -batch    disable all interactive prompts
  -no-sanitise-stderr  don't strip control chars from standard error
  -proxycmd command
            use 'command' as local proxy
  -unsafe   allow server-side wildcards (DANGEROUS)
  -sftp     force use of SFTP protocol
  -scp      force use of SCP protocol
  -sshlog file
  -sshrawlog file
            log protocol details to a file



plink就是linux的ssh,可以在window下远程执行linux的shell脚本,指令如下:

Usage: pscp [options] [user@]host:source target
       pscp [options] source [source...] [user@]host:target
       pscp [options] -ls [user@]host:filespec
Options:
  -V        print version information and exit
  -pgpfp    print PGP key fingerprints and exit
  -p        preserve file attributes
  -q        quiet, don't show statistics
  -r        copy directories recursively
  -v        show verbose messages
  -load sessname  Load settings from saved session
  -P port   connect to specified port
  -l user   connect with specified username
  -pw passw login with specified password
  -1 -2     force use of particular SSH protocol version
  -4 -6     force use of IPv4 or IPv6
  -C        enable compression
  -i key    private key file for user authentication
  -noagent  disable use of Pageant
  -agent    enable use of Pageant
  -hostkey aa:bb:cc:...
            manually specify a host key (may be repeated)
  -batch    disable all interactive prompts
  -no-sanitise-stderr  don't strip control chars from standard error
  -proxycmd command
            use 'command' as local proxy
  -unsafe   allow server-side wildcards (DANGEROUS)
  -sftp     force use of SFTP protocol
  -scp      force use of SCP protocol
  -sshlog file
  -sshrawlog file
            log protocol details to a file

C:\Users\Administrator>D:\tool\seo_deploy\plink
Plink: command-line connection utility
Release 0.72
Usage: plink [options] [user@]host [command]
       ("host" can also be a PuTTY saved session name)
Options:
  -V        print version information and exit
  -pgpfp    print PGP key fingerprints and exit
  -v        show verbose messages
  -load sessname  Load settings from saved session
  -ssh -telnet -rlogin -raw -serial
            force use of a particular protocol
  -P port   connect to specified port
  -l user   connect with specified username
  -batch    disable all interactive prompts
  -proxycmd command
            use 'command' as local proxy
  -sercfg configuration-string (e.g. 19200,8,n,1,X)
            Specify the serial configuration (serial only)
The following options only apply to SSH connections:
  -pw passw login with specified password
  -D [listen-IP:]listen-port
            Dynamic SOCKS-based port forwarding
  -L [listen-IP:]listen-port:host:port
            Forward local port to remote address
  -R [listen-IP:]listen-port:host:port
            Forward remote port to local address
  -X -x     enable / disable X11 forwarding
  -A -a     enable / disable agent forwarding
  -t -T     enable / disable pty allocation
  -1 -2     force use of particular protocol version
  -4 -6     force use of IPv4 or IPv6
  -C        enable compression
  -i key    private key file for user authentication
  -noagent  disable use of Pageant
  -agent    enable use of Pageant
  -noshare  disable use of connection sharing
  -share    enable use of connection sharing
  -hostkey aa:bb:cc:...
            manually specify a host key (may be repeated)
  -sanitise-stderr, -sanitise-stdout, -no-sanitise-stderr, -no-sanitise-stdout
            do/don't strip control chars from standard output/error
  -no-antispoof   omit anti-spoofing prompt after authentication
  -m file   read remote command(s) from file
  -s        remote command is an SSH subsystem (SSH-2 only)
  -N        don't start a shell/command (SSH-2 only)
  -nc host:port
            open tunnel in place of session (SSH-2 only)
  -sshlog file
  -sshrawlog file
            log protocol details to a file
  -shareexists
            test whether a connection-sharing upstream exists




window的expect命令不像linux的那么好用,可能是我没掌握好,下载地址也很不好找,使用的时候也跟linux不一样;所以在执行pscp的时候,有个嵌入命令(yes/no),可以在执行pscp命令前加上 echo y| pscp .... ,这样居然也能达到linux expect命令的效果。


window的start命令,类似linux的nohup,异步执行命令,跟pscp、plink结合使用,这样就实行多线程传输应用和远程执行linux脚本


还是贴代码吧,部署代码如下
@echo off

for /f "eol=/delims=" %%s in (services.txt) do (
	for  /f "tokens=1,2,3,4 delims= " %%a in ('echo %%s')  do (
		start /b cmd /c "echo y|D:\tool\seo_deploy\pscp -scp -v -q -l %%c -pw %%d -P %%b  E:\seo\seo

\target\seo-0.0.1-SNAPSHOT.jar root@%%a:/opt/seo.jar & D:\tool\seo_deploy\plink -no-antispoof -l %%c -pw %%d -P 

%%b %%a ps -ef^|grep seo ^| awk '{if($0 ~/java/) print $2}' ^| xargs kill -9 ^| rm -rf ^/root^/seo.jar 

^/root^/seo.log ^| mv ^/opt^/seo.jar ^/root^/ & D:\tool\seo_deploy\plink -no-antispoof -l %%c -pw %%d -P %%b %%a 

nohup java -DisProducer=true -Dshell='ifdown ppp0^,ifup ppp0' -DdesKey=^"AAAAA123^" -DipChannel=^"aaa^"  -

DredisHostName=^"127.0.0.1^" -Xms128m -Xmx640m -server -XX:^+UseParNewGC -XX:^+UseConcMarkSweepGC -XX:^

+CMSClassUnloadingEnabled -XX:^+CMSScavengeBeforeRemark -XX:^+DisableExplicitGC -Djava.awt.headless=true -jar 

seo.jar ^>^> seo.log 2^>^&1 ^&"
		echo ============我是分割线============
	)
)


:cmd /k
pause


services.txt为服务器列表
格式如下:
服务器ip1 22 root pwd
服务器ip2 22 root pwd



分享到:
评论

相关推荐

    NC6+WAS安装及部署完全手册(Windows+Linux双版本)

    《NC6+WAS安装及部署完全手册》是针对企业级应用服务器WebSphere Application Server (WAS)与NC6系统在Windows和Linux环境下的详细安装与部署指南。本手册旨在帮助IT专业人员理解并掌握这两种不同操作系统环境下NC6...

    linux集群应用实战

    在windows上配置iscsi initiator 在linux上配置iscsi initiator 第4讲 基于iscsi 在安全方面相关设定 课程目标: 如何管理和使用iscsi存储网络 initiator主机以ip认证方式获取iscsi target资源 initiator主机...

    solr 部署在linux windows环境

    本篇文章将详细讲解如何在Linux和Windows环境中部署Solr。 **一、Solr在Linux环境中的部署** 1. **系统准备**:确保你的Linux系统(如Ubuntu或CentOS)已经安装了Java运行环境(JRE)和Java开发工具集(JDK)。你...

    linux-一键部署k8s1141集群

    在IT行业中,Linux系统是许多服务器和开发环境的基础,而Kubernetes(简称k8s)作为容器编排的领头羊,已经成为了现代云原生应用部署的关键技术。本教程将详细阐述如何利用Linux环境,一键部署k8s 1.14.1集群。 一...

    weblogic上部署集群项目步骤

    以下是一份详细的步骤指南,帮助你理解如何在WebLogic Server上配置和部署集群项目。 首先,你需要登录到WebLogic Server管理控制台。这通常通过访问`http://localhost:7001/console`完成,其中`localhost`是服务器...

    memcached linux windows 安装 使用 缓存 集群

    在Linux环境中,安装Memcached通常通过包管理器进行,如在Ubuntu上使用`apt-get`,在CentOS上使用`yum`。安装完成后,通过`systemctl`或`service`命令来启动、停止和管理服务。 1. **安装**: - Ubuntu: `sudo apt...

    Docker+K8S 集群环境搭建及分布式应用部署

    尽管如此,Docker也提供了对Windows和macOS的支持,这是通过在宿主机上运行一个轻量级的Linux虚拟机来实现的。 在开始安装Docker之前,需要准备一个Linux环境,文中以CentOS虚拟机为例。首先需要确保网络畅通,这...

    Windows下mysql集群+linux下mysql集群

    虽然给定内容主要聚焦于 Windows 平台上的 MySQL 安装与配置,但构建跨平台的 MySQL 集群还需要了解 Linux 环境下的部署方法。下面简要介绍 Linux 下 MySQL 集群的配置步骤: **1. 安装 MySQL Server** - 在 ...

    Websphere 8 for linux 集群配置

    综上所述,Websphere 8 for Linux集群的配置是一项复杂但极具价值的工作,它不仅涉及到软件的安装与配置,更要求对系统架构、网络通信、资源管理和安全策略有深刻的理解和把握。通过遵循官方指南,结合实践经验,...

    尚观linux集群架构师课程

    尚观Linux集群架构师课程深度解析 尚观科技推出的Linux集群架构师课程,是一门集技术深度与实战经验于一体的高端IT培训课程。该课程聚焦于Linux集群架构的精深研究,旨在培养具备全面技能和实战经验的Linux集群架构...

    linux-minikube在macOSLinux和Windows上实现了本地Kubernetes集群

    “Linux-minikube在macOS/Linux和Windows上实现了本地Kubernetes集群”这一标题揭示了Minikube的主要功能,即为不同操作系统(包括macOS、Linux和Windows)提供一个本地运行的Kubernetes(K8S)集群环境。...

    在jboss上部署web应用

    要启动JBoss,只需运行bin目录下的run.bat(Windows系统)或run.sh(Unix/Linux系统)文件。启动成功后,访问http://localhost:8080可以检查服务器是否正常运行。 【部署流程】 在JBoss中部署应用程序相当直观,只...

    用硬件卡克隆Linux集群.pdf

    1. 首先,在选定的母盘机器上安装Linux集群,注意避免克隆软件对正常安装造成干扰,如果存在多系统共存,建议先安装Windows,再安装RHEL 4,以便更好地管理和引导。 2. 在创建分区时,不必单独设立BOOT分区,便于在...

    Apache+Tomcat+Linux集群和负载均衡

    **Apache+Tomcat+Linux集群和负载均衡**主要指通过Apache作为前端反向代理服务器,Tomcat作为后端应用服务器,同时利用Linux系统强大的稳定性和安全性来构建一个能够有效分发请求、提高响应速度和服务质量的Web应用...

    Websphere8forlinux集群配置.pdf

    集群配置的后续步骤通常包括配置应用程序服务器、定义集群、设置负载均衡策略、安装和部署应用程序以及配置故障转移和健康检查机制。每个步骤都需要精确的配置以确保集群的稳定性和高可用性。Websphere 8提供了丰富...

    ElasticSearch集群部署方式

    推荐的做法是将ElasticSearch部署在专用的服务器上,而不是与应用程序共享服务器资源。若有多台服务器,则应在每台服务器上都解压一份ElasticSearch,这样每一台服务器就构成了ElasticSearch集群中的一个节点。 - ...

    windows配置nginx实现负载均衡集群

    本文将详细介绍如何在Windows上配置Nginx以实现负载均衡集群。 首先,我们需要安装Nginx。可以从Nginx官方网站(如http://sysoev.ru/nginx/)下载适用于Windows的版本,例如nginx-0.8.50.zip。将下载的zip文件解...

Global site tag (gtag.js) - Google Analytics