欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux shell實現(xiàn)HTTP服務示例代碼

 更新時間:2016年08月25日 09:45:52   投稿:daisy  
這篇文章介紹的是如何實現(xiàn)一個可以調(diào)用shell腳本的HTTP服務,本文給出了詳細的示例代碼,有需要的可以參考借鑒。

一、前言

使用代理服務器 HAProxy 對 Mysql 做負載均衡是常用方案,為提高可用性,當某個 Mysql 出現(xiàn)問題時,例如服務器故障了,或者數(shù)據(jù)復制中斷了,最好可以讓 HAProxy 馬上知道,然后停止向其轉(zhuǎn)發(fā)請求

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

二、解決思路

(1)編寫一個shell腳本,檢查 mysql 的狀態(tài),然后輸出結(jié)果,例如狀態(tài)正常時,返回狀態(tài)碼200及正確信息,否則返回狀態(tài)碼503及錯誤信息

(2)實現(xiàn)一個HTTP服務,有請求連接后,調(diào)用上面的檢查腳本,返回檢查結(jié)果

(3)HAProxy 訪問這個HTTP服務,根據(jù)返回的結(jié)果信息來判斷這個 mysql 是否可用

如何方便快速的實現(xiàn)一個可以調(diào)用shell腳本的HTTP服務呢?

比較通用的方案就是 xinetd

xinetd 是 Linux 的守護進程,全稱為 extended interent daemon,擴展的網(wǎng)絡守護進程

xinetd 可以打開一個端口,等待連接,你可以告訴 xinetd 運行哪個腳本,當有連接進來后,xinetd 便會執(zhí)行腳本,然后直接返回腳本輸出的內(nèi)容

HAProxy -> xinetd -> mysql-check腳本,HAProxy 便取得了mysql的狀態(tài)信息

xinetd 的配置案例

下面實現(xiàn)一個簡單的 xinetd 示例,開放 9200 端口,返回一個測試腳本的輸出內(nèi)容

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

(1)測試腳本

#!/bin/bash

echo `uptime | egrep -o 'up ([0-9]+) days' | awk '{print $2}'`

這個腳本用來輸出當前服務器的在線天數(shù)

chmod +x 給腳本添加可執(zhí)行權(quán)限

(2)編寫 xinetd 服務

例如服務名為 helloworld,文件名 /etc/xinetd.d/helloworld,內(nèi)容為

service helloworld

{

disable = no

port  = 9200

socket_type   = stream

protocol    = tcp

wait      = no

user      = root

server     = /root/test.sh

server_args   = test

}

port 指定監(jiān)聽的端口

server 指定要執(zhí)行的腳本

(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


可以正確輸出腳本執(zhí)行內(nèi)容,完成示例

總結(jié)

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

相關(guān)文章

最新評論