Linux shell實現HTTP服務範例程式碼_linux shell

來源:互聯網
上載者:User

一、前言

使用Proxy 伺服器 HAProxy 對 Mysql 做負載平衡是常用方案,為提高可用性,當某個 Mysql 出現問題時,例如伺服器故障了,或者資料複製中斷了,最好可以讓 HAProxy 馬上知道,然後停止向其轉寄請求

HAProxy 如何知道 Mysql 是否有問題呢?

二、解決思路

(1)編寫一個shell指令碼,檢查 mysql 的狀態,然後輸出結果,例如狀態正常時,返回狀態代碼200及正確資訊,否則返回狀態代碼503及錯誤資訊

(2)實現一個HTTP服務,有請求串連後,調用上面的檢查指令碼,返回檢查結果

(3)HAProxy 訪問這個HTTP服務,根據返回的結果資訊來判斷這個 mysql 是否可用

如何方便快速的實現一個可以調用shell指令碼的HTTP服務呢?

比較通用的方案就是 xinetd

xinetd 是 Linux 的守護進程,全稱為 extended interent daemon,擴充的網路守護進程

xinetd 可以開啟一個連接埠,等待串連,你可以告訴 xinetd 運行哪個指令碼,當有串連進來後,xinetd 便會執行指令碼,然後直接返回指令碼輸出的內容

HAProxy -> xinetd -> mysql-check指令碼,HAProxy 便取得了mysql的狀態資訊

xinetd 的配置案例

下面實現一個簡單的 xinetd 樣本,開放 9200 連接埠,返回一個測試指令碼的輸出內容

如果機器上還沒有 xinetd,先安裝一下,centos7 下可以使用命令 yum install xinetd

(1)測試指令碼

#!/bin/bashecho `uptime | egrep -o 'up ([0-9]+) days' | awk '{print $2}'`

這個指令碼用來輸出當前伺服器的線上天數

chmod +x 給指令碼添加可執行許可權

(2)編寫 xinetd 服務

例如服務名為 helloworld,檔案名稱 /etc/xinetd.d/helloworld,內容為

service helloworld{disable = noport  = 9200socket_type   = streamprotocol    = tcpwait      = nouser      = rootserver     = /root/test.shserver_args   = test}

port 指定監聽的連接埠

server 指定要執行的指令碼

(3)加入服務列表

修改 /etc/services

找到定義 9200 連接埠的位置,注釋掉原有的,添加 helloworld 服務

helloworld   9200/tcp#wap-wsp     9200/tcp#wap-wsp     9200/udp

(4)重啟 xinetd

centos 下的重啟命令為:

systemctl restart xinetd.service

(5)測試

分別用 nc telnet 兩個命令測試一下

nc localhost 9200


telnet localhost 9200


可以正確輸出指令碼執行內容,完成樣本

總結

Linux shell實現HTTP服務的內容到這就基本結束了,希望對大家的工作和學習能有所協助,如果有疑問可以留言討論。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.