服務器批量修改代碼,利用Redis實現多服務器批量操作

工作中遇到一個項目需要在多個平臺編譯打包,每次都需要登錄到不同的服務器同步代碼,編譯,打包,上傳,非常麻煩,于是想為何不能一次操作,多臺服務器自動執行呢。

網上找了下,有很多解決方案,但是都比較麻煩,最后想到了用redis的消息訂閱實現該功能, 方法很簡單,只需要一個redis提供服務就可以,如果希望將功能web化,可以再加一個nginx服務,

實現方法如下:

1. 假設有三臺服務器A,B,C,需要執行相同的指令,可以在A機器上安裝一個redis-server, 一個nginx(帶redis2-nginx-module模塊), nginx訪問redis方法很簡單只需要參考官方教程就可以了。

2. 修改redis源碼文件redis-cli.c 在main函數任意位置添加該語句 `setvbuf(stdout, (char *)NULL, _IOLBF, 0);` 設置緩存區區為行緩存,這個很有必要,然后分別在A,B,C三臺服務器編譯一個redis-cli,用作redis客戶端.

3. 編寫腳本:

3.1 start.sh

#!/usr/bin/bash

while true;do

./redis-cli ?-h $A UBSCRIBE ?command_channel | xargs -i -exec sh command.sh {} ;

done

3.2 command.sh

#!/usr/bin/bash

input=($1)

case ${input[0]} in;

update)

update $@ | ./redis-cli -x ?set command_result_$IP

;;

*)

;;

esac

4. 運行腳本

在A,B,C三臺服務器建立一個目錄,將start.sh command.sh redis-cli放在同一個目錄下,

nohup sh start.sh &分別執行該命令啟動腳本

5. 發布命令

在任意服務器上執行 `./redis-cli -h $A publish?command_channel update` 發布一個任務,將分發到A,B,C三臺服務器上, 三臺服務器

6. 題外話

我在實際環境上是利用nginx 提供的http服務,發送命令給redis, 寫了個簡單的web頁面,實現任務分發, 并將處理結果保存到redis, ?前端通過nginx 從redis中獲取command_result_$IP中的值,作為處理結果,其中$IP為當前機器IP,或者其他唯一識別該機器的編號.

后面還實現升級功能,將command.sh 放在web服務器上供A,B,C下載,并在command.sh中實現update功能(1.重命名本地command.sh, 2.在nginx上下載新的command.sh, 下一次命令就會執行新的command.sh), 以這種方式,在不遠程連接服務器的情況下,實現對多臺服務器的同時操作的功能, 后面只需要修改command.sh 就可以添加各種命令,實現各種操作

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529718.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529718.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529718.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

django與mysql實現增刪_django與mysql實現簡單的增刪查改

模型定義from django.db import modelsclass Grades(models.Model):g_name models.CharField(max_length20)create_date models.DateTimeField()girl_num models.IntegerField()boy_num models.IntegerField()isDelete models.BooleanField(defaultFalse)def __str__(self…

服務器本地文件,云服務器 本地文件

云服務器 本地文件 內容精選換一換在云服務器上搭建網站后,部分客戶通過本地網絡訪問網站時出現偶發性無法訪問的情況。確認客戶使用的本地網絡。若客戶的本地網絡是NAT網絡(本地主機通過NAT功能使用公網IP地址訪問彈性云服務器),可能會導致該問題。若客…

mysql oracle 備份數據庫備份_完整備份Oracle數據庫

修改備份文件的有效時間(必須用spfile啟動數據庫)SQLgt; alter system set control_file_record_keep_time30 scopeboth;修改備份文件的有效時間(必須用spfile啟動數據庫)SQL> alter system set control_file_record_keep_time30 scopeboth;System altered.先啟動歸檔SQL>…

修改域服務器IP,域控制器遷移以及修改服務器ip

windows2003域控制器如果服務器太舊就需要遷移至新的服務器上,經本人實驗,無誤。windows server 2003 域控制器轉移遷移準備工作:1. 在Windows Server 2003上運行dcpromo命令將其升級為域控制器,并在升級時選擇使其成為現有Windows 2003域的額外的域控制器。2. 在Wi…

mysql注入fuzz字典_sql注入fuzz bypass waf

本帖最后由 xmidf 于 2018-7-11 10:16 編輯作者:whynot 轉自:先知0x0 前言這里是簡單對sql注入繞過waf的一個小總結,非安全研究員,這里不講原理,關于原理搜集了一些其他大佬的文章(文章在最下面請自取)&#xff0…

python如何開發網站_如何用Python寫一個小網站?

一、準備 python基礎相關準備:pygame的基礎知識,參考目光博客的“用Python和Pygame寫游戲-從入門到精通”安python 3.8.0 在python官網下載,不多說。安裝pygame,命令:pip install pygame如安裝較慢,可以參考…

python項目選擇背景_Python - - 項目實戰 - - 游戲背景

目標背景交替滾動的思路確定顯示游戲背景01,背景交替滾動的思路確定運行 備課代碼,觀察 背景圖像的顯示效果:游戲啟動后,背景圖像 會 連續不斷地 向下方 移動在 視覺上 產生英雄的飛機不斷向上方飛行的 錯覺 - - 在很多跑酷游戲中…

【AI】人工智能復興的推進器之自然語言處理

目錄 一、什么是自然語言處理 二、詞袋模型 三、向量 四、代碼示例 五、大模型和自然語言處理 接上篇:【AI】人工智能復興的推進器之機器學習-CSDN博客 一、什么是自然語言處理 自然語言處理(Natural Language Processing,NLP&#xf…

css阻止換行_CSS中,如何處理短內容和長內容?

本文已經過原作者 shadeed 授權翻譯。當我們使用 CSS 構建布局時,考慮長短文本內容很重要,如果能清楚地知道當文本長度變化時需要怎么處理,可以避免很多不必要的問題。在許多情況下,添加或刪除一個單詞會改變 UI 的外觀&#xff0…

duilib設置透明窗口_界面開發心得與Duilib | 學步園

一、設置窗體透明度和指定透明色(如指定了黑色,即所有黑色的部分將會變得透明)DWORD dwExStyleGetWindowLong(m_hWnd,GWL_EXSTYLE);if((dwExStyle&WS_EX_LAYERED)!WS_EX_LAYERED)SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle|WS_EX_LAYERED);HMODULE hInst Loa…

influxdb無法實現關聯表_InfluxDb專業術語

InfluxDb專業術語重復是最好的學習方式,我們再重復一些Influx的概念吧,雖然很多已經講過,甚至上一課已經講了。我發現我自己還是有點啰嗦,不過這可能是一種好的學習方法哦。聚合函數aggregationaggregation是一個InfluxQL的函數&a…

mysql排序區分大小寫嗎_MySQL操作數據時區分大小寫

一般情況下使用SQL語句執行update login_ticket set status1 where ticket‘ABC‘會將ticket’abc‘的數據也改掉,那么需要在列名ticket的后面加上collate utf8_binupdate login_ticket set status1 where ticket COLLATE utf8_bin‘ABC‘這里的collate后面的是指該…

java的四種訪問權限_Java四種訪問權限

一、訪問權限簡介訪問權限控制: 指的是本類及本類內部的成員(成員變量、成員方法、內部類)對其他類的可見性,即這些內容是否允許其他類訪問。Java 中一共有四種訪問權限控制,其權限控制的大小情況是這樣的:public > protected …

java分割漢字_Java分割中英文,并且中文不能分割一半?

最近準備入其他坑位。在面試過程中,遇到下面這題筆試題,拿出來分享分享。題目:編寫一個截取字符串的函數,輸入為一個字符串和字節數,輸出為按字節截取的字符串。但是要保證漢字不被截半個,如“我ABC”4&…

full gc JAVA_java觸發full gc的幾種情況概述

前言近期被問及這個問題,在此記錄整理一下。System.gc()方法的調用此方法的調用是建議JVM進行Full GC,雖然只是建議而非一定,但很多情況下它會觸發 Full GC,從而增加Full GC的頻率,也即增加了間歇性停頓的次數。強烈影響系建議能不使用此方法就別使用,讓…

java excel條件格式_Java 設置Excel條件格式(高亮條件值、應用單元格值/公式/數據條等類型)...

概述在Excel中,應用條件格式功能可以在很大程度上改進表格的設計和可讀性,用戶可以指定單個或者多個單元格區域應用一種或者多種條件格式。本篇文章,將通過Java程序示例介紹條件格式的設置方法,設置條件格式時,因不同設…

java order()_java.util.Collections.reverseOrder()

描述reverseOrder()方法被用來獲取強加實現可比接口的對象collection的自然順序相反的比較器。聲明以下是java.util.Collections.reverseOrder()方法的聲明。public static Comparator reverseOrder()參數NA返回值方法調用返回一個比較器,該比較器對實現Comparable接…

jsp mysql登錄 demo_java jsp+servlet+mysql實現登錄網頁設計

涉及以下幾個文件:1。登錄頁面 login.jsp2,成功跳轉頁面 success.jsp3,失敗跳轉頁面 fail.jsp4,servlet 處理類 LoginTestServlet.java5,配置文件 web.xml--------------------------------------------- 依次看代碼 …

libsvm java下載_一個基于LIBSVM(JAVA)的股票預測demo

【實例簡介】一個基于LIBSVM的股票價格預測程序,采用隨機森林算法對樣本進行訓練和預測,使用的編程語言為JAVA。【實例截圖】【核心代碼】stock-master└── stock-master├── data│ ├── 000752.csv│ ├── 300251.csv│ ├── 300329.c…

mysql 家譜樹查詢_中國家譜族譜數據庫可以登錄、查詢了

原標題:中國家譜族譜數據庫可以登錄、查詢了中青在線武漢6月6日電(黨波濤 中國青年報中青在線記者 雷宇)數據量全球第一,最早可追溯到明朝萬歷年間。華中師范大學中國農村研究院今天對外發布,由該院建設的中國家譜族譜數據庫正式上線&#xf…